Paint() 추상적인 개인적인 메소드

abstract private Paint ( bool paintAll ) : void
paintAll bool
리턴 void
예제 #1
0
        /// <summary>
        /// Get input
        /// </summary>
        /// <param name="method">Delegate method</param>
        /// <param name="position">Mouse world position</param>
        /// <param name="active">Is painting</param>
        /// <param name="saveMsg">Undo message</param>
        internal static void Update(TP component, tp_ComponentBaseEditor target, ref Vector3 position, ref bool active, string saveMsg = default(string))
        {
            // Get current event
            Event current = Event.current;

            // checkkeys
            int controlID = GUIUtility.GetControlID(TP.HashCode, FocusType.Passive);
            int hotControl = GUIUtility.hotControl;
            EventType filteredControlID = current.GetTypeForControl(controlID);

            switch (filteredControlID)
            {
                // (If mouse down or mouse drag)
                case EventType.MouseDown:
                case EventType.MouseDrag:
                    // Check if current control is Terrain Painter control
                    if (hotControl != controlID && (hotControl != 0) || TP.Instance.SplatmapLock || RotateButtonPressed) { return; }
                    if (current.button != 0 || HandleUtility.nearestControl != controlID || (TP.Instance.EditingTool == EditingTool.Texture && TP.Instance.SplatTool == SplatTool.None)) { return; }

                    if (current.type == EventType.MouseDown) { GUIUtility.hotControl = controlID; }
                    if (!GetPosition(out position)) { break; }
                    if (current.type == EventType.MouseDown)
                    {
                        // Save current splatmap
                        TP.Instance.History.CreateRestorePoint(target.UndoType, saveMsg);
                        if (TP.Instance.Noise.GenerateOnClick) { TP.Instance.Noise.Generate(new Point(component.TerrainData.alphamapWidth, component.TerrainData.alphamapHeight)); }
                    }
                    
                    // Run method, and Painting is in use
                    if (target != null) { target.Paint(false); }
                    active = true;
                    current.Use();
                    break;

                // Update projector position
                case EventType.MouseMove:
                    if (GetPosition(out position)) { HandleUtility.Repaint(); }
                    break;

                // Disable painting, and current control is not Terrain Painter any more
                case EventType.MouseUp:
                    active = false;
                    if (hotControl != controlID || TP.Instance.SplatmapLock) { return; }
                    GUIUtility.hotControl = hotControl = 0;
                    if (TP.Instance.EditingTool == EditingTool.Texture && TP.Instance.SplatTool == SplatTool.None) { return; }
                    current.Use();
                    break;

                // Disable the selection tool
                case EventType.Layout:
                    if (RotateButtonPressed)
                    {
                        HandleUtility.AddDefaultControl(controlID);
                        HandleUtility.Repaint();
                        current.Use();
                        break;
                    }
                    if ((TP.Instance.EditingTool == EditingTool.Texture && TP.Instance.SplatTool == SplatTool.None) || TP.Instance.SplatmapLock) { return; }
                    HandleUtility.AddDefaultControl(controlID);
                    break;
            }
        }
예제 #2
0
        /// <summary>
        /// Get input
        /// </summary>
        /// <param name="method">Delegate method</param>
        /// <param name="position">Mouse world position</param>
        /// <param name="active">Is painting</param>
        /// <param name="saveMsg">Undo message</param>
        internal static void Update(TP component, tp_ComponentBaseEditor target, ref Vector3 position, ref bool active, string saveMsg = default(string))
        {
            // Get current event
            Event current = Event.current;

            // checkkeys
            int       controlID         = GUIUtility.GetControlID(TP.HashCode, FocusType.Passive);
            int       hotControl        = GUIUtility.hotControl;
            EventType filteredControlID = current.GetTypeForControl(controlID);

            switch (filteredControlID)
            {
            // (If mouse down or mouse drag)
            case EventType.MouseDown:
            case EventType.MouseDrag:
                // Check if current control is Terrain Painter control
                if (hotControl != controlID && (hotControl != 0) || TP.Instance.SplatmapLock || RotateButtonPressed)
                {
                    return;
                }
                if (current.button != 0 || HandleUtility.nearestControl != controlID || (TP.Instance.EditingTool == EditingTool.Texture && TP.Instance.SplatTool == SplatTool.None))
                {
                    return;
                }

                if (current.type == EventType.MouseDown)
                {
                    GUIUtility.hotControl = controlID;
                }
                if (!GetPosition(out position))
                {
                    break;
                }
                if (current.type == EventType.MouseDown)
                {
                    // Save current splatmap
                    TP.Instance.History.CreateRestorePoint(target.UndoType, saveMsg);
                    if (TP.Instance.Noise.GenerateOnClick)
                    {
                        TP.Instance.Noise.Generate(new Point(component.TerrainData.alphamapWidth, component.TerrainData.alphamapHeight));
                    }
                }

                // Run method, and Painting is in use
                if (target != null)
                {
                    target.Paint(false);
                }
                active = true;
                current.Use();
                break;

            // Update projector position
            case EventType.MouseMove:
                if (GetPosition(out position))
                {
                    HandleUtility.Repaint();
                }
                break;

            // Disable painting, and current control is not Terrain Painter any more
            case EventType.MouseUp:
                active = false;
                if (hotControl != controlID || TP.Instance.SplatmapLock)
                {
                    return;
                }
                GUIUtility.hotControl = hotControl = 0;
                if (TP.Instance.EditingTool == EditingTool.Texture && TP.Instance.SplatTool == SplatTool.None)
                {
                    return;
                }
                current.Use();
                break;

            // Disable the selection tool
            case EventType.Layout:
                if (RotateButtonPressed)
                {
                    HandleUtility.AddDefaultControl(controlID);
                    HandleUtility.Repaint();
                    current.Use();
                    break;
                }
                if ((TP.Instance.EditingTool == EditingTool.Texture && TP.Instance.SplatTool == SplatTool.None) || TP.Instance.SplatmapLock)
                {
                    return;
                }
                HandleUtility.AddDefaultControl(controlID);
                break;
            }
        }