mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 20:23:06 +02:00
Deleting only strokes from the whiteboard where the erase button was clicked on
This commit is contained in:
parent
55c68e0509
commit
3b59bffb79
3 changed files with 19 additions and 8 deletions
|
@ -93,7 +93,7 @@
|
||||||
this.oldPosition = null;
|
this.oldPosition = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(this.intersection.properties.type !== "Unknown") {
|
} else if (this.intersection.properties.type !== "Unknown") {
|
||||||
//Sometimes ray will pick against an invisible object with type unkown... so if type is unknown, ignore
|
//Sometimes ray will pick against an invisible object with type unkown... so if type is unknown, ignore
|
||||||
this.stopPainting();
|
this.stopPainting();
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,10 @@
|
||||||
y: 50,
|
y: 50,
|
||||||
z: 50
|
z: 50
|
||||||
},
|
},
|
||||||
lifetime: 200
|
lifetime: 200,
|
||||||
|
userData: JSON.stringify({
|
||||||
|
whiteboard: this.entityID
|
||||||
|
})
|
||||||
});
|
});
|
||||||
this.strokePoints = [];
|
this.strokePoints = [];
|
||||||
this.strokeNormals = [];
|
this.strokeNormals = [];
|
||||||
|
@ -194,10 +197,17 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
eraseBoard: function() {
|
eraseBoard: function() {
|
||||||
var entities = Entities.findEntities(this.position, 5);
|
var distance = Math.max(this.dimensions.x, this.dimensions.y);
|
||||||
|
var entities = Entities.findEntities(this.position, distance);
|
||||||
entities.forEach(function(entity) {
|
entities.forEach(function(entity) {
|
||||||
var name = Entities.getEntityProperties(entity, "name").name;
|
var props = Entities.getEntityProperties(entity, ["name, userData"]);
|
||||||
if (name === "paintStroke") {
|
var name = props.name;
|
||||||
|
if(!props.userData) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var whiteboardID = JSON.parse(props.userData).whiteboard;
|
||||||
|
if (name === "paintStroke" && JSON.stringify(whiteboardID) === JSON.stringify(_this.entityID)) {
|
||||||
|
// This entity is a paintstroke and part of this whiteboard so delete it
|
||||||
Entities.deleteEntity(entity);
|
Entities.deleteEntity(entity);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -205,9 +215,10 @@
|
||||||
|
|
||||||
preload: function(entityID) {
|
preload: function(entityID) {
|
||||||
this.entityID = entityID;
|
this.entityID = entityID;
|
||||||
var props = Entities.getEntityProperties(this.entityID, ["position", "rotation", "userData"]);
|
var props = Entities.getEntityProperties(this.entityID, ["position", "rotation", "userData", "dimensions"]);
|
||||||
this.position = props.position;
|
this.position = props.position;
|
||||||
this.rotation = props.rotation;
|
this.rotation = props.rotation;
|
||||||
|
this.dimensions = props.dimensions;
|
||||||
this.normal = Vec3.multiply(Quat.getFront(this.rotation), -1);
|
this.normal = Vec3.multiply(Quat.getFront(this.rotation), -1);
|
||||||
this.painting = false;
|
this.painting = false;
|
||||||
this.strokes = [];
|
this.strokes = [];
|
||||||
|
|
|
@ -189,4 +189,4 @@ function cleanup() {
|
||||||
|
|
||||||
|
|
||||||
// Uncomment this line to delete whiteboard and all associated entity on script close
|
// Uncomment this line to delete whiteboard and all associated entity on script close
|
||||||
Script.scriptEnding.connect(cleanup);
|
// Script.scriptEnding.connect(cleanup);
|
|
@ -724,7 +724,7 @@ bool Octree::findRayIntersection(const glm::vec3& origin, const glm::vec3& direc
|
||||||
OctreeElementPointer& element, float& distance,
|
OctreeElementPointer& element, float& distance,
|
||||||
BoxFace& face, glm::vec3& surfaceNormal, const QVector<QUuid>& entityIdsToInclude, void** intersectedObject,
|
BoxFace& face, glm::vec3& surfaceNormal, const QVector<QUuid>& entityIdsToInclude, void** intersectedObject,
|
||||||
Octree::lockType lockType, bool* accurateResult, bool precisionPicking) {
|
Octree::lockType lockType, bool* accurateResult, bool precisionPicking) {
|
||||||
RayArgs args = { origin, direction, element, distance, face, surfaceNormal, intersectedObject, false, precisionPicking};
|
RayArgs args = { origin, direction, element, distance, face, surfaceNormal, entityIdsToInclude, intersectedObject, false, precisionPicking};
|
||||||
distance = FLT_MAX;
|
distance = FLT_MAX;
|
||||||
|
|
||||||
bool requireLock = lockType == Octree::Lock;
|
bool requireLock = lockType == Octree::Lock;
|
||||||
|
|
Loading…
Reference in a new issue