History

getLocalJointRotation getLocalJointTranslation, started on getLocalJointTranslation getLocalJointRotation

Seth Alves committed 10 years ago

Commit 339d6a51 parent ee9ed6d6 files · +112 −2Browse files

Showing the changes to libraries/entities/src/EntityScriptingInterface.cpp (1 of 6 files). Show all

Unified · Split

libraries/entities/src/EntityScriptingInterface.cpp+62−0
@@ -1110,6 +1110,68 @@ glm::quat EntityScriptingInterface::getAbsoluteJointRotationInObjectFrame(const · 1109 unmodified lines
11101110 }
11111111 }
11121112
1113+bool EntityScriptingInterface::setAbsoluteJointTranslationInObjectFrame(const QUuid& entityID,
1114+ int jointIndex, glm::vec3 translation) {
1115+ if (auto entity = checkForTreeEntityAndTypeMatch(entityID, EntityTypes::Model)) {
1116+ auto now = usecTimestampNow();
1117+ auto modelEntity = std::dynamic_pointer_cast<ModelEntityItem>(entity);
1118+ bool result = modelEntity->setAbsoluteJointTranslationInObjectFrame(jointIndex, translation);
1119+ if (result) {
1120+ EntityItemProperties properties;
1121+ _entityTree->withWriteLock([&] {
1122+ properties = entity->getProperties();
1123+ entity->setLastBroadcast(now);
1124+ });
1125+
1126+ properties.setJointTranslationsDirty();
1127+ properties.setLastEdited(now);
1128+ queueEntityMessage(PacketType::EntityEdit, entityID, properties);
1129+ return true;
1130+ }
1131+ }
1132+ return false;
1133+}
1134+
1135+bool EntityScriptingInterface::setAbsoluteJointRotationInObjectFrame(const QUuid& entityID,
1136+ int jointIndex, glm::quat rotation) {
1137+ if (auto entity = checkForTreeEntityAndTypeMatch(entityID, EntityTypes::Model)) {
1138+ auto now = usecTimestampNow();
1139+ auto modelEntity = std::dynamic_pointer_cast<ModelEntityItem>(entity);
1140+ bool result = modelEntity->setAbsoluteJointRotationInObjectFrame(jointIndex, rotation);
1141+ if (result) {
1142+ EntityItemProperties properties;
1143+ _entityTree->withWriteLock([&] {
1144+ properties = entity->getProperties();
1145+ entity->setLastBroadcast(now);
1146+ });
1147+
1148+ properties.setJointRotationsDirty();
1149+ properties.setLastEdited(now);
1150+ queueEntityMessage(PacketType::EntityEdit, entityID, properties);
1151+ return true;
1152+ }
1153+ }
1154+ return false;
1155+}
1156+
1157+glm::vec3 EntityScriptingInterface::getLocalJointTranslation(const QUuid& entityID, int jointIndex) {
1158+ if (auto entity = checkForTreeEntityAndTypeMatch(entityID, EntityTypes::Model)) {
1159+ auto modelEntity = std::dynamic_pointer_cast<ModelEntityItem>(entity);
1160+ return modelEntity->getLocalJointTranslation(jointIndex);
1161+ } else {
1162+ return glm::vec3(0.0f);
1163+ }
1164+}
1165+
1166+glm::quat EntityScriptingInterface::getLocalJointRotation(const QUuid& entityID, int jointIndex) {
1167+ if (auto entity = checkForTreeEntityAndTypeMatch(entityID, EntityTypes::Model)) {
1168+ auto modelEntity = std::dynamic_pointer_cast<ModelEntityItem>(entity);
1169+ return modelEntity->getLocalJointRotation(jointIndex);
1170+ } else {
1171+ return glm::quat();
1172+ }
1173+}
1174+
11131175 bool EntityScriptingInterface::setLocalJointTranslation(const QUuid& entityID, int jointIndex, glm::vec3 translation) {
11141176 if (auto entity = checkForTreeEntityAndTypeMatch(entityID, EntityTypes::Model)) {
11151177 auto now = usecTimestampNow();