//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); }
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); }