Пример #1
0
        private void DrawBrushMaskGUI()
        {
            string label = "Brush Masks";
            string id    = "brushmasks" + painter.GetInstanceID().ToString();

            GenericMenu menu = new GenericMenu();

            menu.AddItem(
                new GUIContent("New Brush"),
                false,
                DisplayNewBrushDialog);
            menu.AddItem(
                new GUIContent("Refresh"),
                false,
                painter.ReloadBrushMasks);

            GEditorCommon.Foldout(label, true, id, () =>
            {
                GSelectionGridArgs args        = new GSelectionGridArgs();
                args.selectedIndex             = painter.SelectedBrushMaskIndex;
                args.collection                = painter.BrushMasks;
                args.itemSize                  = GEditorCommon.selectionGridTileSizeSmall;
                args.itemPerRow                = 4;
                args.drawPreviewFunction       = DrawBrushMaskPreview;
                painter.SelectedBrushMaskIndex = GEditorCommon.SelectionGrid(args);
            },
                                  menu);
        }
        private void DrawObjectSelectorGUI(GObjectStampLayer layer)
        {
            if (layer.Prototypes.Count > 0)
            {
                GSelectionGridArgs args = new GSelectionGridArgs();
                args.collection           = layer.Prototypes;
                args.selectedIndices      = layer.PrototypeIndices;
                args.itemSize             = GEditorCommon.selectionGridTileSizeSmall;
                args.itemPerRow           = 4;
                args.drawPreviewFunction  = GEditorCommon.DrawGameObjectPreview;
                args.contextClickFunction = OnObjectSelectorContextClick;
                layer.PrototypeIndices    = GEditorCommon.MultiSelectionGrid(args);
            }
            else
            {
                EditorGUILayout.LabelField("No Game Object found!", GEditorCommon.WordWrapItalicLabel);
            }

            Rect       r1     = EditorGUILayout.GetControlRect(GUILayout.Height(GEditorCommon.objectSelectorDragDropHeight));
            GameObject prefab = GEditorCommon.ObjectSelectorDragDrop <GameObject>(r1, "Drop a Game Object here!", "t:GameObject");

            if (prefab != null)
            {
                layer.Prototypes.AddIfNotContains(prefab);
            }

            GEditorCommon.SpacePixel(0);
            Rect r2 = EditorGUILayout.GetControlRect(GUILayout.Height(GEditorCommon.objectSelectorDragDropHeight));
            GPrefabPrototypeGroup group = GEditorCommon.ObjectSelectorDragDrop <GPrefabPrototypeGroup>(r2, "Drop a Prefab Prototype Group here!", "t:GPrefabPrototypeGroup");

            if (group != null)
            {
                layer.Prototypes.AddIfNotContains(group.Prototypes);
            }
        }
        private void DrawFoliageDistributionMapParams()
        {
            GFoliageDistributionMapGeneratorParams param = GTextureToolParams.Instance.TreeDistribution;

            param.Terrain     = EditorGUILayout.ObjectField("Terrain", param.Terrain, typeof(GStylizedTerrain), true) as GStylizedTerrain;
            param.BrushMask   = GEditorCommon.InlineTexture2DField("Brush", param.BrushMask, -1);
            param.Opacity     = EditorGUILayout.Slider("Opacity", param.Opacity, 0f, 1f);
            param.Size        = EditorGUILayout.Slider("Size", param.Size, 0f, 1f);
            param.RotationMin = EditorGUILayout.FloatField("Rotation Min", param.RotationMin);
            param.RotationMax = EditorGUILayout.FloatField("Rotation Max", param.RotationMax);
            EditorGUILayout.LabelField("Trees");
            if (param.Terrain == null ||
                param.Terrain.TerrainData == null ||
                param.Terrain.TerrainData.Foliage.Trees == null ||
                param.Terrain.TerrainData.Foliage.Trees.Prototypes.Count == 0)
            {
                EditorGUILayout.LabelField("No tree found!", GEditorCommon.WordWrapItalicLabel);
            }
            else
            {
                List <GTreePrototype> prototypes = param.Terrain.TerrainData.Foliage.Trees.Prototypes;
                GSelectionGridArgs    args       = new GSelectionGridArgs();
                args.collection            = prototypes;
                args.selectedIndices       = param.TreePrototypeIndices;
                args.itemSize              = GEditorCommon.selectionGridTileSizeSmall;
                args.itemPerRow            = 4;
                args.drawPreviewFunction   = GEditorCommon.DrawTreePreview;
                args.simpleMode            = true;
                param.TreePrototypeIndices = GEditorCommon.MultiSelectionGrid(args);
            }

            EditorGUILayout.LabelField("Grasses");
            if (param.Terrain == null ||
                param.Terrain.TerrainData == null ||
                param.Terrain.TerrainData.Foliage.Grasses == null ||
                param.Terrain.TerrainData.Foliage.Grasses.Prototypes.Count == 0)
            {
                EditorGUILayout.LabelField("No grass found!", GEditorCommon.WordWrapItalicLabel);
            }
            else
            {
                List <GGrassPrototype> prototypes = param.Terrain.TerrainData.Foliage.Grasses.Prototypes;
                GSelectionGridArgs     args       = new GSelectionGridArgs();
                args.collection             = prototypes;
                args.selectedIndices        = param.GrassPrototypeIndices;
                args.itemSize               = GEditorCommon.selectionGridTileSizeSmall;
                args.itemPerRow             = 4;
                args.drawPreviewFunction    = GEditorCommon.DrawGrassPreview;
                args.simpleMode             = true;
                param.GrassPrototypeIndices = GEditorCommon.MultiSelectionGrid(args);
            }

            lockLivePreviewTerrain = true;
            SetLivePreviewTerrain(param.Terrain);

            GTextureToolParams.Instance.TreeDistribution = param;
        }
        private void DrawObjectSelectionGUI()
        {
            string label = "Objects";
            string id    = "objects" + painter.GetInstanceID().ToString();

            GEditorCommon.Foldout(label, true, id, () =>
            {
                if (painter.Prototypes.Count > 0)
                {
                    GSelectionGridArgs args          = new GSelectionGridArgs();
                    args.collection                  = painter.Prototypes;
                    args.selectedIndices             = painter.SelectedPrototypeIndices;
                    args.itemSize                    = GEditorCommon.selectionGridTileSizeSmall;
                    args.itemPerRow                  = 4;
                    args.drawPreviewFunction         = GEditorCommon.DrawGameObjectPreview;
                    args.contextClickFunction        = OnObjectSelectorContextClick;
                    painter.SelectedPrototypeIndices = GEditorCommon.MultiSelectionGrid(args);
                }
                else
                {
                    EditorGUILayout.LabelField("No Game Object found!", GEditorCommon.WordWrapItalicLabel);
                }
                GEditorCommon.Separator();

                Rect r1           = EditorGUILayout.GetControlRect(GUILayout.Height(GEditorCommon.objectSelectorDragDropHeight));
                GameObject prefab = GEditorCommon.ObjectSelectorDragDrop <GameObject>(r1, "Drop a Game Object here!", "t:GameObject");
                if (prefab != null)
                {
                    painter.Prototypes.AddIfNotContains(prefab);
                }

                GEditorCommon.SpacePixel(0);
                Rect r2 = EditorGUILayout.GetControlRect(GUILayout.Height(GEditorCommon.objectSelectorDragDropHeight));
                GPrefabPrototypeGroup group = GEditorCommon.ObjectSelectorDragDrop <GPrefabPrototypeGroup>(r2, "Drop a Prefab Prototype Group here!", "t:GPrefabPrototypeGroup");
                if (group != null)
                {
                    painter.Prototypes.AddIfNotContains(group.Prototypes);
                }
            });
        }
Пример #5
0
        private void ShowPaintModeAsGrid()
        {
            GSelectionGridArgs args0 = new GSelectionGridArgs();

            args0.selectedIndex       = (int)painter.Mode;
            args0.collection          = Enum.GetValues(typeof(GFoliagePaintingMode));
            args0.itemSize            = GEditorCommon.selectionGridTileSizeWide;
            args0.itemPerRow          = 2;
            args0.drawPreviewFunction = DrawModePreview;
            EditorGUI.BeginChangeCheck();
            painter.Mode = (GFoliagePaintingMode)GEditorCommon.SelectionGrid(args0);
            if (EditorGUI.EndChangeCheck())
            {
                RecordPaintModeAnalytics();
            }

            if (painter.Mode == GFoliagePaintingMode.Custom)
            {
                GEditorCommon.Separator();
                List <Type> customPainterTypes = GFoliagePainter.CustomPainterTypes;
                if (customPainterTypes.Count == 0)
                {
                    EditorGUILayout.LabelField("No Custom Painter defined!", GEditorCommon.WordWrapItalicLabel);
                }
                else
                {
                    GSelectionGridArgs args1 = new GSelectionGridArgs();
                    args1.selectedIndex        = painter.CustomPainterIndex;
                    args1.collection           = customPainterTypes;
                    args1.itemSize             = GEditorCommon.selectionGridTileSizeWide;
                    args1.itemPerRow           = 2;
                    args1.drawPreviewFunction  = DrawCustomMode;
                    painter.CustomPainterIndex = GEditorCommon.SelectionGrid(args1);
                    GEditorCommon.Separator();
                    painter.CustomPainterArgs = EditorGUILayout.TextField("Custom Args", painter.CustomPainterArgs);
                }
            }
        }