static int MoveToTopOfPrioritySubqueue(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)ToLua.CheckObject <Cinemachine.CinemachineVirtualCameraBase>(L, 1);
         obj.MoveToTopOfPrioritySubqueue();
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int RemovePostPipelineStageHook(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)ToLua.CheckObject <Cinemachine.CinemachineVirtualCameraBase>(L, 1);
         Cinemachine.CinemachineVirtualCameraBase.OnPostPipelineStageDelegate arg0 = (Cinemachine.CinemachineVirtualCameraBase.OnPostPipelineStageDelegate)ToLua.CheckDelegate <Cinemachine.CinemachineVirtualCameraBase.OnPostPipelineStageDelegate>(L, 2);
         obj.RemovePostPipelineStageHook(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int IsLiveChild(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         Cinemachine.CinemachineVirtualCameraBase obj  = (Cinemachine.CinemachineVirtualCameraBase)ToLua.CheckObject <Cinemachine.CinemachineVirtualCameraBase>(L, 1);
         Cinemachine.ICinemachineCamera           arg0 = (Cinemachine.ICinemachineCamera)ToLua.CheckObject <Cinemachine.ICinemachineCamera>(L, 2);
         bool o = obj.IsLiveChild(arg0);
         LuaDLL.lua_pushboolean(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int UpdateCameraState(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 3);
         Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)ToLua.CheckObject <Cinemachine.CinemachineVirtualCameraBase>(L, 1);
         UnityEngine.Vector3 arg0 = ToLua.ToVector3(L, 2);
         float arg1 = (float)LuaDLL.luaL_checknumber(L, 3);
         obj.UpdateCameraState(arg0, arg1);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
    static int get_ParentCamera(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            Cinemachine.ICinemachineCamera           ret = obj.ParentCamera;
            ToLua.PushObject(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index ParentCamera on a nil value"));
        }
    }
    static int get_State(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            Cinemachine.CameraState ret = obj.State;
            ToLua.PushValue(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index State on a nil value"));
        }
    }
    static int set_PreviousStateIsValid(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            bool arg0 = LuaDLL.luaL_checkboolean(L, 2);
            obj.PreviousStateIsValid = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index PreviousStateIsValid on a nil value"));
        }
    }
    static int get_Priority(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            int ret = obj.Priority;
            LuaDLL.lua_pushinteger(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index Priority on a nil value"));
        }
    }
    static int get_Description(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            string ret = obj.Description;
            LuaDLL.lua_pushstring(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index Description on a nil value"));
        }
    }
    static int get_m_LockStageInInspector(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            Cinemachine.CinemachineCore.Stage[]      ret = obj.m_LockStageInInspector;
            ToLua.Push(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index m_LockStageInInspector on a nil value"));
        }
    }
    static int get_CinemachineGUIDebuggerCallback(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            System.Action ret = obj.CinemachineGUIDebuggerCallback;
            ToLua.Push(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index CinemachineGUIDebuggerCallback on a nil value"));
        }
    }
 static int OnTransitionFromCamera(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 4);
         Cinemachine.CinemachineVirtualCameraBase obj  = (Cinemachine.CinemachineVirtualCameraBase)ToLua.CheckObject <Cinemachine.CinemachineVirtualCameraBase>(L, 1);
         Cinemachine.ICinemachineCamera           arg0 = (Cinemachine.ICinemachineCamera)ToLua.CheckObject <Cinemachine.ICinemachineCamera>(L, 2);
         UnityEngine.Vector3 arg1 = ToLua.ToVector3(L, 3);
         float arg2 = (float)LuaDLL.luaL_checknumber(L, 4);
         obj.OnTransitionFromCamera(arg0, arg1, arg2);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
    static int get_Follow(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            UnityEngine.Transform ret = obj.Follow;
            ToLua.Push(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index Follow on a nil value"));
        }
    }
    static int get_VirtualCameraGameObject(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            UnityEngine.GameObject ret = obj.VirtualCameraGameObject;
            ToLua.PushSealed(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index VirtualCameraGameObject on a nil value"));
        }
    }
    static int set_Follow(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            UnityEngine.Transform arg0 = (UnityEngine.Transform)ToLua.CheckObject <UnityEngine.Transform>(L, 2);
            obj.Follow = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index Follow on a nil value"));
        }
    }
    static int set_Priority(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            int arg0 = (int)LuaDLL.luaL_checknumber(L, 2);
            obj.Priority = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index Priority on a nil value"));
        }
    }
    static int get_PreviousStateIsValid(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            bool ret = obj.PreviousStateIsValid;
            LuaDLL.lua_pushboolean(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index PreviousStateIsValid on a nil value"));
        }
    }
    static int set_m_LockStageInInspector(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj  = (Cinemachine.CinemachineVirtualCameraBase)o;
            Cinemachine.CinemachineCore.Stage[]      arg0 = ToLua.CheckStructArray <Cinemachine.CinemachineCore.Stage>(L, 2);
            obj.m_LockStageInInspector = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index m_LockStageInInspector on a nil value"));
        }
    }
    static int set_m_ExcludedPropertiesInInspector(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            string[] arg0 = ToLua.CheckStringArray(L, 2);
            obj.m_ExcludedPropertiesInInspector = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index m_ExcludedPropertiesInInspector on a nil value"));
        }
    }
    static int set_CinemachineGUIDebuggerCallback(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Cinemachine.CinemachineVirtualCameraBase obj = (Cinemachine.CinemachineVirtualCameraBase)o;
            System.Action arg0 = (System.Action)ToLua.CheckDelegate <System.Action>(L, 2);
            obj.CinemachineGUIDebuggerCallback = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index CinemachineGUIDebuggerCallback on a nil value"));
        }
    }
Esempio n. 21
0
        /// <summary>Called when a Cinemachine Virtual Camera is enabled.</summary>
        internal void AddActiveCamera(CinemachineVirtualCameraBase vcam)
        {
            // Bring it to the top of the list
            RemoveActiveCamera(vcam);

            // Keep list sorted by priority
            int insertIndex;

            for (insertIndex = 0; insertIndex < mActiveCameras.Count; ++insertIndex)
            {
                if (vcam.Priority >= mActiveCameras[insertIndex].Priority)
                {
                    break;
                }
            }

            mActiveCameras.Insert(insertIndex, vcam);
        }
Esempio n. 22
0
        CinemachineVirtualCameraBase[] Randomize(CinemachineVirtualCameraBase[] src)
        {
            List <Pair> pairs = new List <Pair>();

            for (int i = 0; i < src.Length; ++i)
            {
                Pair p = new Pair(); p.a = i; p.b = Random.Range(0, 1000f);
                pairs.Add(p);
            }
            pairs.Sort((p1, p2) => (int)p1.b - (int)p2.b);
            CinemachineVirtualCameraBase[] dst = new CinemachineVirtualCameraBase[src.Length];
            Pair[] result = pairs.ToArray();
            for (int i = 0; i < src.Length; ++i)
            {
                dst[i] = src[result[i].a];
            }
            return(dst);
        }
Esempio n. 23
0
        // GML todo: add reaction configuration params here

        /// <summary>React to any detected impulses</summary>
        /// <param name="vcam">The virtual camera being processed</param>
        /// <param name="stage">The current pipeline stage</param>
        /// <param name="state">The current virtual camera state</param>
        /// <param name="deltaTime">The current applicable deltaTime</param>
        protected override void PostPipelineStageCallback(
            CinemachineVirtualCameraBase vcam,
            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
        {
            if (stage == CinemachineCore.Stage.Aim)
            {
                Vector3    impulsePos = Vector3.zero;
                Quaternion impulseRot = Quaternion.identity;
                if (CinemachineImpulseManager.Instance.GetImpulseAt(
                        state.FinalPosition, m_Use2DDistance, m_ChannelMask,
                        out impulsePos, out impulseRot))
                {
                    state.PositionCorrection += impulsePos * -m_Gain;
                    impulseRot = Quaternion.SlerpUnclamped(Quaternion.identity, impulseRot, -m_Gain);
                    state.OrientationCorrection = state.OrientationCorrection * impulseRot;
                }
            }
        }
        /// <summary>Standard CinemachineExtension callback</summary>
        protected override void PostPipelineStageCallback(
            CinemachineVirtualCameraBase vcam,
            CinemachineCore.Stage stage, ref CameraState state, float wipeAmountTime)
        {
            // Apply to this vcam only, not the children
            if (vcam != VirtualCamera || stage != CinemachineCore.Stage.Finalize)
            {
                return;
            }

            if (m_ShowImage)
            {
                state.AddCustomBlendable(new CameraState.CustomBlendable(this, 1));
            }
            if (m_MuteCamera)
            {
                state.BlendHint |= CameraState.BlendHintValue.NoTransform | CameraState.BlendHintValue.NoLens;
            }
        }
Esempio n. 25
0
        // Camera must be orthographic
        private Vector3 ConfineScreenEdges(CinemachineVirtualCameraBase vcam, ref CameraState state)
        {
            Quaternion rot = Quaternion.Inverse(state.CorrectedOrientation);
            float      dy  = state.Lens.OrthographicSize;
            float      dx  = dy * state.Lens.Aspect;
            Vector3    vx  = (rot * Vector3.right) * dx;
            Vector3    vy  = (rot * Vector3.up) * dy;

            Vector3   displacement = Vector3.zero;
            Vector3   camPos       = state.CorrectedPosition;
            Vector3   lastD        = Vector3.zero;
            const int kMaxIter     = 12;

            for (int i = 0; i < kMaxIter; ++i)
            {
                Vector3 d = ConfinePoint((camPos - vy) - vx);
                if (d.AlmostZero())
                {
                    d = ConfinePoint((camPos + vy) + vx);
                }
                if (d.AlmostZero())
                {
                    d = ConfinePoint((camPos - vy) + vx);
                }
                if (d.AlmostZero())
                {
                    d = ConfinePoint((camPos + vy) - vx);
                }
                if (d.AlmostZero())
                {
                    break;
                }
                if ((d + lastD).AlmostZero())
                {
                    displacement += d * 0.5f;  // confiner too small: center it
                    break;
                }
                displacement += d;
                camPos       += d;
                lastD         = d;
            }
            return(displacement);
        }
Esempio n. 26
0
 /// <summary>
 /// Sets the ReferenceLookAt to be the result of a raycast in the direction of camera forward.
 /// If an object is hit, point is placed there, else it is placed at AimDistance.
 /// </summary>
 /// <param name="vcam">The virtual camera being processed</param>
 /// <param name="stage">The current pipeline stage</param>
 /// <param name="state">The current virtual camera state</param>
 /// <param name="deltaTime">The current applicable deltaTime</param>
 protected override void PostPipelineStageCallback(
     CinemachineVirtualCameraBase vcam,
     CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
 {
     if (stage == CinemachineCore.Stage.Body)
     {
         // Raycast to establish what we're actually aiming at
         state.ReferenceLookAt = GetLookAtPoint(ref state);
     }
     if (stage == CinemachineCore.Stage.Finalize)
     {
         var dir = state.ReferenceLookAt - state.FinalPosition;
         if (dir.sqrMagnitude > 0.01f)
         {
             state.RawOrientation        = Quaternion.LookRotation(dir, state.ReferenceUp);
             state.OrientationCorrection = Quaternion.identity;
         }
     }
 }
        protected override void PostPipelineStageCallback(
            CinemachineVirtualCameraBase vcam,
            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
        {
            VcamExtraState extra = GetExtraState <VcamExtraState>(vcam);

            if (!enabled || deltaTime < 0)
            {
                extra.m_previousFrameZoom = state.Lens.FieldOfView;
            }
            if (enabled)
            {
                // Set the zoom after the body has been positioned, but before the aim,
                // so that composer can compose using the updated fov.
                if (stage == CinemachineCore.Stage.Body)
                {
                    // Try to reproduce the target width
                    float targetWidth = Mathf.Max(m_Width, 0);
                    float fov         = 179f;
                    float d           = Vector3.Distance(state.CorrectedPosition, state.ReferenceLookAt);
                    if (d > UnityVectorExtensions.Epsilon)
                    {
                        // Clamp targetWidth to FOV min/max
                        float minW = d * 2f * Mathf.Tan(m_MinFOV * Mathf.Deg2Rad / 2f);
                        float maxW = d * 2f * Mathf.Tan(m_MaxFOV * Mathf.Deg2Rad / 2f);
                        targetWidth = Mathf.Clamp(targetWidth, minW, maxW);

                        // Apply damping
                        if (deltaTime >= 0 && m_Damping > 0)
                        {
                            float currentWidth = d * 2f * Mathf.Tan(extra.m_previousFrameZoom * Mathf.Deg2Rad / 2f);
                            float delta        = targetWidth - currentWidth;
                            delta       = Damper.Damp(delta, m_Damping, deltaTime);
                            targetWidth = currentWidth + delta;
                        }
                        fov = 2f * Mathf.Atan(targetWidth / (2 * d)) * Mathf.Rad2Deg;
                    }
                    LensSettings lens = state.Lens;
                    lens.FieldOfView = extra.m_previousFrameZoom = Mathf.Clamp(fov, m_MinFOV, m_MaxFOV);
                    state.Lens       = lens;
                }
            }
        }
 protected override void PostPipelineStageCallback(
     CinemachineVirtualCameraBase vcam,
     CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
 {
     if (enabled)
     {
         if (stage == CinemachineCore.Stage.Body)
         {
             VcamExtraState extra = GetExtraState <VcamExtraState>(vcam);
             if (m_PositionSmoothing > 0)
             {
                 if (deltaTime < 0)
                 {
                     extra.mSmoothingFilter = null; // reset the filter
                 }
                 state.PositionCorrection
                     += ApplySmoothing(vcam, state.CorrectedPosition, extra) - state.CorrectedPosition;
             }
             if (m_LookAtSmoothing > 0 && state.HasLookAt)
             {
                 if (deltaTime < 0)
                 {
                     extra.mSmoothingFilterLookAt = null; // reset the filter
                 }
                 state.ReferenceLookAt = ApplySmoothingLookAt(vcam, state.ReferenceLookAt, extra);
             }
         }
         if (stage == CinemachineCore.Stage.Aim)
         {
             if (m_RotationSmoothing > 0)
             {
                 VcamExtraState extra = GetExtraState <VcamExtraState>(vcam);
                 if (deltaTime < 0)
                 {
                     extra.mSmoothingFilterRotation = null; // reset the filter
                 }
                 Quaternion q = Quaternion.Inverse(state.CorrectedOrientation)
                                * ApplySmoothing(vcam, state.CorrectedOrientation, state.ReferenceUp, extra);
                 state.OrientationCorrection = state.OrientationCorrection * q;
             }
         }
     }
 }
        /// <summary>Callback to to the camera confining</summary>
        protected override void PostPipelineStageCallback(
            CinemachineVirtualCameraBase vcam,
            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
        {
            // Move the body before the Aim is calculated
            if (stage == CinemachineCore.Stage.Body)
            {
                UpdateBounds();

                if (vcam.Follow != null)
                {
                    vcam.Follow.position = GetFinalPosition();
                }

                LensSettings newLensSettings = state.Lens;
                newLensSettings.OrthographicSize = GetFinalOrthographicSize();
                state.Lens = newLensSettings;
            }
        }
        private static Transform GetUpdateTarget(CinemachineVirtualCameraBase vcam)
        {
            if (vcam == null || vcam.gameObject == null)
            {
                return(null);
            }
            Transform target = vcam.LookAt;

            if (target != null)
            {
                return(target);
            }
            target = vcam.Follow;
            if (target != null)
            {
                return(target);
            }
            // If no target, use the vcam itself
            return(vcam.transform);
        }