public void Paint(GTexturePainterArgs args)
        {
            IGTexturePainter p = ActivePainter;

            if (p == null)
            {
                return;
            }

            FillArgs(ref args);

#if UNITY_EDITOR
            if (args.MouseEventType == GPainterMouseEventType.Down)
            {
                Editor_CreateInitialHistoryEntry(args);
            }
#endif

            IEnumerator <GStylizedTerrain> terrains = GStylizedTerrain.ActiveTerrains.GetEnumerator();
            while (terrains.MoveNext())
            {
                if (terrains.Current.GroupId != GroupId && GroupId >= 0)
                {
                    continue;
                }
                p.Paint(terrains.Current, args);
            }

#if UNITY_EDITOR
            if (args.MouseEventType == GPainterMouseEventType.Up)
            {
                Editor_CreateHistory(args);
            }
#endif
        }
Exemplo n.º 2
0
        public override void OnInspectorGUI()
        {
            EditorGUI.BeginChangeCheck();
            painter.GroupId                  = GEditorCommon.ActiveTerrainGroupPopupWithAllOption("Group Id", painter.GroupId);
            painter.ForceUpdateGeometry      = EditorGUILayout.Toggle("Force Update Geometry", painter.ForceUpdateGeometry);
            painter.Editor_EnableHistory     = EditorGUILayout.Toggle("Enable History", painter.Editor_EnableHistory);
            painter.Editor_EnableLivePreview = EditorGUILayout.Toggle("Enable Live Preview", painter.Editor_EnableLivePreview);

            bool isMaskPainterInUsed = painter.ActivePainter is GMaskPainter;

            if (!isMaskPainterInUsed)
            {
                painter.EnableTerrainMask = EditorGUILayout.Toggle("Enable Terrain Mask", painter.EnableTerrainMask);
            }
            GEditorSettings.Instance.topographic.enable = EditorGUILayout.Toggle("Enable Topographic", GEditorSettings.Instance.topographic.enable);

            DrawPaintMode();
            IGTexturePainter p = painter.ActivePainter;

            if (p == null)
            {
                EditorGUILayout.LabelField("No painter found!", GEditorCommon.WordWrapItalicLabel);
            }
            else
            {
                DrawInstructionGUI();
                DrawBrushMaskGUI();
                if (painter.Mode == GTexturePaintingMode.Splat || painter.Mode == GTexturePaintingMode.Custom)
                {
                    DrawSplatGUI();
                }
                DrawBrushGUI();
                if (painter.ActivePainter != null && painter.ActivePainter is IGTexturePainterWithCustomParams)
                {
                    IGTexturePainterWithCustomParams activePainter = painter.ActivePainter as IGTexturePainterWithCustomParams;
                    activePainter.Editor_DrawCustomParamsGUI();
                }
                GEditorCommon.DrawBackupHelpBox();
            }

            if (EditorGUI.EndChangeCheck())
            {
                GUtilities.MarkCurrentSceneDirty();
            }
        }
        public void Paint(GTexturePainterArgs args)
        {
            IGTexturePainter p = ActivePainter;

            if (p == null)
            {
                return;
            }

            FillArgs(ref args);

#if UNITY_EDITOR
            List <GStylizedTerrain> overlappedTerrain = GPaintToolUtilities.CheckBrushOverlap(groupId, args.WorldPointCorners);
            if (args.MouseEventType == GPainterMouseEventType.Down ||
                args.MouseEventType == GPainterMouseEventType.Drag)
            {
                Editor_CreateInitialHistoryEntry(args, overlappedTerrain);
            }
#endif

            IEnumerator <GStylizedTerrain> terrains = GStylizedTerrain.ActiveTerrains.GetEnumerator();
            while (terrains.MoveNext())
            {
                if (terrains.Current.GroupId != GroupId && GroupId >= 0)
                {
                    continue;
                }
                p.Paint(terrains.Current, args);
            }

#if UNITY_EDITOR
            EditedTerrains.UnionWith(overlappedTerrain);
            if (args.MouseEventType == GPainterMouseEventType.Up)
            {
                Editor_CreateHistory(args);
                currentInitialBackupName = null;
                InitialRecordedTerrains.Clear();
                EditedTerrains.Clear();
            }
#endif
        }