// 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; } }
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(); } }; } }