void OnSceneGUI() { targetPatrol = (RobotPatrol)target; for (int i = 0; i < targetPatrol.route.Count; ++i) { if (routeIndex == i) { this.UpdateListIndexViaHandle(ref targetPatrol.route, i, new PositionHandleDelegate(Handles.PositionHandle), targetPatrol.route[i], Quaternion.identity); } if (routeIndex == i) { if (xOffset != 0f || zOffset != 0f) { Handles.color = new Color(0f, 0.75f, 0f, 0.25f); Handles.SphereCap(0, targetPatrol.route[i] + new Vector3(xOffset, 0f, zOffset), Quaternion.identity, 0.35f); Handles.ArrowCap(0, targetPatrol.route[i], Quaternion.LookRotation(offsetVector, Vector3.up), 1.5f); Handles.DrawLine(targetPatrol.route[i], targetPatrol.route[i] + offsetVector); Handles.ArrowCap(0, offsetVector + targetPatrol.route[i], Quaternion.LookRotation((i < targetPatrol.route.Count - 1 ? targetPatrol.route[i + 1] : targetPatrol.route[0]) - (offsetVector + targetPatrol.route[i]), Vector3.up), 1.5f); Handles.DrawLine(targetPatrol.route[i] + offsetVector, i < targetPatrol.route.Count - 1 ? targetPatrol.route[i + 1] : targetPatrol.route[0]); } Handles.color = new Color(1f, 0f, 0f, 0.5f); } else { if (i == 0) { Handles.color = new Color(0f, 1f, 1f, 0.5f); } else { Handles.color = new Color(0f, 0f, 1f, 0.5f); } } if (Handles.Button(targetPatrol.route[i], Quaternion.identity, 0.35f, 0.42f, Handles.SphereCap)) { routeIndex = i; Repaint(); } Handles.color = new Color(0f, 0f, 1f, 0.5f); Handles.DrawLine(targetPatrol.route[i], i < targetPatrol.route.Count - 1 ? targetPatrol.route[i + 1] : targetPatrol.route[0]); Handles.ArrowCap(0, targetPatrol.route[i], Quaternion.LookRotation(((i < targetPatrol.route.Count - 1 ? targetPatrol.route[i + 1] : targetPatrol.route[0]) - targetPatrol.route[i]), Vector3.up), 1.5f); } // Draw search cone if (targetPatrol.visionEnabled) { Handles.color = new Color(1f, 1f, 0f, 0.5f); DrawViewCone(); } }
void Awake() { flipped = false; robotRef = GetComponentInParent <RobotPatrol>(); }
private void Start() { patrolScript = GetComponentInParent <RobotPatrol>(); anim = GetComponentInParent <Animator>(); healthSystem = GetComponent <EnemyRobotHealthSystem>(); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); targetPatrol = (RobotPatrol)target; EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Route Editor Options:", EditorStyles.boldLabel); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Node Index: "); routeIndex = EditorGUILayout.IntField(routeIndex); EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Duplicate Node at Index")) { this.HandleCustomEditorMethod(DuplicateNodeAtIndex); } if (GUILayout.Button("Remove Node at Index")) { this.HandleCustomEditorMethod(RemoveNodeAtIndex); } if (GUILayout.Button("Insert Node Before Index")) { this.HandleCustomEditorMethod(InsertNodeBeforeIndex); } if (GUILayout.Button("Insert Node After Index")) { this.HandleCustomEditorMethod(InsertNodeAfterIndex); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Offset:"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("X: "); xOffset = EditorGUILayout.DelayedFloatField(xOffset); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Z: "); zOffset = EditorGUILayout.DelayedFloatField(zOffset); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("\u03B8: "); thetaOffset = EditorGUILayout.DelayedFloatField(thetaOffset); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("R: "); radiusOffset = EditorGUILayout.DelayedFloatField(radiusOffset); EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Insert Node at Offset")) { this.HandleCustomEditorMethod(InsertNodeAtOffset); } if (GUILayout.Button("Move Node to Offset")) { this.HandleCustomEditorMethod(MoveNodeToOffset); } EditorGUILayout.Space(); if (GUILayout.Button("Insert Node at Robot Position")) { this.HandleCustomEditorMethod(CreateNodeAtRobotPosition); } EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("N-gon Sides: "); nGonSides = EditorGUILayout.IntField(nGonSides); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("N-gon Radius: "); nGonRadius = EditorGUILayout.FloatField(nGonRadius); EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Create Regular N-gon Path")) { this.HandleCustomEditorMethod(CreateNgonPath); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Other Actions: ", EditorStyles.boldLabel); EditorGUILayout.Space(); if (GUILayout.Button("Snap Patrol Route to Y-Plane")) { this.HandleCustomEditorMethod(LockRouteToYPlane); } EditorGUILayout.Space(); if (GUILayout.Button("Move Robot to First Position")) { this.HandleCustomEditorMethod(MoveRobotToFirstPosition); } if (GUILayout.Button("Test")) { Debug.LogFormat("(\u03B1: {0}, \u03B2: {1})", targetPatrol.targetTransform.position.GetAzimuth(targetPatrol.transform.position + targetPatrol.eyeOffset, targetPatrol.transform.up, targetPatrol.transform.forward), targetPatrol.targetTransform.position.GetElevation(targetPatrol.transform.position + targetPatrol.eyeOffset, targetPatrol.transform.up)); } }