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);
        }
    }
Exemplo n.º 2
0
    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
    }
Exemplo n.º 7
0
    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";
        }
    }
Exemplo n.º 8
0
    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";
        }
    }
Exemplo n.º 9
0
 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";
     }
 }
Exemplo n.º 10
0
    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";
        }
    }
Exemplo n.º 13
0
    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";
    }
Exemplo n.º 14
0
 public override void Start(FlybyCameraMFDPage mfdPage)
 {
 }
Exemplo n.º 15
0
 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();
 }
Exemplo n.º 20
0
 public override void Start(FlybyCameraMFDPage mfdPage)
 {
     tgpMFD = VTOLAPI.GetPlayersVehicleGameObject().GetComponentInChildren <TargetingMFDPage>();
 }
 public virtual void LateUpdate(FlybyCameraMFDPage mfdPage)
 {
 }
Exemplo n.º 22
0
 public override void Start(FlybyCameraMFDPage mfdPage)
 {
     mfdPage.flybyCam.cullingMask      = SCamPlus.headBitmask;
     mfdPage.flybyCam.transform.parent = VRHead.instance.transform.parent;
 }