public override void OnInspectorGUI() { DoorDetection DoorDetection = target as DoorDetection; GUIStyle style = new GUIStyle() { richText = true }; EditorGUILayout.Space(); EditorGUILayout.LabelField("<b>UI Settings</b>", style); DoorDetection.LookingAtPrefab = (GameObject)EditorGUILayout.ObjectField("Looking at", DoorDetection.LookingAtPrefab, typeof(GameObject), true); DoorDetection.InTriggerZoneLookingAtPrefab = (GameObject)EditorGUILayout.ObjectField("In zone", DoorDetection.InTriggerZoneLookingAtPrefab, typeof(GameObject), true); DoorDetection.CrosshairPrefab = (GameObject)EditorGUILayout.ObjectField("Crosshair Prefab", DoorDetection.CrosshairPrefab, typeof(GameObject), true); EditorGUILayout.Space(); EditorGUILayout.LabelField("<b>Raycast Settings</b>", style); DoorDetection.Reach = EditorGUILayout.FloatField("Reach", DoorDetection.Reach); DoorDetection.DebugRay = EditorGUILayout.Toggle("Debug Ray", DoorDetection.DebugRay); if (DoorDetection.DebugRay) { DoorDetection.DebugRayColor = EditorGUILayout.ColorField("Color", DoorDetection.DebugRayColor); DoorDetection.DebugRayColorAlpha = EditorGUILayout.Slider("Opacity", DoorDetection.DebugRayColorAlpha, 0, 1); DoorDetection.DebugRayColor.a = DoorDetection.DebugRayColorAlpha; } EditorGUILayout.Space(); EditorGUILayout.LabelField(Styles.VersionLabel, Styles.centeredVersionLabel); }
public void T01dSidePlayerIsOn_ReturnsBack() { var doorDirection = new Vector3(0, 0, 1); var doorPosition = new Vector3(0, 0, 0); var doorMock = new DoorMock(doorPosition, doorDirection); var playerPos = new Vector3(2, 0, -1); var playerMock = new PlayerMock(playerPos); var sut = new DoorDetection(doorMock, playerMock); var playerSideOn = sut.PlayerSideOn(); Assert.AreEqual(DoorDetection.DoorSide.Back, playerSideOn); }
public void T02bSidePlayerIsOn_ReturnsFront() { var doorDirection = new Vector3(-1, 0, 0); var doorPosition = new Vector3(0, 0, 0); var doorMock = new DoorMock(doorPosition, doorDirection); var playerPos = new Vector3(-10, 0, 0); var playerMock = new PlayerMock(playerPos); var sut = new DoorDetection(doorMock, playerMock); var playerSideOn = sut.PlayerSideOn(); Assert.AreEqual(DoorDetection.DoorSide.Front, playerSideOn); }
void OnTriggerEnter(Collider other) { //TODO: change this, transform.root is not always good // doorrotation = transform.root.GetComponentInChildren<DoorRotation>(); //What's the best method here?? doorrotation = transform.parent.transform.parent.transform.GetComponentInChildren <DoorRotation>(); if (transform.root.GetComponentInChildren <DoorSound>() != null) { doorsound = transform.root.GetComponentInChildren <DoorSound>(); } else { doorsound = null; } doordetection = GameObject.FindGameObjectWithTag("Player").GetComponent <DoorDetection>(); }
public override void OnInspectorGUI() { serializedObject.Update(); doortrigger = target as DoorTrigger; doordetection = GameObject.FindGameObjectWithTag("Player").GetComponent <DoorDetection>(); GUIStyle style = new GUIStyle() { richText = true }; string[] menuOptions = new string[2]; menuOptions[0] = "Trigger"; menuOptions[1] = "Gizmo"; EditorGUILayout.Space(); ToolBarIndex = GUILayout.Toolbar(ToolBarIndex, menuOptions); switch (ToolBarIndex) { case 0: EditorGUIUtility.labelWidth = 70; EditorGUILayout.Space(); EditorGUILayout.LabelField("<b>Trigger Zone</b>", style); EditorGUILayout.PropertyField(colliderTypeProp, new GUIContent("Shape")); EditorGUILayout.Space(); EditorGUILayout.LabelField("<b>Player Requirements</b>", style); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(hasTagProp, new GUIContent("Tag")); if (doortrigger.HasTag) { EditorGUILayout.PropertyField(tagProp, GUIContent.none); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(hasNameProp, new GUIContent("Name")); if (doortrigger.HasName) { EditorGUILayout.PropertyField(nameProp, GUIContent.none); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(isLookingAtProp, new GUIContent("Looking At")); if (doortrigger.IsLookingAt) { EditorGUILayout.PropertyField(lookObjectProp, GUIContent.none); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(hasPressedProp, new GUIContent("Pressed")); if (doortrigger.HasPressed) { EditorGUILayout.PropertyField(charProp, GUIContent.none); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(hasScriptProp, new GUIContent("Script")); if (doortrigger.HasScript) { EditorGUILayout.PropertyField(scriptProp, GUIContent.none); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(isGameObjectProp, new GUIContent("Is Object")); if (doortrigger.IsGameObject) { EditorGUILayout.PropertyField(objectProp, GUIContent.none); } EditorGUILayout.EndHorizontal(); if (AnyEmptyFields()) { EditorGUILayout.HelpBox("One or more fields have been left empty.", MessageType.Warning); } if (doortrigger.IsLookingAt && doordetection.Reach == 0 && doortrigger.IsLookingAt && doortrigger.lookObject != null) { EditorGUILayout.HelpBox("The reach of your player is zero.", MessageType.Warning); } EditorGUILayout.Space(); GUI.color = Color.green; if (GUILayout.Button("Add " + doortrigger.transform.gameObject.name)) { GameObject Trigger = new GameObject(doortrigger.transform.gameObject.name); GameObject RotationParent = doortrigger.transform.parent.gameObject; Trigger.transform.position = doortrigger.transform.position; Trigger.transform.localScale = doortrigger.transform.localScale; Trigger.transform.rotation = doortrigger.transform.rotation; SetParentChild(RotationParent, Trigger); Trigger.AddComponent <DoorTrigger>(); Trigger.GetComponent <DoorTrigger>().ID = doortrigger.ID; Trigger.GetComponent <DoorTrigger>().CustomGizmoColor = doortrigger.CustomGizmoColor; Trigger.GetComponent <DoorTrigger>().ColliderType = doortrigger.ColliderType; } GUI.color = Color.white; EditorGUILayout.Space(); EditorGUILayout.LabelField(Styles.VersionLabel, Styles.centeredVersionLabel); break; case 1: EditorGUILayout.Space(); EditorGUILayout.LabelField("<b>Trigger Zone</b>", style); EditorGUILayout.PropertyField(drawGizmoProp, new GUIContent("Draw Trigger Zone")); if (doortrigger.DrawGizmo) { EditorGUILayout.PropertyField(customGizmoColorProp, new GUIContent("Color")); EditorGUILayout.PropertyField(customGizmoAlphaProp, new GUIContent("Opacity")); doortrigger.CustomGizmoColor.a = doortrigger.CustomGizmoColorAlpha; } EditorGUILayout.Space(); EditorGUILayout.LabelField("<b>Wireframe</b>", style); EditorGUILayout.PropertyField(drawWireProp, new GUIContent("Draw Wireframe")); if (doortrigger.DrawWire) { EditorGUILayout.PropertyField(customWireColorProp, new GUIContent("Color")); EditorGUILayout.PropertyField(customWireAlphaProp, new GUIContent("Opacity")); doortrigger.CustomWireColor.a = doortrigger.CustomWireColorAlpha; } if (!doortrigger.DrawWire) { EditorGUILayout.HelpBox("Collapse collider components in order to hide their wireframes.", MessageType.None); } EditorGUILayout.Space(); EditorGUILayout.LabelField(Styles.VersionLabel, Styles.centeredVersionLabel); break; default: break; } if (Event.current.type == EventType.Repaint) { if (doortrigger.ColliderType == DoorTrigger.TypeOfCollider.Cubic) { if (doortrigger.gameObject.GetComponent <BoxCollider>() == null) { doortrigger.gameObject.AddComponent <BoxCollider>(); } doortrigger.gameObject.GetComponent <BoxCollider>().isTrigger = true; } else if (doortrigger.ColliderType == DoorTrigger.TypeOfCollider.Spherical) { if (doortrigger.gameObject.GetComponent <SphereCollider>() == null) { doortrigger.gameObject.AddComponent <SphereCollider>(); } doortrigger.gameObject.GetComponent <SphereCollider>().isTrigger = true; } } serializedObject.ApplyModifiedProperties(); }