mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 17:24:24 +02:00
use rotation property to determine which axis is facing you
This commit is contained in:
parent
3a821c2b74
commit
54d57afdae
3 changed files with 11 additions and 3 deletions
|
@ -2462,7 +2462,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
glm::vec3 dPosition = frustumPos - position;
|
glm::vec3 dPosition = frustumPos - position;
|
||||||
// If x and z are 0, atan(x, z) is undefined, so default to 0 degrees
|
// If x and z are 0, atan(x, z) is undefined, so default to 0 degrees
|
||||||
float yawRotation = dPosition.x == 0.0f && dPosition.z == 0.0f ? 0.0f : glm::atan(dPosition.x, dPosition.z);
|
float yawRotation = dPosition.x == 0.0f && dPosition.z == 0.0f ? 0.0f : glm::atan(dPosition.x, dPosition.z);
|
||||||
glm::quat result = glm::quat(glm::vec3(0.0f, yawRotation, 0.0f));
|
glm::quat result = glm::quat(glm::vec3(0.0f, yawRotation, 0.0f)) * rotation;
|
||||||
if (rotate90x) {
|
if (rotate90x) {
|
||||||
result *= ROTATE_90X;
|
result *= ROTATE_90X;
|
||||||
}
|
}
|
||||||
|
@ -2475,7 +2475,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
|
|
||||||
// make sure s is not NaN for any component
|
// make sure s is not NaN for any component
|
||||||
if (glm::length2(s) > 0.0f) {
|
if (glm::length2(s) > 0.0f) {
|
||||||
glm::quat result = glm::conjugate(glm::toQuat(glm::lookAt(frustumPos, position, avatarUP)));
|
glm::quat result = glm::conjugate(glm::toQuat(glm::lookAt(frustumPos, position, avatarUP))) * rotation;
|
||||||
if (rotate90x) {
|
if (rotate90x) {
|
||||||
result *= ROTATE_90X;
|
result *= ROTATE_90X;
|
||||||
}
|
}
|
||||||
|
|
|
@ -811,7 +811,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
||||||
* @property {Uuid[]} renderWithZones=[]] - A list of entity IDs representing with which zones this entity should render.
|
* @property {Uuid[]} renderWithZones=[]] - A list of entity IDs representing with which zones this entity should render.
|
||||||
* If it is empty, this entity will render normally. Otherwise, this entity will only render if your avatar is within
|
* If it is empty, this entity will render normally. Otherwise, this entity will only render if your avatar is within
|
||||||
* one of the zones in this list.
|
* one of the zones in this list.
|
||||||
* @property {BillboardMode} billboardMode="none" - Whether the entity is billboarded to face the camera.
|
* @property {BillboardMode} billboardMode="none" - Whether the entity is billboarded to face the camera. Use the rotation
|
||||||
|
* property to control which axis is facing you.
|
||||||
*
|
*
|
||||||
* @property {Entities.Grab} grab - The entity's grab-related properties.
|
* @property {Entities.Grab} grab - The entity's grab-related properties.
|
||||||
*
|
*
|
||||||
|
|
|
@ -3141,6 +3141,13 @@ bool EntityTree::readFromMap(QVariantMap& map, const bool isImport) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Before, billboarded entities ignored rotation. Now, they use it to determine which axis is facing you.
|
||||||
|
if (contentVersion < (int)EntityVersion::AllBillboardMode) {
|
||||||
|
if (properties.getBillboardMode() != BillboardMode::NONE) {
|
||||||
|
properties.setRotation(glm::quat());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EntityItemPointer entity = addEntity(entityItemID, properties, isImport);
|
EntityItemPointer entity = addEntity(entityItemID, properties, isImport);
|
||||||
if (!entity) {
|
if (!entity) {
|
||||||
qCDebug(entities) << "adding Entity failed:" << entityItemID << properties.getType();
|
qCDebug(entities) << "adding Entity failed:" << entityItemID << properties.getType();
|
||||||
|
|
Loading…
Reference in a new issue