Ejemplo n.º 1
0
        protected override void PreviewInSceneInternal(WorldStampCreator parent)
        {
            var bounds = parent.Template.Bounds;

            if (_maskPainter == null)
            {
                _maskPainter      = new Painter(Mask, GridManager);
                _maskPainter.Ramp = new Gradient()
                {
                    colorKeys = new[] { new GradientColorKey(Color.red, 0), new GradientColorKey(Color.black, 0.001f), new GradientColorKey(Color.black, 1), },
                    alphaKeys = new[] { new GradientAlphaKey(1, 0), new GradientAlphaKey(0, 1), }
                };
                _maskPainter.Rect = new Rect(bounds.min.xz(), bounds.size.xz());
            }
            else
            {
                GridSize = WorldStampCreator.GetMinGridSize(bounds, parent.Template.Terrain);
                _maskPainter.GridManager = GridManager;
                _maskPainter.Canvas      = Mask;
                _maskPainter.MaxValue    = 1;
                _maskPainter.MinValue    = 0;
                _maskPainter.Rect        = new Rect(Vector2.zero, bounds.size.xz());
                _maskPainter.TRS         = Matrix4x4.TRS(bounds.min, Quaternion.identity, Vector3.one);
                //_maskPainter.Repaint();
                _maskPainter.PaintingEnabled = true;
                _maskPainter.OnSceneGUI();
            }
        }
Ejemplo n.º 2
0
 public override void Dispose()
 {
     if (_maskPainter != null)
     {
         _maskPainter.Destroy();
         _maskPainter = null;
     }
 }
Ejemplo n.º 3
0
        public override void DrawGUI(WorldStampCreator parent)
        {
            if (parent.SceneGUIOwner != this && _maskPainter != null)
            {
                _maskPainter.Canvas = null;
            }
            if (_maskPainter != null && _maskPainter.Canvas != null && _maskPainter.Canvas != Mask)
            {
                _maskPainter.Canvas  = null;
                parent.SceneGUIOwner = null;
            }
            if (Mask.Count == 0 || LastBounds != parent.Template.Bounds)
            {
                ResetMask(parent.Template.Bounds, parent.Template.Terrain);
            }

            EditorExtensions.Seperator();
            EditorGUILayout.BeginHorizontal();

            GUIExpanded = EditorGUILayout.Foldout(GUIExpanded, Label);
            var previewContent = new GUIContent("Edit");

            previewContent.tooltip = "Edit the mask for this stamp.";
            GUI.color = parent.SceneGUIOwner == this ? Color.green : Color.white;
            if (GUILayout.Button(previewContent, EditorStyles.miniButton, GUILayout.Width(60), GUILayout.Height(16)))
            {
                if (parent.SceneGUIOwner == this && _maskPainter != null)
                {
                    _maskPainter.Destroy();
                    _maskPainter = null;
                }
                parent.SceneGUIOwner = parent.SceneGUIOwner == this ? null : this;
                if ((parent.Template.Bounds.size - LastBounds.size).magnitude > 1)
                {
                    ResetMask(parent.Template.Bounds, parent.Template.Terrain);
                }
                GUIUtility.ExitGUI();
                return;
            }
            GUI.color = Color.white;
            EditorGUILayout.EndHorizontal();

            if (GUIExpanded)
            {
                GUI.enabled = Enabled;
                EditorGUI.indentLevel++;
                EditorGUI.BeginChangeCheck();
                OnExpandedGUI(parent);
                if (EditorGUI.EndChangeCheck())
                {
                    NeedsRecapture = true;
                }
                EditorGUI.indentLevel--;
                GUI.enabled = true;
            }
        }