Esempio n. 1
0
        static void NamedGeneratorButton(ChiselPlacementToolInstance generator, Rect togglePosition, GUIStyle style, bool isActive)
        {
            var temp = togglePosition;

            temp.xMin += 5;
            temp.width = 20;
            {
                EditorGUI.BeginChangeCheck();
                var value = GUI.Toggle(temp, generator.InToolBox, GUIContent.none);
                if (EditorGUI.EndChangeCheck())
                {
                    SetInToolBox(generator, value);
                }
            }
            temp       = togglePosition;
            temp.xMin += 25;
            {
                EditorGUI.BeginChangeCheck();
                var content    = ChiselEditorResources.GetIconContentWithName(generator.ToolName, generator.ToolName)[0];
                var isSelected = ChiselGeneratorManager.GeneratorMode == generator;
                var value      = ToggleButton(temp, content, isSelected, style, isActive);
                if (EditorGUI.EndChangeCheck() && value)
                {
                    // TODO: make undoable
                    generator.InToolBox = true;
                    ChiselPlacementTool.ActivateTool();
                    ChiselGeneratorManager.GeneratorMode = generator;
                    ChiselEditorSettings.Save();
                    SceneView.RepaintAll();
                }
            }
        }
Esempio n. 2
0
        static void GeneratorButton(Rect position, ChiselPlacementToolInstance generator, GUIStyle style, bool isActive)
        {
            EditorGUI.BeginChangeCheck();
            var content    = generator.Content;
            var isSelected = ChiselGeneratorManager.GeneratorMode == generator;
            var value      = ToggleButton(position, content, isSelected && isActive, style, isActive);

            if (EditorGUI.EndChangeCheck())
            {
                if (Event.current.button == 2)
                {
                    ChiselPlacementToolsSelectionWindow.SetInToolBox(generator, false);
                }
                else
                {
                    if (value)
                    {
                        ChiselPlacementTool.ActivateTool();
                        ChiselGeneratorManager.GeneratorMode = generator;
                        ChiselEditorSettings.Save();
                    }
                    SceneView.RepaintAll();
                }
            }
        }
Esempio n. 3
0
        public override void OnGUI()
        {
            EditorGUILayout.GetControlRect(false, 0, kMinWidthLayout);
            var sceneView     = containerWindow as SceneView;
            var generatorMode = ChiselGeneratorManager.GeneratorMode;

            if (currentInstance != generatorMode)
            {
                currentInstance  = generatorMode;
                this.displayName = $"Create {generatorMode.ToolName}";
            }
            generatorMode.OnSceneSettingsGUI(sceneView);
        }
Esempio n. 4
0
 // TODO: move somewhere else
 public static void SetInToolBox(ChiselPlacementToolInstance generator, bool value)
 {
     // TODO: make undoable
     generator.InToolBox = value;
     if (ChiselGeneratorManager.GeneratorMode == generator)
     {
         if (!DeselectGeneratorMode())
         {
             generator.InToolBox = true;
         }
     }
     ChiselEditorSettings.Save();
     if (Event.current.type != EventType.Repaint)
     {
         SceneView.RepaintAll();
     }
 }
        internal static void ActivateTool(ChiselPlacementToolInstance currentTool)
        {
            if (currentTool == null)
            {
                return;
            }

            if (currentTool != null && Tools.hidden)
            {
                Tools.hidden = false;
            }
            if (currentTool == Instance.data.currentGenerator)
            {
                return;
            }
            if (currentTool != null && Tools.hidden)
            {
                Tools.hidden = false;
            }

            var prevTool = Instance.data.currentGenerator;

            if (prevTool != null)
            {
                prevTool.OnDeactivate();
            }
            Instance.data.currentGenerator = null;
            if (currentTool != null)
            {
                currentTool.OnActivate();
            }
            Instance.data.currentGenerator = currentTool;

            ChiselToolsOverlay.UpdateCreateToolIcon();

            GeneratorSelectionChanged?.Invoke(prevTool, currentTool);
        }
Esempio n. 6
0
 public void GeneratorSelectionChanged(ChiselPlacementToolInstance prevGenerator, ChiselPlacementToolInstance nextGenerator)
 {
     Repaint();
 }