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")); } }
/// <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); }
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); }
// 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; } }
// 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); }
/// <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); }