mirror of
https://github.com/lubosz/overte.git
synced 2025-04-23 09:25:31 +02:00
saving work
This commit is contained in:
parent
35343da281
commit
539cf35f30
4 changed files with 74 additions and 3 deletions
|
@ -233,7 +233,7 @@ void LaserPointer::setLaserLength(const float laserLength) {
|
|||
});
|
||||
}
|
||||
|
||||
void LaserPointer::setLockEndUUID(QUuid objectID, const bool isOverlay) {
|
||||
void LaserPointer::setLockEndUUID(QUuid objectID, const bool isOverlay, const glm::mat4& offset) {
|
||||
withWriteLock([&] {
|
||||
_objectLockEnd = std::pair<QUuid, bool>(objectID, isOverlay);
|
||||
});
|
||||
|
|
|
@ -74,7 +74,7 @@ public:
|
|||
|
||||
void setPrecisionPicking(const bool precisionPicking);
|
||||
void setLaserLength(const float laserLength);
|
||||
void setLockEndUUID(QUuid objectID, const bool isOverlay);
|
||||
void setLockEndUUID(QUuid objectID, const bool isOverlay, const glm::mat4& offset = glm::mat4());
|
||||
|
||||
void setIgnoreItems(const QVector<QUuid>& ignoreItems) const;
|
||||
void setIncludeItems(const QVector<QUuid>& includeItems) const;
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
Script.include("/~/system/libraries/controllerDispatcherUtils.js");
|
||||
Script.include("/~/system/libraries/controllers.js");
|
||||
Script.include("/~/system/libraries/Xform.hs");
|
||||
|
||||
(function() {
|
||||
var PICK_WITH_HAND_RAY = true;
|
||||
|
@ -113,10 +114,42 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
];
|
||||
|
||||
var MARGIN = 25;
|
||||
|
||||
function TargetObject(entityID) {
|
||||
this.entityID = entityID;
|
||||
this.entityProps = null;
|
||||
this.parentID = null;
|
||||
this.parentProps = [];
|
||||
this.childrenProps = [];
|
||||
this.parentsCollisionStatus = [];
|
||||
this.childrenCollisionStatus = [];
|
||||
this.madeDynamic = null;
|
||||
this.parentEntityProps = null;
|
||||
|
||||
this.makeDynamic = function() {
|
||||
};
|
||||
|
||||
this.saveCollisionStatus = function() {
|
||||
};
|
||||
|
||||
this.restoreEntitiesProperties = function() {
|
||||
};
|
||||
|
||||
this.getTargetEntity = function() {
|
||||
var parentPropsLength = this.parentProps.length;
|
||||
if (parentPropsLength !== 0) {
|
||||
return this.parentProps[parentPropsLength].id;
|
||||
}
|
||||
return this.entityID;
|
||||
};
|
||||
}
|
||||
|
||||
function FarActionGrabEntity(hand) {
|
||||
this.hand = hand;
|
||||
this.grabbedThingID = null;
|
||||
this.targetObject = null;
|
||||
this.actionID = null; // action this script created...
|
||||
this.entityToLockOnto = null;
|
||||
this.entityWithContextOverlay = false;
|
||||
this.contextOverlayTimer = false;
|
||||
this.previousCollisionStatus = false;
|
||||
|
@ -158,7 +191,8 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
LaserPointers.enableLaserPointer(laserPointerID);
|
||||
LaserPointers.setRenderState(laserPointerID, mode);
|
||||
if (this.distanceHolding || this.distanceRotating) {
|
||||
LaserPointers.setLockEndUUID(laserPointerID, this.grabbedThingID, this.grabbedIsOverlay);
|
||||
// calculate offset
|
||||
LaserPointers.setLockEndUUID(laserPointerID, this.entityToLockOnto, this.grabbedIsOverlay);
|
||||
} else {
|
||||
LaserPointers.setLockEndUUID(laserPointerID, null, false);
|
||||
}
|
||||
|
@ -351,6 +385,7 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
}
|
||||
this.actionID = null;
|
||||
this.grabbedThingID = null;
|
||||
this.entityToLockOnto = null;
|
||||
};
|
||||
|
||||
this.updateRecommendedArea = function() {
|
||||
|
@ -497,17 +532,24 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
if (rayPickInfo.type === RayPick.INTERSECTED_ENTITY) {
|
||||
if (controllerData.triggerClicks[this.hand]) {
|
||||
var entityID = rayPickInfo.objectID;
|
||||
this.entityToLockOnto = entityID;
|
||||
var targetProps = Entities.getEntityProperties(entityID, [
|
||||
"dynamic", "shapeType", "position",
|
||||
"rotation", "dimensions", "density",
|
||||
"userData", "locked", "type"
|
||||
]);
|
||||
|
||||
this.targetObject = new TargetObject(entityID);
|
||||
if (entityID !== this.entityWithContextOverlay) {
|
||||
this.destroyContextOverlay();
|
||||
}
|
||||
|
||||
if (entityIsGrabbable(targetProps)) {
|
||||
var groupRootProps = findGroupParent(controllerData, targetProps);
|
||||
if (entityIsGrabbable(groupRootProps)) {
|
||||
targetProps = groupRootProps;
|
||||
entityID = targetProps.id;
|
||||
}
|
||||
if (!entityIsDistanceGrabbable(targetProps)) {
|
||||
targetProps.dynamic = true;
|
||||
this.previousCollisionStatus = targetProps.collisionless;
|
||||
|
|
|
@ -35,12 +35,14 @@
|
|||
propsArePhysical:true,
|
||||
controllerDispatcherPluginsNeedSort:true,
|
||||
projectOntoXYPlane:true,
|
||||
getChildrenProps:true,
|
||||
projectOntoEntityXYPlane:true,
|
||||
projectOntoOverlayXYPlane:true,
|
||||
entityHasActions:true,
|
||||
ensureDynamic:true,
|
||||
findGroupParent:true,
|
||||
BUMPER_ON_VALUE:true,
|
||||
getEntityParents:true,
|
||||
findHandChildEntities:true,
|
||||
TEAR_AWAY_DISTANCE:true,
|
||||
TEAR_AWAY_COUNT:true,
|
||||
|
@ -306,6 +308,33 @@ findGroupParent = function (controllerData, targetProps) {
|
|||
return targetProps;
|
||||
};
|
||||
|
||||
getChildrenProps = function(entityID) {
|
||||
var childrenProps = [];
|
||||
var childrenIDs = Entities.getChildrenIDs(entityID);
|
||||
for (var index = 0; index < childrenIDs.length; index++) {
|
||||
var childProps = Entities.getEntityProperties(childrenIDs[index]);
|
||||
childrenProps.push(childProps);
|
||||
}
|
||||
return childrenProps;
|
||||
};
|
||||
|
||||
getEntityParents = function(targetProps) {
|
||||
var parentProperties = [];
|
||||
while (targetProps.parentID &&
|
||||
targetProps.parentID !== Uuid.NULL &&
|
||||
Entities.getNestableType(targetProps.parentID) == "entity") {
|
||||
var parentProps = Entities.getEntityProperties(targetProps.parentID, DISPATCHER_PROPERTIES);
|
||||
if (!parentProps) {
|
||||
break;
|
||||
}
|
||||
parentProps.id = targetProps.parentID;
|
||||
targetProps = parentProps;
|
||||
parentProperties.push(parentProps);
|
||||
}
|
||||
|
||||
return parentProperties;
|
||||
};
|
||||
|
||||
|
||||
findHandChildEntities = function(hand) {
|
||||
// find children of avatar's hand joint
|
||||
|
|
Loading…
Reference in a new issue