// Call from editor's OnEnable
 public void Initialize(
     VcamStageEditor.GetComponentDelegate getComponent,
     VcamStageEditor.SetComponentDelegate setComponent)
 {
     m_subeditors = new VcamStageEditor[(int)CinemachineCore.Stage.Finalize];
     for (CinemachineCore.Stage stage = CinemachineCore.Stage.Body;
          stage < CinemachineCore.Stage.Finalize; ++stage)
     {
         var ed = new VcamStageEditor(stage);
         m_subeditors[(int)stage] = ed;
         ed.GetComponent          = getComponent;
         ed.SetComponent          = setComponent;
     }
 }
Ejemplo n.º 2
0
        public void CreateSubeditors(UnityEditor.Editor parentEditor)
        {
            mParentEditor = parentEditor;
            m_subeditors  = new VcamStageEditor[(int)CinemachineCore.Stage.Finalize];
            CinemachineNewVirtualCamera owner = mParentEditor == null
                ? null : mParentEditor.target as CinemachineNewVirtualCamera;

            if (owner == null)
            {
                return;
            }
            for (CinemachineCore.Stage stage = CinemachineCore.Stage.Body;
                 stage < CinemachineCore.Stage.Finalize; ++stage)
            {
                var ed = new VcamStageEditor(stage, owner.gameObject);
                m_subeditors[(int)stage] = ed;
                ed.SetComponent          = (type)
                                           => {
                    var vcam = mParentEditor.target as CinemachineNewVirtualCamera;
                    if (vcam != null)
                    {
                        var c = Undo.AddComponent(vcam.gameObject, type);
                        c.hideFlags |= HideFlags.HideInInspector;
                        vcam.InvalidateComponentCache();
                    }
                };
                ed.DestroyComponent = (component)
                                      => {
                    var vcam = mParentEditor.target as CinemachineNewVirtualCamera;
                    if (vcam != null)
                    {
                        Undo.DestroyObjectImmediate(component);
                        vcam.InvalidateComponentCache();
                    }
                };
            }
        }