Exemplo n.º 1
0
 // 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);
 }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
 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();
     }
 }
Exemplo n.º 6
0
 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.");
         }
     }
 }
Exemplo n.º 7
0
 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.");
         }
     }
 }
Exemplo n.º 8
0
 private void defByCorners(LaserPicker laser)
 {
     if (WandControlsManager.WandControllerRight.getTriggerDown())
     {
         collectedPts.Add(laser.getTerminalPoint());
         if (collectedPts.Count == 4)
         {
             makePlane(laser);
             collectedPts.Clear();
         }
     }
 }
Exemplo n.º 9
0
 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);
     }
 }
Exemplo n.º 10
0
 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.");
         }
     }
 }
Exemplo n.º 11
0
    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();
        }
    }
Exemplo n.º 12
0
    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;
    }
Exemplo n.º 13
0
    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;
            }
            }
        }
    }