示例#1
0
        /// <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);
        }
示例#2
0
        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.
        /// 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 int GetComponentPipeline(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Cinemachine.CinemachineVirtualCamera   obj = (Cinemachine.CinemachineVirtualCamera)ToLua.CheckObject <Cinemachine.CinemachineVirtualCamera>(L, 1);
         Cinemachine.CinemachineComponentBase[] o   = obj.GetComponentPipeline();
         ToLua.Push(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
示例#5
0
        /// <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);
        }
示例#6
0
        protected override void ConnectToVcam(bool connect)
        {
            base.ConnectToVcam(connect);

            CinemachineVirtualCamera vcam = VirtualCamera as CinemachineVirtualCamera;

            if (vcam == null)
            {
                return;
            }

            var components = vcam.GetComponentPipeline();

            foreach (var component in components)
            {
                if (component.BodyAppliesAfterAim)
                {
                    var extraState = GetExtraState <VcamExtraState>(vcam);
                    extraState.applyAfterAim = true;
                    break;
                }
            }
        }