private Transform CreatePipeline(CinemachineVirtualCamera copyFrom) { CinemachineComponentBase[] array = null; if (copyFrom != null) { copyFrom.InvalidateComponentPipeline(); array = copyFrom.GetComponentPipeline(); } Transform result; if (CinemachineVirtualCamera.CreatePipelineOverride != null) { result = CinemachineVirtualCamera.CreatePipelineOverride(this, "cm", array); } else { GameObject gameObject = new GameObject("cm"); gameObject.transform.parent = base.transform; gameObject.AddComponent <CinemachinePipeline>(); result = gameObject.transform; if (array != null) { foreach (CinemachineComponentBase component in array) { ReflectionHelpers.CopyFields(component, gameObject.AddComponent(component.GetType()), BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); } } } base.PreviousStateIsValid = false; return(result); }
/// <summary>Create a default pipeline container.</summary> private Transform CreatePipeline(CinemachineVirtualCamera copyFrom) { CinemachineComponentBase[] components = null; if (copyFrom != null) { copyFrom.InvalidateComponentPipeline(); // make sure it's up to date components = copyFrom.GetComponentPipeline(); } Transform newPipeline = null; if (CreatePipelineOverride != null) { newPipeline = CreatePipelineOverride(this, PipelineName, components); } else { var go = new GameObject(PipelineName); go.transform.parent = transform; go.AddComponent <CinemachinePipeline>(); newPipeline = go.transform; // If copying, transfer the components if (components != null) { foreach (Component c in components) { ReflectionHelpers.CopyFields(c, go.AddComponent(c.GetType())); } } } PreviousStateIsValid = false; return(newPipeline); }
/// <summary>Create a default pipeline container. /// Note: copyFrom only supported in Editor, not build</summary> private Transform CreatePipeline(CinemachineVirtualCamera copyFrom) { CinemachineComponentBase[] components = null; if (copyFrom != null) { copyFrom.InvalidateComponentPipeline(); // make sure it's up to date components = copyFrom.GetComponentPipeline(); } Transform newPipeline = null; if (CreatePipelineOverride != null) { newPipeline = CreatePipelineOverride(this, PipelineName, components); } else { GameObject go = new GameObject(PipelineName); go.transform.parent = transform; go.AddComponent <CinemachinePipeline>(); newPipeline = go.transform; } PreviousStateIsValid = false; return(newPipeline); }
static Cinemachine.CinemachineVirtualCamera InternalCreateVirtualCamera( string name, bool selectIt, params Type[] components) { // Create a new virtual camera CreateCameraBrainIfAbsent(); GameObject go = Cinemachine.Editor.InspectorUtility.CreateGameObject( GenerateUniqueObjectName(typeof(Cinemachine.CinemachineVirtualCamera), name), typeof(Cinemachine.CinemachineVirtualCamera)); if (SceneView.lastActiveSceneView != null) { go.transform.position = SceneView.lastActiveSceneView.pivot; } Undo.RegisterCreatedObjectUndo(go, "create " + name); Cinemachine.CinemachineVirtualCamera vcam = go.GetComponent <Cinemachine.CinemachineVirtualCamera>(); GameObject componentOwner = vcam.GetComponentOwner().gameObject; foreach (Type t in components) { Undo.AddComponent(componentOwner, t); } vcam.InvalidateComponentPipeline(); if (selectIt) { Selection.activeObject = go; } return(vcam); }
static int InvalidateComponentPipeline(IntPtr L) { try { ToLua.CheckArgsCount(L, 1); Cinemachine.CinemachineVirtualCamera obj = (Cinemachine.CinemachineVirtualCamera)ToLua.CheckObject <Cinemachine.CinemachineVirtualCamera>(L, 1); obj.InvalidateComponentPipeline(); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
/// <summary> /// Create a default pipeline container. /// </summary> private Transform CreatePipeline(CinemachineVirtualCamera copyFrom) { ICinemachineComponent[] components = null; if (copyFrom != null) { copyFrom.InvalidateComponentPipeline(); // make sure it's up to date components = copyFrom.GetComponentPipeline(); } // Do the same thing with undo-support if (CreatePipelineOverride != null) { m_ComponentOwner = CreatePipelineOverride(this, PipelineName, components); } else { // Delete all existing pipeline childen List <Transform> list = new List <Transform>(); foreach (Transform child in transform) { if (child.GetComponent <CinemachinePipeline>() != null) { list.Add(child); } } foreach (Transform child in list) { DestroyImmediate(child.gameObject); } // Create a new pipeline GameObject go = new GameObject(PipelineName); go.transform.parent = transform; go.AddComponent <CinemachinePipeline>(); m_ComponentOwner = go.transform; // If copying, transfer the components if (components != null) { foreach (Component c in components) { ReflectionHelpers.CopyFields(c, go.AddComponent(c.GetType())); } } } return(m_ComponentOwner); }
private void CreateRigs(CinemachineVirtualCamera[] copyFrom) { // Invalidate the cache m_Rigs = null; mOribitals = null; string[] rigNames = RigNames; float[] softCenterDefaultsV = new float[] { 0.5f, 0.55f, 0.6f }; for (int i = 0; i < rigNames.Length; ++i) { CinemachineVirtualCamera src = null; if (copyFrom != null && copyFrom.Length > i) { src = copyFrom[i]; } CinemachineVirtualCamera rig = null; if (CreateRigOverride != null) { rig = CreateRigOverride(this, rigNames[i], src); } else { // If there is an existing rig with this name, delete it List <Transform> list = new List <Transform>(); foreach (Transform child in transform) { if (child.GetComponent <CinemachineVirtualCamera>() != null && child.gameObject.name == rigNames[i]) { list.Add(child); } } foreach (Transform child in list) { DestroyImmediate(child.gameObject); } // Create a new rig with default components GameObject go = new GameObject(rigNames[i]); go.transform.parent = transform; rig = go.AddComponent <CinemachineVirtualCamera>(); if (src != null) { ReflectionHelpers.CopyFields(src, rig); } else { go = rig.GetComponentOwner().gameObject; go.AddComponent <CinemachineOrbitalTransposer>(); go.AddComponent <CinemachineComposer>(); } } // Set up the defaults rig.InvalidateComponentPipeline(); CinemachineOrbitalTransposer orbital = rig.GetCinemachineComponent <CinemachineOrbitalTransposer>(); if (orbital == null) { orbital = rig.AddCinemachineComponent <CinemachineOrbitalTransposer>(); // should not happen } if (src == null) { // Only set defaults if not copying orbital.m_Radius = DefaultRadius[i]; orbital.m_HeightOffset = DefaultHeight[i]; CinemachineComposer composer = rig.GetCinemachineComponent <CinemachineComposer>(); if (composer != null) { composer.m_HorizontalDamping = composer.m_VerticalDamping = 0; composer.m_ScreenX = 0.5f; composer.m_ScreenY = softCenterDefaultsV[i]; composer.m_DeadZoneWidth = composer.m_DeadZoneHeight = 0; composer.m_SoftZoneWidth = composer.m_SoftZoneHeight = 0.8f; composer.m_BiasX = composer.m_BiasY = 0; } } } }