private void DrawInEditing(CameraTransitionTrigger tr) { if (GUILayout.Button("Confirm")) { //set positions if (tr.FollowPlayer) { tr.FollowRelativePos = tr.editingObjects[1].transform.localPosition; tr.Rotation = tr.editingObjects[1].transform.eulerAngles; } else { tr.StaticPos = tr.editingObjects[0].transform.position; tr.Rotation = tr.editingObjects[0].transform.eulerAngles; } foreach (var ob in tr.editingObjects) { DestroyImmediate(ob); } tr.editingObjects.Clear(); tr.InEditing = false; tr.IsSetup = true; UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(tr); } }
private GameObject SpawnCameraAt(Vector3 pos, CameraTransitionTrigger tr) { GameObject g = new GameObject("TEMPORARY CAM FOR EDITING"); g.AddComponent <Camera>(); g.transform.position = pos; tr.editingObjects.Add(g); return(g); }
private GameObject SpawnPlayerSimulationAt(Vector3 pos, CameraTransitionTrigger tr) { GameObject g = GameObject.CreatePrimitive(PrimitiveType.Cylinder); g.name = "TEMPORARY PLAYER FOR EDITING"; g.transform.position = pos; tr.editingObjects.Add(g); return(g); }
private void DrawNotSetup(CameraTransitionTrigger tr) { if (GUILayout.Button("Setup Static Camera")) { SpawnCameraAt(tr.transform.position, tr); tr.FollowPlayer = false; tr.InEditing = true; } else if (GUILayout.Button("Setup Player following Camera")) { SpawnTestPlayerWithCamAt(tr.transform.position, tr.transform.position - new Vector3(0, 0, 7), tr); tr.FollowPlayer = true; tr.InEditing = true; } }
public override void OnInspectorGUI() { CameraTransitionTrigger transition = (CameraTransitionTrigger)target; if (transition.InEditing) { DrawInEditing(transition); } else if (transition.IsSetup) { DrawAlreadySetup(transition); } else { DrawNotSetup(transition); } if (transition.debug) { DrawDefaultInspector(); } }
private void DrawAlreadySetup(CameraTransitionTrigger tr) { if (tr.FollowPlayer) { GUILayout.Label("Relative Position: " + tr.FollowRelativePos); } else { GUILayout.Label("Position: " + tr.StaticPos); } GUILayout.Label("Rotation: " + tr.Rotation); if (GUILayout.Button("Edit")) { if (tr.FollowPlayer) { GameObject g = SpawnTestPlayerWithCamAt(tr.transform.position, tr.FollowRelativePos, tr); g.transform.eulerAngles = tr.Rotation; } else { GameObject g = SpawnCameraAt(tr.StaticPos, tr); g.transform.eulerAngles = tr.Rotation; } tr.IsSetup = false; tr.InEditing = true; } else if (GUILayout.Button("Change Type")) { tr.IsSetup = false; tr.InEditing = false; } }
private GameObject SpawnTestPlayerWithCamAt(Vector3 PlayerPos, Vector3 CamPos, CameraTransitionTrigger tr) { GameObject g = SpawnPlayerSimulationAt(PlayerPos, tr); GameObject c = SpawnCameraAt(CamPos, tr); c.transform.parent = g.transform; return(c); }