Exemplo n.º 1
0
 void SaveData(LevelConfigurationData levelConfigurationData)
 {
     EditorUtility.SetDirty(levelConfigurationData);
     AssetDatabase.SaveAssets();
     AssetDatabase.Refresh();
 }
Exemplo n.º 2
0
        public override void OnInspectorGUI()
        {
            PopulateGrid();

            LevelConfigurationData t = (LevelConfigurationData)target;

            GUILayout.Label("Level Configuration", EditorStyles.boldLabel);

            EditorGUILayout.BeginVertical("Box");
            {
                GUILayout.Label("Pot Settings");

                m_PotSelectedIndex = t.selectedPot;
                m_PotSelectedIndex =
                    GUILayout.SelectionGrid(m_PotSelectedIndex, m_PotGridImages, 13, GUILayout.MaxHeight(256));
                GUILayout.Space(10f);
                EditorGUI.indentLevel += 1;

                EditorGUI.BeginDisabledGroup(true);
                t.potPosition = EditorGUILayout.Vector3Field(
                    "Position",
                    m_PositionValues[m_PotSelectedIndex]) + m_PotOffset;
                EditorGUI.EndDisabledGroup();

                t.radius   = EditorGUILayout.Slider("Radius", t.radius, 0.5f, 5);
                t.isMoving = EditorGUILayout.Toggle("Is Moving", t.isMoving);

                if (t.isMoving)
                {
                    EditorGUI.indentLevel += 1;
                    t.potSpeed             = EditorGUILayout.FloatField("Speed", t.potSpeed);
                    t.initialPosition      = EditorGUILayout.Vector3Field("Initial Position", t.initialPosition);
                    t.initialPosition      = EditorGUILayout.Vector3Field("Final Position", t.finalPosition);
                }

                t.selectedPot = m_PotSelectedIndex;
            }
            EditorGUILayout.EndVertical();

            GUILayout.Space(10f);

            EditorGUILayout.BeginVertical("Box");
            {
                GUILayout.Label("Fan Settings");

                m_FanSelectedIndex = t.selectedFan;
                m_FanSelectedIndex =
                    GUILayout.SelectionGrid(m_FanSelectedIndex, m_FanGridImages, 13, GUILayout.MaxHeight(256));

                GUILayout.Space(10f);

                EditorGUI.BeginDisabledGroup(true);
                t.fanPosition = EditorGUILayout.Vector3Field(
                    "Position",
                    m_PositionValues[m_FanSelectedIndex]);
                EditorGUI.EndDisabledGroup();

                t.fanHeading = EditorGUILayout.Vector3Field("Heading", t.fanHeading);
                t.fanForce   = EditorGUILayout.FloatField("Force", t.fanForce);
                t.isRotating = EditorGUILayout.Toggle("Is Rotating", t.isRotating);
                t.fanUIPos   = EditorGUILayout.Vector3Field("Fan UI Position", t.fanUIPos);

                if (t.isRotating)
                {
                    EditorGUI.indentLevel += 1;
                    t.rotationSpeed        = EditorGUILayout.FloatField("Speed", t.rotationSpeed);
                    t.initialHeading       = EditorGUILayout.Vector3Field("Initial Heading", t.initialHeading);
                    t.finalHeading         = EditorGUILayout.Vector3Field("Final Heading", t.finalHeading);
                }

                t.selectedFan = m_FanSelectedIndex;
            }
            EditorGUILayout.EndVertical();

            GUILayout.Space(10f);

            EditorGUILayout.BeginVertical("Box");
            {
                GUILayout.Label("Obstacles");
                GUILayout.Space(10f);

                foreach (var obstacle in t.obstacles)
                {
                    EditorGUILayout.BeginVertical();

                    obstacle.prefab =
                        EditorGUILayout.ObjectField("Obstacle prefab", obstacle.prefab, typeof(GameObject), false) as
                        GameObject;
                    obstacle.position = EditorGUILayout.Vector3Field("Position", obstacle.position);
                    obstacle.scale    = EditorGUILayout.Vector3Field("Scale", obstacle.scale);
                    if (GUILayout.Button("Remove Obstacle"))
                    {
                        t.obstacles.Remove(obstacle);
                        return;
                    }

                    EditorGUILayout.EndVertical();

                    GUILayout.Space(10f);
                }

                if (GUILayout.Button("New Obstacle"))
                {
                    t.obstacles.Add(new Obstacle());
                }
            }
            EditorGUILayout.EndVertical();

            if (GUI.changed)
            {
                SaveData(t);
            }
        }