static CreateRigWithUndo()
 {
     CinemachineFreeLook.CreateRigOverride
         = (CinemachineFreeLook vcam, string name, CinemachineVirtualCamera copyFrom) =>
         {
         // Create a new rig with default components
         GameObject go = InspectorUtility.CreateGameObject(name);
         Undo.RegisterCreatedObjectUndo(go, "created rig");
         Undo.SetTransformParent(go.transform, vcam.transform, "parenting rig");
         CinemachineVirtualCamera rig = Undo.AddComponent <CinemachineVirtualCamera>(go);
         Undo.RecordObject(rig, "creating rig");
         if (copyFrom != null)
         {
             ReflectionHelpers.CopyFields(copyFrom, rig);
         }
         else
         {
             go = rig.GetComponentOwner().gameObject;
             Undo.RecordObject(Undo.AddComponent <CinemachineOrbitalTransposer>(go), "creating rig");
             Undo.RecordObject(Undo.AddComponent <CinemachineComposer>(go), "creating rig");
         }
         return(rig);
         };
     CinemachineFreeLook.DestroyRigOverride = (GameObject rig) =>
     {
         Undo.DestroyObjectImmediate(rig);
     };
 }
Пример #2
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 GetComponentOwner(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Cinemachine.CinemachineVirtualCamera obj = (Cinemachine.CinemachineVirtualCamera)ToLua.CheckObject <Cinemachine.CinemachineVirtualCamera>(L, 1);
         UnityEngine.Transform o = obj.GetComponentOwner();
         ToLua.Push(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Пример #4
0
            static CreateRigWithUndo()
            {
                CinemachineFreeLook.CreateRigOverride
                    = (CinemachineFreeLook vcam, string name, CinemachineVirtualCamera copyFrom) =>
                    {
                    // If there is an existing rig with this name, delete it
                    List <Transform> list = new List <Transform>();
                    foreach (Transform child in vcam.transform)
                    {
                        if (child.GetComponent <CinemachineVirtualCamera>() != null &&
                            child.gameObject.name == name)
                        {
                            list.Add(child);
                        }
                    }
                    foreach (Transform child in list)
                    {
                        Undo.DestroyObjectImmediate(child.gameObject);
                    }

                    // Create a new rig with default components
                    GameObject go = new GameObject(name);
                    Undo.RegisterCreatedObjectUndo(go, "created rig");
                    Undo.SetTransformParent(go.transform, vcam.transform, "parenting rig");
                    CinemachineVirtualCamera rig = Undo.AddComponent <CinemachineVirtualCamera>(go);
                    Undo.RecordObject(rig, "creating rig");
                    if (copyFrom != null)
                    {
                        ReflectionHelpers.CopyFields(copyFrom, rig);
                    }
                    else
                    {
                        go = rig.GetComponentOwner().gameObject;
                        Undo.RecordObject(Undo.AddComponent <CinemachineOrbitalTransposer>(go), "creating rig");
                        Undo.RecordObject(Undo.AddComponent <CinemachineComposer>(go), "creating rig");
                    }
                    return(rig);
                    };
                CinemachineFreeLook.DestroyRigOverride = (GameObject rig) =>
                {
                    Undo.DestroyObjectImmediate(rig);
                };
            }
Пример #5
0
        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;
                    }
                }
            }
        }