History

when a script sets joint-data on a model-entity, send an edit packet

Seth Alves committed 10 years ago

Commit 175506b1 parent 83f60d62 files · +33 −8Browse files

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

Unified · Split

libraries/entities/src/EntityScriptingInterface.cpp+28−6
@@ -831,18 +831,40 @@ bool EntityScriptingInterface::setAbsoluteJointTranslationInObjectFrame(const QU · 830 unmodified lines
831831 int jointIndex, glm::vec3 translation) {
832832 if (auto entity = checkForTreeEntityAndTypeMatch(entityID, EntityTypes::Model)) {
833833 auto modelEntity = std::dynamic_pointer_cast<ModelEntityItem>(entity);
834− return modelEntity->setAbsoluteJointTranslationInObjectFrame(jointIndex, translation);
835− } else {
836− return false;
834+ bool result = modelEntity->setAbsoluteJointTranslationInObjectFrame(jointIndex, translation);
835+ if (result) {
836+ EntityItemProperties properties;
837+ _entityTree->withReadLock([&] {
838+ properties = entity->getProperties();
839+ });
840+
841+ properties.setJointTranslationsDirty();
842+ auto now = usecTimestampNow();
843+ properties.setLastEdited(now);
844+ queueEntityMessage(PacketType::EntityEdit, entityID, properties);
845+ return true;
846+ }
837847 }
848+ return false;
838849 }
839850
840851 bool EntityScriptingInterface::setAbsoluteJointRotationInObjectFrame(const QUuid& entityID,
841852 int jointIndex, glm::quat rotation) {
842853 if (auto entity = checkForTreeEntityAndTypeMatch(entityID, EntityTypes::Model)) {
843854 auto modelEntity = std::dynamic_pointer_cast<ModelEntityItem>(entity);
844− return modelEntity->setAbsoluteJointRotationInObjectFrame(jointIndex, rotation);
845− } else {
846− return false;
855+ bool result = modelEntity->setAbsoluteJointRotationInObjectFrame(jointIndex, rotation);
856+ if (result) {
857+ EntityItemProperties properties;
858+ _entityTree->withReadLock([&] {
859+ properties = entity->getProperties();
860+ });
861+
862+ properties.setJointRotationsDirty();
863+ auto now = usecTimestampNow();
864+ properties.setLastEdited(now);
865+ queueEntityMessage(PacketType::EntityEdit, entityID, properties);
866+ return true;
867+ }
847868 }
869+ return false;
848870 }