History

allow ESS to edit local version of properties even if the entity isn't in the ESS's local octree

Seth Alves committed 8 years ago

Commit 71d6dbf1 parent 74ca98d2 files · +27 −0Browse files

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

Unified · Split

libraries/entities/src/EntityScriptingInterface.cpp+21−0
@@ -523,6 +523,27 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& · 522 unmodified lines
523 }523 }
524 }524 }
525 });525 });
526 } else {
527 // Sometimes ESS don't have the entity they are trying to edit in their local tree. In this case,
528 // convertPropertiesFromScriptSemantics doesn't get called and local* edits will get dropped.
529 // This is because, on the script side, "position" is in world frame, but in the network
530 // protocol and in the internal data-structures, "position" is "relative to parent".
531 // Compensate here. The local* versions will get ignored during the edit-packet encoding.
532 if (properties.localPositionChanged()) {
533 properties.setPosition(properties.getLocalPosition());
534 }
535 if (properties.localRotationChanged()) {
536 properties.setRotation(properties.getLocalRotation());
537 }
538 if (properties.localVelocityChanged()) {
539 properties.setVelocity(properties.getLocalVelocity());
540 }
541 if (properties.localAngularVelocityChanged()) {
542 properties.setAngularVelocity(properties.getLocalAngularVelocity());
543 }
544 if (properties.localDimensionsChanged()) {
545 properties.setDimensions(properties.getLocalDimensions());
546 }
526 }547 }
527 });548 });
528 if (!entityFound) {549 if (!entityFound) {