diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index ff8da64f60..bcd53a2420 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -3977,7 +3977,13 @@ void EntityItemProperties::convertToCloneProperties(const EntityItemID& entityID setParentJointIndex(-1); setLifetime(getCloneLifetime()); setDynamic(getCloneDynamic()); - setEntityHost(getCloneAvatarEntity() ? EntityHost::AVATAR_ENTITY : EntityHost::DOMAIN_ENTITY); + if (getEntityHost() != EntityHost::LOCAL_ENTITY) { + setEntityHost(getCloneAvatarEntity() ? EntityHost::AVATAR_ENTITY : EntityHost::DOMAIN_ENTITY); + } else { + // Local Entities clone as local entities + setEntityHost(EntityHost::LOCAL_ENTITY); + setCollisionless(true); + } setCreated(usecTimestampNow()); setLastEdited(usecTimestampNow()); setCloneable(ENTITY_ITEM_DEFAULT_CLONEABLE); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 969e69f048..ffd7748c37 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -482,6 +482,10 @@ QUuid EntityScriptingInterface::addEntity(const EntityItemProperties& properties propertiesWithSimID.setEntityHostFromString(entityHostString); if (propertiesWithSimID.getEntityHost() == EntityHost::AVATAR_ENTITY) { propertiesWithSimID.setOwningAvatarID(sessionID); + } else if (propertiesWithSimID.getEntityHost() == EntityHost::LOCAL_ENTITY) { + // For now, local entities are always collisionless + // TODO: create a separate, local physics simulation that just handles local entities (and MyAvatar?) + propertiesWithSimID.setCollisionless(true); } propertiesWithSimID.setLastEditedBy(sessionID); @@ -834,7 +838,11 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& } // set these to make EntityItemProperties::getScalesWithParent() work correctly - properties.setEntityHost(entity->getEntityHost()); + EntityHost entityHost = entity->getEntityHost(); + properties.setEntityHost(entityHost); + if (entityHost == EntityHost::LOCAL_ENTITY) { + properties.setCollisionless(true); + } properties.setOwningAvatarID(entity->getOwningAvatarID()); // make sure the properties has a type, so that the encode can know which properties to include