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); } }); }
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); } } }