protected override void AwakeOverride()
        {
            WindowType = RuntimeWindowType.Custom;
            base.AwakeOverride();

            m_tool                   = IOC.Resolve <IMeshDeformerTool>();
            m_tool.ModeChanged      += OnModeChanged;
            m_tool.SelectionChanged += OnSelectionChanged;

            Editor.Selection.SelectionChanged += OnEditorSelectionChanged;

            m_commandsList.ItemClick       += OnItemClick;
            m_commandsList.ItemDataBinding += OnItemDataBinding;
            m_commandsList.ItemExpanding   += OnItemExpanding;
            m_commandsList.ItemBeginDrag   += OnItemBeginDrag;
            m_commandsList.ItemDrop        += OnItemDrop;
            m_commandsList.ItemDragEnter   += OnItemDragEnter;
            m_commandsList.ItemDragExit    += OnItemDragExit;
            m_commandsList.ItemEndDrag     += OnItemEndDrag;

            m_commandsList.CanEdit        = false;
            m_commandsList.CanReorder     = false;
            m_commandsList.CanReparent    = false;
            m_commandsList.CanSelectAll   = false;
            m_commandsList.CanUnselectAll = true;
            m_commandsList.CanRemove      = false;

            UnityEventHelper.AddListener(m_toggleObject, o => o.onValueChanged, OnObjectMode);
            UnityEventHelper.AddListener(m_toggleControlPoints, o => o.onValueChanged, OnControlPointMode);
        }
        protected override void AwakeOverride()
        {
            WindowType = RuntimeWindowType.Custom;
            base.AwakeOverride();

            m_localization = IOC.Resolve <ILocalization>();

            m_tool                   = IOC.Resolve <IMeshDeformerTool>();
            m_tool.ModeChanged      += OnModeChanged;
            m_tool.SelectionChanged += OnSelectionChanged;

            m_runtimeEditor = IOC.Resolve <IRuntimeEditor>();
            m_runtimeEditor.SceneLoading += OnSceneLoading;
            m_runtimeEditor.SceneLoaded  += OnSceneLoaded;
            m_runtimeEditor.Selection.SelectionChanged += OnEditorSelectionChanged;
            m_runtimeEditor.Undo.UndoCompleted         += OnEditorUndo;
            m_runtimeEditor.Undo.RedoCompleted         += OnEditorRedo;
            m_runtimeEditor.Undo.StateChanged          += OnEditorUndoStateChanged;

            m_commandsList.ItemClick       += OnItemClick;
            m_commandsList.ItemDataBinding += OnItemDataBinding;
            m_commandsList.ItemExpanding   += OnItemExpanding;
            m_commandsList.ItemBeginDrag   += OnItemBeginDrag;
            m_commandsList.ItemDrop        += OnItemDrop;
            m_commandsList.ItemDragEnter   += OnItemDragEnter;
            m_commandsList.ItemDragExit    += OnItemDragExit;
            m_commandsList.ItemEndDrag     += OnItemEndDrag;

            m_commandsList.CanEdit        = false;
            m_commandsList.CanReorder     = false;
            m_commandsList.CanReparent    = false;
            m_commandsList.CanSelectAll   = false;
            m_commandsList.CanUnselectAll = true;
            m_commandsList.CanRemove      = false;

            UnityEventHelper.AddListener(m_toggleObject, o => o.onValueChanged, OnObjectMode);
            UnityEventHelper.AddListener(m_toggleControlPoints, o => o.onValueChanged, OnControlPointMode);
            UnityEventHelper.AddListener(m_toggleSettings, o => o.onValueChanged, OnSettings);

            m_showTerminalPointsEditor.Init(m_tool, Strong.PropertyInfo((IMeshDeformerTool x) => x.ShowTerminalPoints), m_localization.GetString("ID_RTDeformer_View_ShowTerminalPoints"));

            m_showOriginalMeshEditor.Init(m_tool, Strong.PropertyInfo((IMeshDeformerTool x) => x.ShowOriginal), m_localization.GetString("ID_RTDeformer_View_ShowOriginal"));

            m_pointsPerSegmentEditor.Min = 0;
            m_pointsPerSegmentEditor.Max = 10;
            m_pointsPerSegmentEditor.Init(m_tool, Strong.PropertyInfo((IMeshDeformerTool x) => x.PointsPerSegment), m_localization.GetString("ID_RTDeformer_View_PointsPerSegment"));
        }