Example #1
0
        // ----- ----- ----- ----- -----
        // ObjectIf --> SprBehaviour

        public static Type GetBehaviour <Type>(this ObjectIf springheadObject) where Type : SprBehaviour
        {
            return(SprBehaviour.GetBehaviour <Type>(springheadObject));
        }
Example #2
0
    public override void OnInspectorGUI()
    {
        PHSceneBehaviour phSceneBehaviour = (PHSceneBehaviour)target;

        DrawDefaultInspector();

        EditorGUI.BeginChangeCheck();
        showCollision = EditorGUILayout.Foldout(showCollision, "Collision Setting");
        if (showCollision)
        {
            int i = 0;
            List <PHSceneBehaviour.CollisionSetting> removeList = new List <PHSceneBehaviour.CollisionSetting>();
            foreach (var collisionItem in phSceneBehaviour.collisionList)
            {
                i++;
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Rule " + i + ":");
                if (GUILayout.Button(" - "))
                {
                    removeList.Add(collisionItem);
                }
                if (GUILayout.Button(" ↑ "))
                {
                    // -- TBD --
                }
                if (GUILayout.Button(" ↓ "))
                {
                    // -- TBD --
                }
                EditorGUILayout.EndHorizontal();

                // -----

                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginChangeCheck();
                var targetSetMode1 = (PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode)(EditorGUILayout.EnumPopup("Target Solid 1", collisionItem.targetSetMode1));
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed");
                    collisionItem.targetSetMode1 = targetSetMode1;
                }
                if (collisionItem.targetSetMode1 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.One)
                {
                    EditorGUI.BeginChangeCheck();
                    var solid1 = EditorGUILayout.ObjectField(collisionItem.solid1, typeof(PHSolidBehaviour), true) as PHSolidBehaviour;
                    if (EditorGUI.EndChangeCheck())
                    {
                        Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed");
                        collisionItem.solid1 = solid1;
                    }
                }
                else if (collisionItem.targetSetMode1 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.NameMatching)
                {
                    EditorGUI.BeginChangeCheck();
                    var solid1Pattern = EditorGUILayout.TextField(collisionItem.solid1Pattern);
                    if (EditorGUI.EndChangeCheck())
                    {
                        Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed");
                        collisionItem.solid1Pattern = solid1Pattern;
                    }
                }
                EditorGUILayout.EndHorizontal();

                // --

                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginChangeCheck();
                var targetSetMode2 = (PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode)(EditorGUILayout.EnumPopup("Target Solid 2", collisionItem.targetSetMode2));
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed");
                    collisionItem.targetSetMode2 = targetSetMode2;
                }
                if (collisionItem.targetSetMode2 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.One)
                {
                    EditorGUI.BeginChangeCheck();
                    var solid2 = EditorGUILayout.ObjectField(collisionItem.solid2, typeof(PHSolidBehaviour), true) as PHSolidBehaviour;
                    if (EditorGUI.EndChangeCheck())
                    {
                        Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed");
                        collisionItem.solid2 = solid2;
                    }
                }
                else if (collisionItem.targetSetMode2 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.NameMatching)
                {
                    var solid2Pattern = EditorGUILayout.TextField(collisionItem.solid2Pattern);
                    if (EditorGUI.EndChangeCheck())
                    {
                        Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed");
                        collisionItem.solid2Pattern = solid2Pattern;
                    }
                }
                EditorGUILayout.EndHorizontal();

                // -----

                EditorGUI.BeginChangeCheck();
                var mode = (PHSceneDesc.ContactMode)(EditorGUILayout.EnumPopup("Contact Mode", collisionItem.mode));
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed");
                    collisionItem.mode = mode;
                }
            }

            foreach (var removeItem in removeList)
            {
                phSceneBehaviour.collisionList.Remove(removeItem);
            }

            if (GUILayout.Button("Add Collision Rule"))
            {
                phSceneBehaviour.collisionList.Add(new PHSceneBehaviour.CollisionSetting());
            }
        }

        EditorGUILayout.Space();

        if (GUILayout.Button("Late Awake/Start"))
        {
            SprBehaviour.ExecLateAwakeStart();
        }
    }