// strokes are updated in the buffer only for display private void updateStroke(LaserPicker laser) { currPoints.Add(laser.getTerminalPoint()); Vector3[] currPtsArray = currPoints.ToArray(); currentStrokeDisplayBufferLineRenderer.numPositions = currPtsArray.Length; currentStrokeDisplayBufferLineRenderer.SetPositions(currPtsArray); }
public void amUpdate(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { GameObject currentPoint = Instantiate(app_Point, laser.getTerminalPoint(), Quaternion.LookRotation(laser.getHitNormal())); currentPoint.transform.SetParent(GeneralSettings.getActiveLayerObject().transform); } }
private void makePlane(LaserPicker laser) { Vector3 centerPt = laser.getTerminalPoint(); Vector3 normal = laser.getTerminalNormal(); GameObject currentPlane = Instantiate(app_Plane, centerPt, Quaternion.LookRotation(normal)); currentPlane.GetComponent <app_Plane>().init(collectedPts); currentPlane.transform.SetParent(GeneralSettings.getActiveLayerObject().transform); }
public void amUpdate(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { Vector3 centerPt = laser.getTerminalPoint(); Vector3 normal = laser.getTerminalNormal(); GameObject currentSpace = Instantiate(app_Space, centerPt, Quaternion.LookRotation(normal)); currentSpace.transform.SetParent(GeneralSettings.getActiveLayerObject().transform); } }
private void setupBoardMode(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { targetBoard = Instantiate(boardPrefab, laser.getTerminalPoint(), Quaternion.LookRotation(laser.getTerminalNormal()), GeneralSettings.modelObjects.transform); laser.setRestrictedObject(targetBoard); laser.setLengthToInfinity(); } }
private void getStartPos(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { if (laser.isHit()) { startPos = laser.getTerminalPoint(); actionMode = ActionMode.SELVEC1; GeneralSettings.updateInteractText("Please select the distance between the elements for the array."); } } }
private void getStartPos(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { if (laser.isHit()) { startPos = laser.getTerminalPoint(); actionMode = ActionMode.SELVEC1; GeneralSettings.updateInteractText("Please select vector in first direction for array."); } } }
private void defByCorners(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { collectedPts.Add(laser.getTerminalPoint()); if (collectedPts.Count == 4) { makePlane(laser); collectedPts.Clear(); } } }
private void defByPoint(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { Vector3 centerPt = laser.getTerminalPoint(); Vector3 normal = laser.getTerminalNormal(); collectedPts = getPtsForPt(centerPt, normal); GameObject currentPlane = Instantiate(app_Plane, centerPt, Quaternion.LookRotation(normal)); currentPlane.GetComponent <app_Plane>().init(collectedPts); currentPlane.transform.SetParent(GeneralSettings.getActiveLayerObject().transform); } }
private void getVec1(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { if (laser.isHit()) { vec1 = laser.getTerminalPoint() - startPos; actionMode = ActionMode.POLARCOUNT; currWaitingObj = ScriptableObject.CreateInstance <WaitingObject>(); GeneralSettings.setNumPad(currWaitingObj); GeneralSettings.updateInteractText("Please specify number of poles in polar array."); } } }
public void amUpdate(LaserPicker laser) { if (WandControlsManager.WandControllerRight.getTriggerDown()) { pts.Add(laser.getTerminalPoint()); refreshLineRenderer(); } if (WandControlsManager.WandControllerRight.getGripDown()) { Vector3 center = getCenter(); GameObject g = Instantiate(app_Line, center, Quaternion.identity, GeneralSettings.modelObjects.transform); g.GetComponent <app_Line>().setLinePts(pts); pts.Clear(); clearLineRenderer(); } }
private void manageDimLineAdd() { Vector3 targetPoint = laser.getTerminalPoint(); createNewTick(targetPoint); if (!lineComplete) { // start new dimension line createNewDimSet(); currentTickObj.transform.SetParent(currentDim.transform); currentTickObj.name = tickObjectName + "_" + dimCount + "_0"; GeneralSettings.addLineToConsole("New dimension line started."); } else { // close existing dimension line currentTickObj.transform.SetParent(currentDim.transform); currentTickObj.name = tickObjectName + "_" + dimCount + "_1"; currentDim.GetComponent <DimensionLineRenderer>().updateDimensionLine(); GeneralSettings.addLineToConsole((System.String.Format("Dimension line completed: {0}", currentDim.name))); } lineComplete = !lineComplete; }
private void selActionMethods() { // if the hit object is a prefab currHitAppObj = hitAppObj; // and is not pointing to the same prefab as it was in the last frame if (currHitAppObj != prevHitAppObj) { // collapse the edit menu on the object it was previously pointing if (prevHitAppObj != null) { prevHitAppObj.GetComponent <Highlightable>().hideObjectMenu(); } // expand the edit menu for current object if (currHitAppObj != null) { currHitAppObj.GetComponent <Highlightable>().displayObjectMenu(); } } prevHitAppObj = currHitAppObj; if (GeneralSettings.editOn()) { if (WandControlsManager.WandControllerRight.getGripDown()) { GeneralSettings.clearEditObject(); return; } if (WandControlsManager.WandControllerRight.getTriggerDown()) { if (laser.isHit()) { // look at the parameters for the thing just hit RaycastHit detectRay; Physics.Raycast(new Ray(laser.getStartPoint(), laser.getDirection()), out detectRay); incidentObj = detectRay.transform.gameObject; // check whether hittin a refObject; in that case move only the ref object RefObjectEdge refScriptEd = incidentObj.GetComponent <RefObjectEdge>(); if (refScriptEd != null) { laser.setRestrictedPlane(incidentObj.GetComponent <RefObjectEdge>().getRefPlane()); objToMove = incidentObj; startPos = objToMove.transform.localPosition; activeMoveType = SelectMoveType.MoveRefEd; return; } // check whether hittin a refObject; in that case move only the ref object RefObjectPoint refScriptPt = incidentObj.GetComponent <RefObjectPoint>(); if (refScriptPt != null) { laser.setToStickMode(detectRay.distance); objToMove = incidentObj; offsetVal = objToMove.transform.position - detectRay.point; activeMoveType = SelectMoveType.MoveRefPt; return; } // check whether hittin a refObject; in that case move only the ref object RefObjectPlaneConstraintPoint refScriptConstrPt = incidentObj.GetComponent <RefObjectPlaneConstraintPoint>(); if (refScriptConstrPt != null) { laser.setRestrictedObject(refScriptConstrPt.getConstrainObject()); objToMove = incidentObj; // offsetVal = objToMove.transform.position - detectRay.point; activeMoveType = SelectMoveType.MoveRefPtConstrained; objToMove.GetComponent <SphereCollider>().enabled = false; return; } // DIRTY-FIX // check whether hittin a refObject; in that case move only the ref object GizmoMoveLinear gizMoveLin = incidentObj.GetComponent <GizmoMoveLinear>(); if (gizMoveLin != null) { laser.setRestrictedPlane(incidentObj.GetComponent <GizmoMoveLinear>().getRefPlane()); objToMove = incidentObj; startPos = objToMove.transform.localPosition; activeMoveType = SelectMoveType.MoveGizmoLinear; return; } // check whether hittin a refObject; in that case move only the ref object GizmoRotateAxis gizRotateAxis = incidentObj.GetComponent <GizmoRotateAxis>(); if (gizRotateAxis != null) { laser.setRestrictedPlane(incidentObj.GetComponent <GizmoRotateAxis>().getRefPlane()); objToMove = incidentObj; activeMoveType = SelectMoveType.RotateGizmoAxis; return; } // check whether hittin a refObject; in that case move only the ref object GizmoSpecMoveOneAxis moveSpecOneAxis = incidentObj.GetComponent <GizmoSpecMoveOneAxis>(); if (moveSpecOneAxis != null) { specMoveAxis = incidentObj.GetComponent <GizmoSpecMoveOneAxis>().getAxis(); currWaitingObj = ScriptableObject.CreateInstance <WaitingObject>(); GeneralSettings.setNumPad(currWaitingObj); GeneralSettings.updateInteractText("Please specify offset along " + specMoveAxis + "-axis."); objToMove = incidentObj; activeMoveType = SelectMoveType.MoveSpecOneAxis; return; } // check whether hittin a refObject; in that case move only the ref object GizmoMoveSpecPoint moveSpecPt = incidentObj.GetComponent <GizmoMoveSpecPoint>(); if (moveSpecPt != null) { currWaitingObj = ScriptableObject.CreateInstance <WaitingObject>(); GeneralSettings.setNumPad(currWaitingObj); GeneralSettings.updateInteractText("Please enter target point on X-axis."); objToMove = incidentObj; activeMoveType = SelectMoveType.MoveSpecPt; tgtPosList.Clear(); return; } // otherwise move the whole edit object else { // set laser length equal to gap between laser and the center of the object highlighted laser.setToStickMode(detectRay.distance); objToMove = GeneralSettings.getEditObject(); offsetVal = objToMove.transform.position - detectRay.point; activeMoveType = SelectMoveType.MoveObj; } } return; } if (WandControlsManager.WandControllerRight.getTriggerUp()) { // these modes require continuation and are not exited on just trigger up // their reselase methods are defined in the parts where the activeMoveType is set back to default if (activeMoveType == SelectMoveType.MoveSpecOneAxis || activeMoveType == SelectMoveType.MoveSpecPt) { return; } if (objToMove.GetComponent <SphereCollider>() != null) { objToMove.GetComponent <SphereCollider>().enabled = true; } clearLaser(); objToMove = null; activeMoveType = SelectMoveType.None; return; } } if (objToMove != null) { switch (activeMoveType) { case SelectMoveType.MoveRefEd: { tgtPos = objToMove.transform.parent.InverseTransformVector(laser.getTerminalPoint()); objToMove.GetComponent <RefObjectEdge>().moveObject(startPos, tgtPos); break; } case SelectMoveType.MoveRefPt: { tgtPos = laser.getTerminalPoint(); objToMove.GetComponent <RefObjectPoint>().moveObject(tgtPos + offsetVal); break; } case SelectMoveType.MoveRefPtConstrained: { if (!laser.isHit()) { break; } tgtPos = laser.getTerminalPoint(); objToMove.GetComponent <RefObjectPlaneConstraintPoint>().moveObject(tgtPos); break; } case SelectMoveType.MoveObj: { tgtPos = laser.getTerminalPoint(); objToMove.GetComponent <Editable>().moveObject(tgtPos + offsetVal); break; } // DIRTY-FIX case SelectMoveType.MoveGizmoLinear: { tgtPos = objToMove.transform.parent.InverseTransformVector(laser.getTerminalPoint()); objToMove.GetComponent <GizmoMoveLinear>().moveObject(tgtPos); break; } case SelectMoveType.RotateGizmoAxis: { tgtPos = laser.getTerminalPoint(); objToMove.GetComponent <GizmoRotateAxis>().rotateObject(tgtPos); break; } case SelectMoveType.MoveSpecOneAxis: { if (!currWaitingObj.isSet()) { return; } int amt = int.Parse(currWaitingObj.readString()); objToMove.GetComponent <GizmoSpecMoveOneAxis>().moveObject(amt); GeneralSettings.addLineToConsole(string.Format("Moved {0} by {1} in {2}-axis", GeneralSettings.getParentClone(objToMove, "app_").name, amt, specMoveAxis)); objToMove = null; activeMoveType = SelectMoveType.None; GeneralSettings.reinstatePreviousMenu(); GeneralSettings.updateInteractText(""); if (objToMove.GetComponent <SphereCollider>() != null) { objToMove.GetComponent <SphereCollider>().enabled = true; } clearLaser(); break; } case SelectMoveType.MoveSpecPt: { if (!currWaitingObj.isSet()) { return; } float amt = float.Parse(currWaitingObj.readString()); tgtPosList.Add(amt); if (tgtPosList.Count == 1) { GeneralSettings.reinstatePreviousMenu(); currWaitingObj = ScriptableObject.CreateInstance <WaitingObject>(); GeneralSettings.setNumPad(currWaitingObj); GeneralSettings.updateInteractText("Please enter target point on Y-axis."); return; } if (tgtPosList.Count == 2) { GeneralSettings.reinstatePreviousMenu(); currWaitingObj = ScriptableObject.CreateInstance <WaitingObject>(); GeneralSettings.setNumPad(currWaitingObj); GeneralSettings.updateInteractText("Please enter target point on Z-axis."); return; } if (tgtPosList.Count == 3) { Vector3 tgtSpecPos = new Vector3(tgtPosList[0], tgtPosList[1], tgtPosList[2]); objToMove.GetComponent <GizmoMoveSpecPoint>().moveObject(tgtSpecPos); GeneralSettings.addLineToConsole(string.Format("Moved {0} to {1}", GeneralSettings.getParentClone(objToMove, "app_").name, tgtSpecPos)); if (objToMove.GetComponent <SphereCollider>() != null) { objToMove.GetComponent <SphereCollider>().enabled = true; } objToMove = null; activeMoveType = SelectMoveType.None; GeneralSettings.reinstatePreviousMenu(); GeneralSettings.updateInteractText(""); clearLaser(); } break; } case SelectMoveType.None: { break; } } } }