History

merge from upstream

Seth Alves committed 10 years ago

Commit bfa8cc12 parents 0360021 b190b27107 files · +9007 −1477Browse files

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

Unified · Split

libraries/entities/src/EntityScriptingInterface.cpp+10−8
@@ -383,19 +383,21 @@ QVector<QUuid> EntityScriptingInterface::findEntitiesInBox(const glm::vec3& corn · 382 unmodified lines
383383 return result;
384384 }
385385
386−RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersection(const PickRay& ray, bool precisionPicking, const QScriptValue& entityIdsToInclude) {
387− QVector<EntityItemID> entities = qVectorEntityItemIDFromScriptValue(entityIdsToInclude);
388− return findRayIntersectionWorker(ray, Octree::TryLock, precisionPicking, entities);
386+RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersection(const PickRay& ray, bool precisionPicking, const QScriptValue& entityIdsToInclude, const QScriptValue& entityIdsToDiscard) {
387+ QVector<EntityItemID> entitiesToInclude = qVectorEntityItemIDFromScriptValue(entityIdsToInclude);
388+ QVector<EntityItemID> entitiesToDiscard = qVectorEntityItemIDFromScriptValue(entityIdsToDiscard);
389+ return findRayIntersectionWorker(ray, Octree::TryLock, precisionPicking, entitiesToInclude, entitiesToDiscard);
389390 }
390391
391−RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersectionBlocking(const PickRay& ray, bool precisionPicking, const QScriptValue& entityIdsToInclude) {
392− const QVector<EntityItemID>& entities = qVectorEntityItemIDFromScriptValue(entityIdsToInclude);
393− return findRayIntersectionWorker(ray, Octree::Lock, precisionPicking, entities);
392+RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersectionBlocking(const PickRay& ray, bool precisionPicking, const QScriptValue& entityIdsToInclude, const QScriptValue& entityIdsToDiscard) {
393+ const QVector<EntityItemID>& entitiesToInclude = qVectorEntityItemIDFromScriptValue(entityIdsToInclude);
394+ const QVector<EntityItemID> entitiesToDiscard = qVectorEntityItemIDFromScriptValue(entityIdsToDiscard);
395+ return findRayIntersectionWorker(ray, Octree::Lock, precisionPicking, entitiesToInclude, entitiesToDiscard);
394396 }
395397
396398 RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersectionWorker(const PickRay& ray,
397399 Octree::lockType lockType,
398− bool precisionPicking, const QVector<EntityItemID>& entityIdsToInclude) {
400+ bool precisionPicking, const QVector<EntityItemID>& entityIdsToInclude, const QVector<EntityItemID>& entityIdsToDiscard) {
399401
400402
401403 RayToEntityIntersectionResult result;
@@ -403,7 +405,7 @@ RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersectionWorke · 1 unmodified line
403405 OctreeElementPointer element;
404406 EntityItemPointer intersectedEntity = NULL;
405407 result.intersects = _entityTree->findRayIntersection(ray.origin, ray.direction, element, result.distance, result.face,
406− result.surfaceNormal, entityIdsToInclude, (void**)&intersectedEntity, lockType, &result.accurate,
408+ result.surfaceNormal, entityIdsToInclude, entityIdsToDiscard, (void**)&intersectedEntity, lockType, &result.accurate,
407409 precisionPicking);
408410 if (result.intersects && intersectedEntity) {
409411 result.entityID = intersectedEntity->getEntityItemID();