History

avatar mixer can relay "client-only" entities between interfaces -- the entity server wont know about them.

Seth Alves committed 10 years ago

Commit 0e6d9a11 parent b234d9416 files · +336 −26Browse files

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

Unified · Split

libraries/entities/src/EntityScriptingInterface.cpp+11−6
@@ -36,7 +36,7 @@ EntityScriptingInterface::EntityScriptingInterface(bool bidOnSimulationOwnership · 35 unmodified lines
3636
3737 void EntityScriptingInterface::queueEntityMessage(PacketType packetType,
3838 EntityItemID entityID, const EntityItemProperties& properties) {
39− getEntityPacketSender()->queueEditEntityMessage(packetType, entityID, properties);
39+ getEntityPacketSender()->queueEditEntityMessage(packetType, _entityTree, entityID, properties);
4040 }
4141
4242 bool EntityScriptingInterface::canAdjustLocks() {
@@ -123,9 +123,10 @@ EntityItemProperties convertLocationFromScriptSemantics(const EntityItemProperti · 80 unmodified lines
123123 }
124124
125125
126−QUuid EntityScriptingInterface::addEntity(const EntityItemProperties& properties) {
126+QUuid EntityScriptingInterface::addEntity(const EntityItemProperties& properties, bool clientOnly) {
127127 EntityItemProperties propertiesWithSimID = convertLocationFromScriptSemantics(properties);
128128 propertiesWithSimID.setDimensionsInitialized(properties.dimensionsChanged());
129+ propertiesWithSimID = clientOnly;
129130
130131 auto dimensions = propertiesWithSimID.getDimensions();
131132 float volume = dimensions.x * dimensions.y * dimensions.z;
@@ -272,13 +273,15 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& · 140 unmodified lines
272273
273274 bool updatedEntity = false;
274275 _entityTree->withWriteLock([&] {
276+ EntityItemPointer entity = _entityTree->findEntityByEntityItemID(entityID);
277+ if (!entity) {
278+ return;
279+ }
280+
275281 if (scriptSideProperties.parentRelatedPropertyChanged()) {
276282 // All of parentID, parentJointIndex, position, rotation are needed to make sense of any of them.
277283 // If any of these changed, pull any missing properties from the entity.
278− EntityItemPointer entity = _entityTree->findEntityByEntityItemID(entityID);
279− if (!entity) {
280− return;
281− }
284+
282285 //existing entity, retrieve old velocity for check down below
283286 oldVelocity = entity->getVelocity().length();
284287
@@ -296,6 +299,8 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& · 11 unmodified lines
296299 }
297300 }
298301 properties = convertLocationFromScriptSemantics(properties);
302+ properties.setClientOnly(entity->getClientOnly());
303+ properties.setOwningAvatarID(entity->getOwningAvatarID());
299304
300305 float cost = calculateCost(density * volume, oldVelocity, newVelocity);
301306 cost *= costMultiplier;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t