Files
RaindropViewer/Assets/Raindrop/UI/UpdateCameraBackend.cs
T

50 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using Lean.Gui;
using Plugins.CommonDependencies;
using Raindrop;
using Raindrop.Rendering;
using UnityEngine;
using Camera = UnityEngine.Camera;
// attach this to the main camera.
// This will update the backend library on the camera position to send to server.
[RequireComponent(typeof(Camera))]
public class UpdateCameraBackend : MonoBehaviour
{
private RaindropInstance instance;
bool Active => instance.Client.Network.Connected &&
(instance.Client.Network.CurrentSim != null);
public Camera cam;
void Start()
{
cam = GetComponent<Camera>();
instance = RaindropInstance.GlobalInstance;
}
private void Update()
{
if (Active)
{
//set random properties like far clip
instance.Client.Self.Movement.Camera.Far = cam.farClipPlane;
//set position
instance.Client.Self.Movement.Camera.Position = RHelp.OMVVector3(cam.transform.position);
//set rotation
var camera_rot = RHelp.OMVQuaternion4(cam.transform.rotation);
float yaw_rad;
float pitch_rad;
float roll_rad;
camera_rot.GetEulerAngles(out roll_rad, out pitch_rad, out yaw_rad);
instance.Client.Self.Movement.Camera.Pitch(pitch_rad);
instance.Client.Self.Movement.Camera.Yaw(yaw_rad);
instance.Client.Self.Movement.Camera.Roll(roll_rad);
}
}
}