Esempio n. 1
0
    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);
        }
Esempio n. 4
0
 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>();
 }
Esempio n. 5
0
    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();
    }