Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using Leap.Unity.Swizzle;
- using UnityEngine;
- using UnityEngine.Networking;
- using Valve.VR;
- public class RaftInit : MonoBehaviour
- {
- public GameObject ParentedStuff;
- public GameObject SyncPosition;
- public GameObject ViveCam;
- public NetworkController network;
- [SyncVar]
- private Vector3 syncScale = new Vector3(1,1,1);
- [SyncVar]
- private bool isTurned = false;
- [HideInInspector]
- public static Vector3 raftPosition;
- // Start is called before the first frame update
- void Start()
- {
- Application.targetFrameRate = 100;
- if (network.host)
- {
- var mesh = new Mesh();
- var rect = new Valve.VR.HmdQuad_t();
- SteamVR_PlayArea.GetBounds(SteamVR_PlayArea.Size.Calibrated, ref rect);
- Vector3 newScale = checkAndCorrectRotation(rect);
- mesh.vertices = gameObject.GetComponent<MeshFilter>().mesh.vertices;
- mesh.triangles = gameObject.GetComponent<MeshFilter>().mesh.triangles;
- if (newScale.x != 0 && newScale.z != 0)
- {
- transform.localScale = newScale;
- syncScale = newScale;
- }
- var vertices = mesh.vertices;
- var offset = new Vector3(-0.5f, -0.2f, -0.5f);
- Matrix4x4 scale = Matrix4x4.Scale(transform.localScale);
- scale = Matrix4x4.Scale(new Vector3(0.5f, 1, 0.5f)) * scale;
- var mat = transform.localToWorldMatrix;
- for (int i = 0; i < vertices.Length; i++)
- {
- vertices[i] = scale.MultiplyPoint(vertices[i]);
- }
- print(vertices);
- mesh.vertices = vertices;
- mesh.RecalculateBounds();
- mesh.RecalculateNormals();
- mesh.RecalculateTangents();
- GetComponent<FloatingGameEntityRealist>().buoyancyMesh = mesh;
- GetComponent<FloatingGameEntityRealist>().updateMesh();
- ParentedStuff.transform.parent = transform;
- }
- }
- public void SyncRaft()
- {
- if (!network.host)
- {
- transform.localScale = syncScale;
- if (isTurned)
- {
- ParentedStuff.transform.Rotate(0, 90, 0);
- }
- ParentedStuff.transform.position = transform.position;
- ParentedStuff.transform.rotation = transform.rotation;
- ParentedStuff.transform.parent = transform;
- }
- }
- private Vector3 checkAndCorrectRotation(HmdQuad_t rect)
- {
- print(rect.vCorners0.v0 + " - " + rect.vCorners0.v2);
- if (Mathf.Abs(rect.vCorners0.v0) >= Mathf.Abs(rect.vCorners0.v2))
- {
- print("x bigger");
- //transform.forward = Quaternion.Euler(0, 90, 0) * transform.forward;
- ParentedStuff.transform.Rotate(0, 90, 0);
- isTurned = true;
- return new Vector3(Mathf.Abs(rect.vCorners0.v2 - rect.vCorners2.v2), this.transform.localScale.y, Mathf.Abs(rect.vCorners0.v0 - rect.vCorners2.v0));
- }
- else
- {
- print("y bigger");
- return new Vector3(Mathf.Abs(rect.vCorners0.v0 - rect.vCorners2.v0), this.transform.localScale.y, Mathf.Abs(rect.vCorners0.v2 - rect.vCorners2.v2));
- }
- }
- // Update is called once per frame
- void Update()
- {
- raftPosition = transform.position;
- var velocity = transform.InverseTransformDirection(GetComponent<Rigidbody>().velocity).z;
- //print(velocity);
- if (Input.GetKey(KeyCode.W))
- {
- GetComponent<Rigidbody>().AddForce(transform.forward * 1000);
- print("MOOOVE");
- }
- if (Input.GetKey(KeyCode.A))
- {
- GetComponent<Rigidbody>().AddForceAtPosition(transform.right * 100 * velocity, transform.localPosition + -transform.forward * 5);
- }
- if (Input.GetKey(KeyCode.D))
- {
- GetComponent<Rigidbody>().AddForceAtPosition(-transform.right * 100 * velocity, transform.localPosition + -transform.forward * 5);
- }
- SyncPosition.transform.position = transform.position;
- //ViveCam.transform.up = Vector3.up;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement