コード例 #1
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);
        }
コード例 #2
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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
    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));
     }
 }
コード例 #6
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);
        }
コード例 #7
0
ファイル: CinemachineFreeLook.cs プロジェクト: RyanM7/IR2
        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;
                    }
                }
            }
        }