QScriptValue Image3DOverlay::getProperty(const QString& property) { if (property == "url") { return _url; } if (property == "subImage") { return qRectToScriptValue(_scriptEngine, _fromImage); } if (property == "offsetPosition") { return vec3toScriptValue(_scriptEngine, getOffsetPosition()); } return Billboard3DOverlay::getProperty(property); }
QVariant Image3DOverlay::getProperty(const QString& property) { if (property == "url") { return _url; } if (property == "subImage") { return _fromImage; } if (property == "offsetPosition") { return vec3toVariant(getOffsetPosition()); } if (property == "emissive") { return _emissive; } return Billboard3DOverlay::getProperty(property); }
void OverlayPanel::applyTransformTo(Transform& transform, bool force) { if (force || usecTimestampNow() > _transformExpiry) { PanelAttachable::applyTransformTo(transform, true); if (!getParentPanel()) { if (_anchorPositionBindMyAvatar) { transform.setTranslation(DependencyManager::get<AvatarManager>()->getMyAvatar() ->getPosition()); } else if (!_anchorPositionBindEntity.isNull()) { EntityTreePointer entityTree = DependencyManager::get<EntityScriptingInterface>()->getEntityTree(); entityTree->withReadLock([&] { EntityItemPointer foundEntity = entityTree->findEntityByID(_anchorPositionBindEntity); if (foundEntity) { transform.setTranslation(foundEntity->getPosition()); } }); } else { transform.setTranslation(getAnchorPosition()); } if (_anchorRotationBindMyAvatar) { transform.setRotation(DependencyManager::get<AvatarManager>()->getMyAvatar() ->getOrientation()); } else if (!_anchorRotationBindEntity.isNull()) { EntityTreePointer entityTree = DependencyManager::get<EntityScriptingInterface>()->getEntityTree(); entityTree->withReadLock([&] { EntityItemPointer foundEntity = entityTree->findEntityByID(_anchorRotationBindEntity); if (foundEntity) { transform.setRotation(foundEntity->getRotation()); } }); } else { transform.setRotation(getAnchorRotation()); } transform.setScale(getAnchorScale()); transform.postTranslate(getOffsetPosition()); transform.postRotate(getOffsetRotation()); transform.postScale(getOffsetScale()); } pointTransformAtCamera(transform, getOffsetRotation()); } }
void PhysicsGeom::changed(ConstFieldMaskArg whichField, UInt32 origin, BitVector details) { Inherited::changed(whichField, origin, details); //Do not respond to changes that have a Sync origin if(origin & ChangedOrigin::Sync) { return; } if(whichField & BodyFieldMask) { if(getBody() != NULL) { dGeomSetBody(_GeomID, getBody()->getBodyID()); } else { dGeomSetBody(_GeomID, 0); } } if(whichField & PositionFieldMask) { dGeomSetPosition(_GeomID, getPosition().x(),getPosition().y(),getPosition().z()); } if(whichField & RotationFieldMask) { dMatrix3 rotation; Vec4f v1 = getRotation()[0]; Vec4f v2 = getRotation()[1]; Vec4f v3 = getRotation()[2]; rotation[0] = v1.x(); rotation[1] = v1.y(); rotation[2] = v1.z(); rotation[3] = 0; rotation[4] = v2.x(); rotation[5] = v2.y(); rotation[6] = v2.z(); rotation[7] = 0; rotation[8] = v3.x(); rotation[9] = v3.y(); rotation[10] = v3.z(); rotation[11] = 0; dGeomSetRotation(_GeomID, rotation); } if(whichField & QuaternionFieldMask) { dQuaternion q; q[0]=getQuaternion().w(); q[1]=getQuaternion().x(); q[2]=getQuaternion().y(); q[3]=getQuaternion().z(); dGeomSetQuaternion(_GeomID,q); } if(whichField & OffsetPositionFieldMask && getBody() != NULL) { dGeomSetOffsetPosition(_GeomID, getOffsetPosition().x(),getOffsetPosition().y(),getOffsetPosition().z()); } if(whichField & OffsetRotationFieldMask && getBody() != NULL) { dMatrix3 rotation; Vec4f v1 = getOffsetRotation()[0]; Vec4f v2 = getOffsetRotation()[1]; Vec4f v3 = getOffsetRotation()[2]; rotation[0] = v1.x(); rotation[1] = v1.y(); rotation[2] = v1.z(); rotation[3] = 0; rotation[4] = v2.x(); rotation[5] = v2.y(); rotation[6] = v2.z(); rotation[7] = 0; rotation[8] = v3.x(); rotation[9] = v3.y(); rotation[10] = v3.z(); rotation[11] = 0; dGeomSetOffsetRotation(_GeomID, rotation); } if(whichField & OffsetQuaternionFieldMask && getBody() != NULL) { dQuaternion q; q[0]=getOffsetQuaternion().w(); q[1]=getOffsetQuaternion().x(); q[2]=getOffsetQuaternion().y(); q[3]=getOffsetQuaternion().z(); dGeomSetOffsetQuaternion(_GeomID,q); } if(whichField & CategoryBitsFieldMask) { dGeomSetCategoryBits(_GeomID, getCategoryBits()); } if(whichField & CollideBitsFieldMask) { dGeomSetCollideBits(_GeomID, getCollideBits()); } if(whichField & SpaceFieldMask) { dSpaceID CurSpace(dGeomGetSpace(_GeomID)); if(CurSpace != 0 && (getSpace() == NULL || CurSpace != getSpace()->getSpaceID())) { dSpaceRemove(CurSpace,_GeomID); } if(getSpace() != NULL) { dSpaceAdd(getSpace()->getSpaceID(), _GeomID); } } if(whichField & EnableFieldMask) { if(getEnable()) { dGeomEnable(_GeomID); } else { dGeomDisable(_GeomID); } } }