Beispiel #1
0
//Next TASKS
//Cut next week

    public bool usage(RaycastHit hit, Extension extension, GameObject road)
    {
        if (currentPhase == Phase.Init)
        {
            positionToSpawn      = road.transform.position;
            roadEditorController = RoadEditorController.Instance;
            spawnCrossroad();
            checkIfMatch();
            Destroy(road);
            currentPhase = Phase.Adappting;
        }
        else if (currentPhase == Phase.Adappting)
        {
            if (Input.GetKeyDown(KeyCode.Keypad8))
            {
                addIndex();
                checkIfMatch();
            }
            if (Input.GetKeyDown(KeyCode.Keypad2))
            {
                subIndex();
                checkIfMatch();
            }
            if (Input.GetKeyDown(KeyCode.Keypad4))
            {
                rotate45plus();
                checkIfMatch();
            }
            if (Input.GetKeyDown(KeyCode.Keypad6))
            {
                rotate45moin();
                checkIfMatch();
            }
            if (Input.GetKeyDown(KeyCode.F))
            {
                flip();
            }

            if (Input.GetKeyDown(KeyCode.Return) && checkIfMatch())
            {
                currentPhase = Phase.ConfrimeAll;
            }
        }
        else if (currentPhase == Phase.ConfrimeAll)
        {
            roadEditorController.addRoad(toUse);
            roadEditorController.addExtensions(toUse.GetComponent <Road>().getExtensionsPlaces());
            toUse.GetComponent <Road>().makeRoadTintWhite();
            toUse.GetComponent <Road>().hideExits();
            currentPhase = Phase.Init;
            toUse        = null;
            return(true);
        }
        return(false);
    }
Beispiel #2
0
    public bool usage(RaycastHit hit, Extension extension, GameObject road)
    {
        if (currentPhase == Phase.Init)
        {
            roadEditorController          = RoadEditorController.Instance;
            roadEditorController.showGrid = true;


            if (road.GetComponent <Road>().isEmpty())
            {
                dirA    = extension.ExitOrientation;
                dirB    = roadEditorController.getOppositDirection(extension.ExitOrientation);
                anchorA = extension.ExitPos;
                road.GetComponent <Road>().addPoint(anchorA);
                road.GetComponent <Road>().addPoint(roadEditorController.directionToVector(dirA) * magnitudeA + anchorA);
                road.GetComponent <Road>().addPoint(roadEditorController.directionToVector(dirB) * magnitudeB + new Vector3(hit.point.x, roadEditorController.getHeight(), hit.point.z));
                road.GetComponent <Road>().addPoint(new Vector3(hit.point.x, roadEditorController.getHeight(), hit.point.z));
            }
            else
            {
                anchorA = road.GetComponent <Road>()[road.GetComponent <Road>().Length - 4];
            }


            currentPhase = Phase.Streaching;
        }
        else if (currentPhase == Phase.InitStreaching)
        {
            dirA    = roadEditorController.getOppositDirection(dirB);
            dirB    = roadEditorController.getOppositDirection(dirA);
            anchorA = road.GetComponent <Road>()[road.GetComponent <Road>().Length - 1];
            pivotA  = roadEditorController.directionToVector(dirA) * magnitudeA + anchorA;
            pivotB  = roadEditorController.directionToVector(dirB) * magnitudeB + anchorB;
            road.GetComponent <Road>().addPoint(pivotA);
            road.GetComponent <Road>().addPoint(pivotB);
            road.GetComponent <Road>().addPoint(anchorA);
            currentPhase = Phase.Streaching;
        }
        else if (currentPhase == Phase.Streaching)
        {
            anchorB = roadEditorController.SnapPosition(new Vector3(hit.point.x, roadEditorController.getHeight(), hit.point.z), roadEditorController.offset);

            pivotA = roadEditorController.directionToVector(dirA) * magnitudeA + anchorA;
            pivotB = roadEditorController.directionToVector(dirB) * magnitudeB + anchorB;

            road.GetComponent <Road>()[road.GetComponent <Road>().Length - 3] = pivotA;
            road.GetComponent <Road>()[road.GetComponent <Road>().Length - 2] = pivotB;
            road.GetComponent <Road>()[road.GetComponent <Road>().Length - 1] = anchorB;

            if (Input.GetKeyDown(KeyCode.G))
            {
                roadEditorController.showGrid = !roadEditorController.showGrid;
            }

            if (Input.GetKey(KeyCode.A))            //INPUT Slider Left
            {
                magnitudeA = Mathf.Clamp(magnitudeA + .5f, 1f, maxPivot);
            }
            if (Input.GetKey(KeyCode.S))
            {
                magnitudeA = Mathf.Clamp(magnitudeA - .5f, 1f, maxPivot);
            }

            if (Input.GetKey(KeyCode.Z))            //INPUT Slider Right
            {
                magnitudeB = Mathf.Clamp(magnitudeB + .5f, 1f, maxPivot);
            }
            if (Input.GetKey(KeyCode.X))
            {
                magnitudeB = Mathf.Clamp(magnitudeB - .5f, 1f, maxPivot);
            }

            if (Input.GetKey(KeyCode.Keypad8)) //INPUT Pad
            {
                dirB = Direction.N;
            }
            else if (Input.GetKey(KeyCode.Keypad4))
            {
                dirB = Direction.W;
            }
            else if (Input.GetKey(KeyCode.Keypad6))
            {
                dirB = Direction.E;
            }
            else if (Input.GetKey(KeyCode.Keypad2))
            {
                dirB = Direction.S;
            }
            else if (Input.GetKey(KeyCode.Keypad7))
            {
                dirB = Direction.WN;
            }
            else if (Input.GetKey(KeyCode.Keypad9))
            {
                dirB = Direction.NE;
            }
            else if (Input.GetKey(KeyCode.Keypad3))
            {
                dirB = Direction.ES;
            }
            else if (Input.GetKey(KeyCode.Keypad1))
            {
                dirB = Direction.SW;
            }

            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                roadEditorController.addHeight();
            }
            if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                roadEditorController.subHeight();
            }

            updatePreview(road);

            if (Input.GetMouseButtonDown(0))         //Right Pad Click Confirme Length
            {
                roadEditorController.lastHeightConfirm();
                currentPhase = Phase.InitStreaching;
            }
            else if (Input.GetKeyDown(KeyCode.Return))        //Left Click Pad Confirme Path
            {
                currentPhase = Phase.ConfrimeAll;
            }
        }
        else if (currentPhase == Phase.ConfrimeAll)
        {
            road.GetComponent <Road>().rendererExtensions();
            magnitudeA   = 10f;
            magnitudeB   = 10f;
            anchorA      = Vector3.zero;
            anchorB      = Vector3.zero;
            pivotA       = Vector3.zero;
            pivotB       = Vector3.zero;
            currentPhase = Phase.Init;
            roadEditorController.showGrid = false;
            return(true);
        }
        return(false);
    }
    public bool usage(RaycastHit hit, Extension extension, GameObject road)
    {
        if (currentPhase == Phase.Init)
        {
            roadEditorController = RoadEditorController.Instance;
            selectedDirection    = extension.ExitOrientation;
            firstDirection       = roadEditorController.getOppositDirection(extension.ExitOrientation);
            lastCenter           = extension.ExitPos;
            roadEditorController.setHeigth((int)lastCenter.y);
            if (!extension.isEmpty() && extension.ExitRoadRef.Nature == Nature.Normal)
            {
                if (road.GetComponent <Road>().Length != 0)
                {
                    if (Vector3.Distance(lastCenter, road.GetComponent <Road>()[0]) < Vector3.Distance(lastCenter, road.GetComponent <Road>()[road.GetComponent <Road>().Length - 1]))
                    {
                        road.GetComponent <Road>().invertRoadOrder();
                    }
                }
            }
            road.GetComponent <Road>().addPoint(lastCenter);
            roadTemp = new List <Vector3>(road.GetComponent <Road>().getPoints());

            currentPhase = Phase.Streaching;
        }
        else if (currentPhase == Phase.Streaching)
        {
            float distance = Vector3.Distance(roadEditorController.SnapPosition(new Vector3(hit.point.x, roadEditorController.getHeight(), hit.point.z), roadEditorController.offset), lastCenter);
            if (distance < roadEditorController.offset)
            {
                distance = roadEditorController.offset;
            }

            changeSegment(road.GetComponent <Road>(), (int)distance);

            updatePreview(road);
            bool roadGood = road.GetComponent <Road>().chekRoad();

            if (Input.GetMouseButtonDown(0) && roadGood)         //Right Pad Click Confirme Length
            {
                currentPhase = Phase.AxesRender;
                roadEditorController.lastHeightConfirm();
                roadTemp = new List <Vector3>(road.GetComponent <Road>().getPoints());
            }
            else if (Input.GetKeyDown(KeyCode.Return) && roadGood)        //Left Click Pad Confirme Path
            {
                currentPhase = Phase.ConfrimeAll;
            }

            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                roadEditorController.addHeight();
            }
            if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                roadEditorController.subHeight();
            }
        }
        else if (currentPhase == Phase.AxesRender)
        {
            roadEditorController.showHideGizmo();
            roadEditorController.updateGizmo(selectedDirection);
            roadEditorController.gizmoDirection.transform.position = road.GetComponent <Road>()[road.GetComponent <Road>().Length - 1];
            currentPhase = Phase.AxesSelection;
        }
        else if (currentPhase == Phase.AxesSelection)
        {
            if (Input.GetMouseButtonDown(0))//Left Pad Selection
            {
                Direction d = roadEditorController.pickDirection(hit);
                if (d != Direction.NULL)
                {
                    roadEditorController.showHideGizmo();
                    lastCenter        = road.GetComponent <Road>()[road.GetComponent <Road>().Length - 1];
                    currentPhase      = Phase.Streaching;
                    selectedDirection = d;
                }
            }

            if (Input.GetKeyDown(KeyCode.Return) && road.GetComponent <Road>().chekRoad())        //Left Click Pad Confirme Path
            {
                currentPhase = Phase.ConfrimeAll;
            }
        }
        else if (currentPhase == Phase.ConfrimeAll)
        {
            road.GetComponent <Road>().rendererExtensions();
            roadEditorController.gizmoDirection.SetActive(false);
            currentPhase = Phase.Init;
            road.GetComponent <Road>().makeRoadTintWhite();
            return(true);
        }
        return(false);
    }