From 9e71801ae170cf2359304b8c8d8d612bbe854128 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 1 Mar 2017 18:21:04 -0800 Subject: [PATCH] remove properties from RayToEntityIntersectionResult --- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 5 +++-- libraries/entities/src/EntityScriptingInterface.cpp | 9 --------- libraries/entities/src/EntityScriptingInterface.h | 1 - script-archive/example/games/grabHockey.js | 3 ++- script-archive/example/games/hydraGrabHockey.js | 5 ++++- script-archive/example/scripts/rayPickExample.js | 1 - .../painting/whiteboard/whiteboardEntityScript.js | 4 +++- script-archive/vrShop/item/shopItemGrab.js | 7 +++++-- scripts/system/controllers/grab.js | 3 ++- scripts/tutorials/entity_scripts/pistol.js | 6 ++++-- 10 files changed, 23 insertions(+), 21 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 55a7221f5d..d53f49c84c 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -607,7 +607,6 @@ RayToEntityIntersectionResult EntityTreeRenderer::findRayIntersectionWorker(cons (void**)&intersectedEntity, lockType, &result.accurate); if (result.intersects && intersectedEntity) { result.entityID = intersectedEntity->getEntityItemID(); - result.properties = intersectedEntity->getProperties(); result.intersection = ray.origin + (ray.direction * result.distance); result.entity = intersectedEntity; } @@ -703,7 +702,9 @@ void EntityTreeRenderer::mousePressEvent(QMouseEvent* event) { if (rayPickResult.intersects) { //qCDebug(entitiesrenderer) << "mousePressEvent over entity:" << rayPickResult.entityID; - QString urlString = rayPickResult.properties.getHref(); + auto entity = getTree()->findEntityByEntityItemID(rayPickResult.entityID); + auto properties = entity->getProperties(); + QString urlString = properties.getHref(); QUrl url = QUrl(urlString, QUrl::StrictMode); if (url.isValid() && !url.isEmpty()){ DependencyManager::get()->handleLookupString(urlString); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 540eba4511..7b5ac1125c 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -668,7 +668,6 @@ RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersectionWorke (void**)&intersectedEntity, lockType, &result.accurate); if (result.intersects && intersectedEntity) { result.entityID = intersectedEntity->getEntityItemID(); - result.properties = intersectedEntity->getProperties(); result.intersection = ray.origin + (ray.direction * result.distance); } } @@ -721,7 +720,6 @@ RayToEntityIntersectionResult::RayToEntityIntersectionResult() : intersects(false), accurate(true), // assume it's accurate entityID(), - properties(), distance(0), face(), entity(NULL) @@ -737,9 +735,6 @@ QScriptValue RayToEntityIntersectionResultToScriptValue(QScriptEngine* engine, c QScriptValue entityItemValue = EntityItemIDtoScriptValue(engine, value.entityID); obj.setProperty("entityID", entityItemValue); - QScriptValue propertiesValue = EntityItemPropertiesToScriptValue(engine, value.properties); - obj.setProperty("properties", propertiesValue); - obj.setProperty("distance", value.distance); QString faceName = ""; @@ -785,10 +780,6 @@ void RayToEntityIntersectionResultFromScriptValue(const QScriptValue& object, Ra QScriptValue entityIDValue = object.property("entityID"); // EntityItemIDfromScriptValue(entityIDValue, value.entityID); quuidFromScriptValue(entityIDValue, value.entityID); - QScriptValue entityPropertiesValue = object.property("properties"); - if (entityPropertiesValue.isValid()) { - EntityItemPropertiesFromScriptValueHonorReadOnly(entityPropertiesValue, value.properties); - } value.distance = object.property("distance").toVariant().toFloat(); QString faceName = object.property("face").toVariant().toString(); diff --git a/libraries/entities/src/EntityScriptingInterface.h b/libraries/entities/src/EntityScriptingInterface.h index e9f0637830..f5fa5e0117 100644 --- a/libraries/entities/src/EntityScriptingInterface.h +++ b/libraries/entities/src/EntityScriptingInterface.h @@ -42,7 +42,6 @@ public: bool intersects; bool accurate; QUuid entityID; - EntityItemProperties properties; float distance; BoxFace face; glm::vec3 intersection; diff --git a/script-archive/example/games/grabHockey.js b/script-archive/example/games/grabHockey.js index 961a8af6ad..af688d72d6 100644 --- a/script-archive/example/games/grabHockey.js +++ b/script-archive/example/games/grabHockey.js @@ -142,7 +142,8 @@ function mousePressEvent(event) { if (!pickResults.intersects) { return; } - if (pickResults.properties.dynamic) { + var isDynamic = Entites.getEntityProperties(pickResults.entityID,"dynamic").dynamic; + if (isDynamic) { grabbedEntity = pickResults.entityID; var props = Entities.getEntityProperties(grabbedEntity) originalGravity = props.gravity; diff --git a/script-archive/example/games/hydraGrabHockey.js b/script-archive/example/games/hydraGrabHockey.js index e7d6746309..181e4f4547 100644 --- a/script-archive/example/games/hydraGrabHockey.js +++ b/script-archive/example/games/hydraGrabHockey.js @@ -190,7 +190,10 @@ function controller(side) { direction: Vec3.normalize(Vec3.subtract(this.tipPosition, this.palmPosition)) }; var intersection = getRayIntersection(pickRay, true); - if (intersection.intersects && intersection.properties.dynamic) { + + var isDynamic = Entites.getEntityProperties(intersection.entityID,"dynamic").dynamic; + + if (intersection.intersects && isDynamic) { this.laserWasHovered = true; if (this.triggerHeld && !this.grabbing) { this.grab(intersection.entityID); diff --git a/script-archive/example/scripts/rayPickExample.js b/script-archive/example/scripts/rayPickExample.js index d85138211e..3687176af1 100644 --- a/script-archive/example/scripts/rayPickExample.js +++ b/script-archive/example/scripts/rayPickExample.js @@ -38,7 +38,6 @@ function mouseMoveEvent(event) { if (intersection.intersects) { print("intersection entityID=" + intersection.entityID); - print("intersection properties.modelURL=" + intersection.properties.modelURL); print("intersection face=" + intersection.face); print("intersection distance=" + intersection.distance); print("intersection intersection.x/y/z=" + intersection.intersection.x + ", " diff --git a/script-archive/painting/whiteboard/whiteboardEntityScript.js b/script-archive/painting/whiteboard/whiteboardEntityScript.js index 181932c7cb..c40adf8753 100644 --- a/script-archive/painting/whiteboard/whiteboardEntityScript.js +++ b/script-archive/painting/whiteboard/whiteboardEntityScript.js @@ -77,6 +77,8 @@ //Comment out above line and uncomment below line to see difference in performance between using a whitelist, and not using one // this.intersection = Entities.findRayIntersection(pickRay, true); + var type = Entites.getEntityProperties(this.intersection.entityID,"type").type; + if (this.intersection.intersects) { var distance = Vec3.distance(handPosition, this.intersection.intersection); if (distance < MAX_DISTANCE) { @@ -98,7 +100,7 @@ this.oldPosition = null; } } - } else if (this.intersection.properties.type !== "Unknown") { + } else if (type !== "Unknown") { //Sometimes ray will pick against an invisible object with type unkown... so if type is unknown, ignore this.stopPainting(); } diff --git a/script-archive/vrShop/item/shopItemGrab.js b/script-archive/vrShop/item/shopItemGrab.js index a7226675eb..b583d8c0b4 100644 --- a/script-archive/vrShop/item/shopItemGrab.js +++ b/script-archive/vrShop/item/shopItemGrab.js @@ -382,7 +382,10 @@ function MyController(hand) { var grabbableData = getEntityCustomData(GRABBABLE_DATA_KEY, intersection.entityID, DEFAULT_GRABBABLE_DATA); - if (intersection.properties.name == "Grab Debug Entity") { + var properties = Entites.getEntityProperties(intersection.entityID,["locked","name"]); + + + if (properties.name == "Grab Debug Entity") { continue; } @@ -399,7 +402,7 @@ function MyController(hand) { this.grabbedEntity = intersection.entityID; this.setState(STATE_NEAR_TRIGGER); return; - } else if (!intersection.properties.locked) { + } else if (!properties.locked) { var ownerObj = getEntityCustomData('ownerKey', intersection.entityID, null); if (ownerObj == null || ownerObj.ownerID === MyAvatar.sessionUUID) { //I can only grab new or already mine items diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index f0b6663bec..6262c6af6f 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -343,7 +343,8 @@ Grabber.prototype.pressEvent = function(event) { return; } - if (!pickResults.properties.dynamic) { + var isDynamic = Entites.getEntityProperties(pickResults.entityID,"dynamic").dynamic; + if (!isDynamic) { // only grab dynamic objects return; } diff --git a/scripts/tutorials/entity_scripts/pistol.js b/scripts/tutorials/entity_scripts/pistol.js index 73a6daab93..00b496c05d 100644 --- a/scripts/tutorials/entity_scripts/pistol.js +++ b/scripts/tutorials/entity_scripts/pistol.js @@ -151,8 +151,10 @@ }); }, randFloat(10, 200)); } - if (intersection.properties.dynamic === 1) { - // Any dynaic entity can be shot + var isDynamic = Entites.getEntityProperties(intersection.entityID,"dynamic").dynamic; + + if (isDynamic === 1) { + // Any dynamic entity can be shot Entities.editEntity(intersection.entityID, { velocity: Vec3.multiply(this.firingDirection, this.bulletForce) });