public static bool Prefix(FlybyCameraMFDPage __instance) { if (!(bool)SCamPlus.sCamTraverse.Field("flyCamEnabled").GetValue()) { return(false); } __instance.flybyCam.nearClipPlane = 0.02f; __instance.flybyCam.fieldOfView = SCamPlus.fovList[(int)SCamPlus.sCamTraverse.Field("fovIdx").GetValue()]; if ((int)SCamPlus.currentBehaviour > 6) { SCamPlus.cameraModes[(int)SCamPlus.currentBehaviour - 7].LateUpdate(__instance); if ((bool)SCamPlus.sCamTraverse.Field("previewEnabled").GetValue() && Time.time - SCamPlus.lastRenderTime > 1f / 8f) { SCamPlus.lastRenderTime = Time.time; __instance.flybyCam.enabled = false; __instance.flybyCam.targetTexture = __instance.previewRt; __instance.flybyCam.Render(); __instance.flybyCam.targetTexture = null; __instance.flybyCam.enabled = true; } return(false); } else { return(true); } }
public override void LateUpdate(FlybyCameraMFDPage mfdPage) { if (SCamPlus.tgpMFD != null) { mfdPage.flybyCam.transform.position = SCamPlus.tgpMFD.targetingCamera.transform.position; mfdPage.flybyCam.transform.rotation = Quaternion.Slerp(SCamPlus.lastRotation, SCamPlus.tgpMFD.targetingCamera.transform.rotation, Time.deltaTime * 1); SCamPlus.lastRotation = mfdPage.flybyCam.transform.rotation; mfdPage.flybyCam.fieldOfView = SCamPlus.tgpMFD.targetingCamera.fieldOfView; mfdPage.behaviorText.text = "SmoothTGP"; } else { SCamPlus.tgpMFD = VTOLAPI.GetPlayersVehicleGameObject().GetComponentInChildren <TargetingMFDPage>(); if (mfdPage.weaponManager.opticalTargeter != null) { mfdPage.flybyCam.transform.position = mfdPage.weaponManager.opticalTargeter.sensorTurret.pitchTransform.position; mfdPage.flybyCam.transform.rotation = mfdPage.weaponManager.opticalTargeter.sensorTurret.pitchTransform.rotation; mfdPage.flybyCam.fieldOfView = 60; mfdPage.behaviorText.text = "TGPOff"; } else { mfdPage.behaviorText.text = "NoTGP"; } } }
public static bool PreFix(FlybyCameraMFDPage __instance, ConfigNode qsNode) { ConfigNode node = qsNode.GetNode("SpectatorCamera"); if (node != null && node.GetValue <bool>("flyCamEnabled")) { __instance.EnableCamera(); } return(false); }
public static void UpdateBehaviourText(FlybyCameraMFDPage __instance) { Debug.Log("Updating behaviour text!"); if ((bool)SCamPlus.sCamTraverse.Field("randomModes").GetValue()) { __instance.behaviorText.text = "Random"; return; } __instance.behaviorText.text = ((SCamPlus.SpectatorBehaviorsPlus)currentBehaviour).ToString(); return; }
public static void Postfix(FlybyCameraMFDPage __instance) { if (SCamPlus.upType == SCamPlus.UpType.Stock) { return; } else { __instance.flybyCam.transform.LookAt(__instance.flybyCam.transform.position + __instance.flybyCam.transform.forward, SCamPlus.GetUpVector()); SCamPlus.lastUp = __instance.flybyCam.transform.up; } }
public static void Postfix(FlybyCameraMFDPage __instance) { SCamPlus.normalBitmask = __instance.flybyCam.cullingMask; SCamPlus.fpvBitmask = __instance.flybyCam.cullingMask; SCamPlus.fpvBitmask |= 272629760; SCamPlus.headBitmask = __instance.flybyCam.cullingMask; SCamPlus.headBitmask |= 272629760; SCamPlus.headBitmask ^= 2097152; SCamPlus.headBitmask ^= 1048576; SCamPlus.sCamTraverse.Field("behavior").SetValue(0);//baha update broke loading this value, so im fixing it }
public override void LateUpdate(FlybyCameraMFDPage mfdPage) { if (SCamPlus.extCamManager != null) { Camera currentCam = SCamPlus.extCamManager.cameras[SCamPlus.extCamManager.camIdx]; mfdPage.flybyCam.transform.position = currentCam.transform.position; mfdPage.flybyCam.transform.rotation = currentCam.transform.rotation; mfdPage.flybyCam.fieldOfView = currentCam.fieldOfView; mfdPage.behaviorText.text = "ExtCam"; } else { SCamPlus.extCamManager = VTOLAPI.GetPlayersVehicleGameObject().GetComponentInChildren <ExternalCamManager>(); mfdPage.behaviorText.text = "NoExtCam"; } }
public override void LateUpdate(FlybyCameraMFDPage mfdPage) { if (SCamPlus.player != null) { Vector3 offset = (SCamPlus.player.transform.position - SCamPlus.GetTargetPos()).normalized * Mathf.Tan((90 - SCamPlus.lastFov) * Mathf.Deg2Rad) * 30; Vector3 average = (SCamPlus.player.transform.position + SCamPlus.GetTargetPos()) / 2; if (offset.magnitude > SCamPlus.aceMaxDistance) { offset = offset.normalized * SCamPlus.aceMaxDistance; } Vector3 targetOffset = offset; Quaternion targetRotation = Quaternion.LookRotation(average - SCamPlus.player.transform.position + targetOffset); targetOffset += targetRotation * (SCamPlus.GetUpVector() * 10); targetRotation = Quaternion.LookRotation(average - (SCamPlus.player.transform.position + targetOffset)); float distance = ((SCamPlus.player.transform.position + SCamPlus.lastOffset) - SCamPlus.GetTargetPos()).magnitude + Vector3.Dot(-offset.normalized, SCamPlus.GetTargetVel() - SCamPlus.player.velocity) * SCamPlus.aceZoomLead; float targetFov = Mathf.Clamp(Mathf.Atan2(50, distance) * Mathf.Rad2Deg, SCamPlus.aceFovRange.min, SCamPlus.aceFovRange.max); mfdPage.flybyCam.fieldOfView = Mathf.Lerp(SCamPlus.lastFov, targetFov, Time.deltaTime * SCamPlus.aceZoomLerp); SCamPlus.lastOffset = Vector3.Slerp(SCamPlus.lastOffset, targetOffset, Time.deltaTime * SCamPlus.acePosLerp); mfdPage.flybyCam.transform.position = SCamPlus.player.transform.position + SCamPlus.lastOffset; mfdPage.flybyCam.transform.rotation = Quaternion.Slerp(SCamPlus.lastRotation, targetRotation, Time.deltaTime * SCamPlus.aceRotLerp); SCamPlus.lastRotation = mfdPage.flybyCam.transform.rotation; SCamPlus.lastFov = mfdPage.flybyCam.fieldOfView; if (SCamPlus.targetActor != null) { shownName = "AceCombat"; } else { shownName = "NoTgt"; } } else { shownName = "NoPlayer"; } }
public override void LateUpdate(FlybyCameraMFDPage mfdPage) { if (tgpMFD != null) { mfdPage.flybyCam.transform.position = tgpMFD.targetingCamera.transform.position; mfdPage.flybyCam.transform.rotation = tgpMFD.targetingCamera.transform.rotation; mfdPage.flybyCam.fieldOfView = tgpMFD.targetingCamera.fieldOfView; shownName = "TGP"; } else if (mfdPage.weaponManager.opticalTargeter != null) { mfdPage.flybyCam.transform.position = mfdPage.weaponManager.opticalTargeter.sensorTurret.pitchTransform.position; mfdPage.flybyCam.transform.rotation = mfdPage.weaponManager.opticalTargeter.sensorTurret.pitchTransform.rotation; mfdPage.flybyCam.fieldOfView = 60; shownName = "TGP Off"; } else { shownName = "No TGP"; } }
public override void LateUpdate(FlybyCameraMFDPage mfdPage) { UpdateLookTarget(); if (targetActor != null) { Vector3 offset = targetActor.position - VRHead.instance.transform.position; Quaternion lookQuat = Quaternion.LookRotation(offset, VRHead.instance.transform.up); mfdPage.flybyCam.transform.rotation = Quaternion.Slerp(mfdPage.flybyCam.transform.rotation, lookQuat, mfdPage.smoothLookRate * Time.deltaTime); targetFov = Mathf.Clamp(Mathf.Atan2(50 * 2, offset.magnitude) * Mathf.Rad2Deg, SCamPlus.aceFovRange.min, SCamPlus.aceFovRange.max); } else { mfdPage.flybyCam.transform.localRotation = Quaternion.Slerp(mfdPage.flybyCam.transform.localRotation, VRHead.instance.transform.localRotation, mfdPage.smoothLookRate * Time.deltaTime); targetFov = SCamPlus.fovList[(int)SCamPlus.sCamTraverse.Field("fovIdx").GetValue()]; } lastFov = Mathf.Lerp(lastFov, targetFov, mfdPage.smoothLookRate * Time.deltaTime); mfdPage.flybyCam.fieldOfView = lastFov; mfdPage.flybyCam.transform.localPosition = Vector3.Lerp(mfdPage.flybyCam.transform.localPosition, VRHead.instance.transform.localPosition, mfdPage.smoothLookRate * Time.deltaTime); mfdPage.behaviorText.text = "SmoothZoom"; }
public static bool Prefix(FlybyCameraMFDPage __instance) { if ((bool)SCamPlus.sCamTraverse.Field("randomModes").GetValue()) { return(false); } Debug.Log("Incrementing S-Cam mode"); SCamPlus.currentBehaviour++; if ((int)SCamPlus.currentBehaviour > 6 + SCamPlus.cameraModes.Count) { SCamPlus.currentBehaviour = 0; Debug.Log("Too large, reseting to 0"); } Debug.Log("S-Cam Mode is now " + SCamPlus.currentBehaviour.ToString()); //SCamPlus.sCamTraverse.Method("UpdateBehaviorText"); SCamPlus.UpdateBehaviourText(__instance); if ((bool)SCamPlus.sCamTraverse.Field("flyCamEnabled").GetValue()) { if ((int)SCamPlus.currentBehaviour <= 6) { //SCamPlus.sCamTraverse.Method("SetupFlybyPosition").GetValue(); SCamPlus.sCamTraverse.Field("behavior").SetValue((int)SCamPlus.currentBehaviour);//we can only update this value to be within the range the game normally expects, or it causes issues when loading saves __instance.EnableCamera(); } else { __instance.flybyCam.cullingMask = SCamPlus.normalBitmask; __instance.cameraModel.SetActive(false); SCamPlus.cameraModes[(int)SCamPlus.currentBehaviour - 7].Start(__instance); } } return(false); }
public override void LateUpdate(FlybyCameraMFDPage mfdPage) { if (SCamPlus.player != null) { float hudOffset = 0; Vector3 hudPos = Vector3.zero; switch (SCamPlus.aircrarftType) { case VTOLVehicles.AV42C: hudPos = new Vector3(0, 1.065f, 0.844f); hudOffset = 0.4f; break; case VTOLVehicles.FA26B: hudPos = new Vector3(0, 1.4f, 6.051f); hudOffset = 0.3f; break; case VTOLVehicles.F45A: hudPos = new Vector3(0, 1.1f, 6.3f); hudOffset = 0; break; default: break; } mfdPage.flybyCam.transform.position = SCamPlus.player.transform.TransformPoint(hudPos); mfdPage.flybyCam.transform.position = mfdPage.flybyCam.transform.position - SCamPlus.player.transform.forward * hudOffset; mfdPage.flybyCam.transform.rotation = SCamPlus.player.transform.rotation; mfdPage.behaviorText.text = "HUD"; } else { mfdPage.behaviorText.text = "NoHUD"; } }
public override void LateUpdate(FlybyCameraMFDPage mfdPage) { if (Input.GetKeyDown(KeyCode.Mouse0)) { mfdPage.CycleFovs(); } SCamPlus.rotation.y += Input.GetAxis("Mouse X") * SCamPlus.sensitivity / 60f * mfdPage.flybyCam.fieldOfView; SCamPlus.rotation.x += Input.GetAxis("Mouse Y") * -SCamPlus.sensitivity / 60f * mfdPage.flybyCam.fieldOfView; SCamPlus.rotation.x = Mathf.Clamp(SCamPlus.rotation.x, -90, 90); mfdPage.flybyCam.transform.eulerAngles = (Vector2)SCamPlus.rotation; float speedFactor = 10; if (Input.GetKey(KeyCode.LeftShift)) { speedFactor = 1000; } SCamPlus.position += (mfdPage.flybyCam.transform.forward * Input.GetAxis("Vertical") + mfdPage.flybyCam.transform.right * Input.GetAxis("Horizontal")) * Time.deltaTime * speedFactor; mfdPage.flybyCam.transform.position = VTMapManager.GlobalToWorldPoint(SCamPlus.position); mfdPage.behaviorText.text = "FreeCam"; }
public override void Start(FlybyCameraMFDPage mfdPage) { }
public override void Start(FlybyCameraMFDPage mfdPage) { SCamPlus.position = VTMapManager.WorldToGlobalPoint(mfdPage.flybyCam.transform.position); }
public override void Start(FlybyCameraMFDPage mfdPage) { mfdPage.flybyCam.cullingMask = SCamPlus.fpvBitmask; }
public static bool Prefix(FlybyCameraMFDPage __instance) { SCamPlus.UpdateBehaviourText(__instance); return(false); }
public virtual void Start(FlybyCameraMFDPage mfdPage) { }
public static void Postfix(FlybyCameraMFDPage __instance) { SCamPlus.sCam = __instance; SCamPlus.sCamTraverse = Traverse.Create(__instance); SCamPlus.fovList = (float[])SCamPlus.sCamTraverse.Field("fovs").GetValue(); }
public override void Start(FlybyCameraMFDPage mfdPage) { tgpMFD = VTOLAPI.GetPlayersVehicleGameObject().GetComponentInChildren <TargetingMFDPage>(); }
public virtual void LateUpdate(FlybyCameraMFDPage mfdPage) { }
public override void Start(FlybyCameraMFDPage mfdPage) { mfdPage.flybyCam.cullingMask = SCamPlus.headBitmask; mfdPage.flybyCam.transform.parent = VRHead.instance.transform.parent; }