mid Control implementation and... a Unity Update (backup)

This commit is contained in:
spatialfree 2020-12-07 00:45:24 -08:00
parent 0a7f98b4d2
commit 213d7ec0e9
7 changed files with 101 additions and 67 deletions

View file

@ -1,5 +1,6 @@
using System; using System;
using UnityEngine; using UnityEngine;
using UnityEngine.XR;
[Serializable] [Serializable]
public class Control public class Control
@ -7,23 +8,55 @@ public class Control
[HideInInspector] [HideInInspector]
public Logic logic; public Logic logic;
public OculusFilter oculusFilter;
public ValveFilter valveFilter;
public bool connected;
public InputDevice headDevice, lHandDevice, rHandDevice;
public Vector3 headTrackedPos, lHandTrackedPos, rHandTrackedPos;
public Quaternion headTrackedRot, lHandTrackedRot, rHandTrackedRot;
public void Set(InspectorSetter setter) public void Set(InspectorSetter setter)
{ {
oculusFilter.Set(setter);
valveFilter.Set(setter);
} }
public void Fetch(InspectorSetter setter) public void Fetch(InspectorSetter setter)
{ {
oculusFilter.Fetch(setter);
valveFilter.Fetch(setter);
} }
public void Start(Logic logic) public void Start(Logic logic)
{ {
this.logic = logic; this.logic = logic;
headDevice = InputDevices.GetDeviceAtXRNode(XRNode.Head);
lHandDevice = InputDevices.GetDeviceAtXRNode(XRNode.LeftHand);
rHandDevice = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
oculusFilter.Start(this);
valveFilter.Start(this);
} }
public void Update() public void Update()
{ {
// General
connected = headDevice.IsValid && (lHandDevice.IsValid || rHandDevice.IsValid);
if (!connected)
return;
XRDevice.DisableAutoXRCameraTracking(Camera.main, true);
// headDevice.TryGetFeatureValue();
// need to update...
// you can play with your left controller or your right (and?) RIG CLASS?
// Swappable Proprietary Overrides
oculusFilter.Update();
valveFilter.Update();
} }
} }

View file

@ -1,18 +1,29 @@
using System.Collections; using System;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
public class OculusBS : MonoBehaviour [Serializable]
public class OculusFilter
{ {
// Start is called before the first frame update [HideInInspector]
void Start() public Control control;
{
}
// Update is called once per frame public void Set(InspectorSetter setter)
void Update() {
{
}
}
public void Fetch(InspectorSetter setter)
{
}
public void Start(Control control)
{
this.control = control;
}
public void Update()
{
}
} }

View file

@ -1,18 +1,29 @@
using System.Collections; using System;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
public class ValveFilter : MonoBehaviour [Serializable]
public class ValveFilter
{ {
// Start is called before the first frame update [HideInInspector]
void Start() public Control control;
{
}
// Update is called once per frame public void Set(InspectorSetter setter)
void Update() {
{
}
}
public void Fetch(InspectorSetter setter)
{
}
public void Start(Control control)
{
this.control = control;
}
public void Update()
{
}
} }

View file

@ -9,17 +9,16 @@ public class Logic
public Control control; public Control control;
public World world; public World world;
public Rig rig;
public void Set(InspectorSetter setter) public void Set(InspectorSetter setter)
{ {
rig.Set(setter); control.Set(setter);
world.Set(setter); world.Set(setter);
} }
public void Fetch(InspectorSetter setter) public void Fetch(InspectorSetter setter)
{ {
rig.Fetch(setter); control.Fetch(setter);
world.Fetch(setter); world.Fetch(setter);
} }
@ -27,12 +26,14 @@ public class Logic
{ {
this.mono = mono; this.mono = mono;
rig.Start(this); control.Start(this);
world.Start(this); world.Start(this);
} }
public void Update() public void Update()
{ {
control.Update();
if (control.connected)
world.Update();
} }
} }

View file

@ -6,7 +6,7 @@ using UnityEngine.XR;
public class Rig public class Rig
{ {
[HideInInspector] [HideInInspector]
public Logic logic; public World world;
[Header("Design")] [Header("Design")]
public float scale; public float scale;
@ -41,14 +41,15 @@ public class Rig
[HideInInspector] [HideInInspector]
public Vector3 controllerPos; public Vector3 controllerPos;
bool leftOn, rightOn, touchOn;
public Vector3 boxShake, boxOffset; public Vector3 boxShake, boxOffset;
public bool alignRecordCam; public bool alignRecordCam;
public void Start(Logic logic) public void Start(World world)
{ {
this.logic = logic; this.world = world;
Game.OnBump += Bump; // replace these systems... Game.OnBump += Bump; // replace these systems...
Game.OnCrash += Bump; Game.OnCrash += Bump;
@ -60,27 +61,6 @@ public class Rig
public Lerper lerper; public Lerper lerper;
public void Update() public void Update()
{ {
// Input System
UnityEngine.XR.XRDevice.DisableAutoXRCameraTracking(Camera.main, true);
leftOn = OVRInput.IsControllerConnected(OVRInput.Controller.LTrackedRemote);
rightOn = OVRInput.IsControllerConnected(OVRInput.Controller.RTrackedRemote);
touchOn = OVRInput.IsControllerConnected(OVRInput.Controller.RTouch);
if (leftOn || rightOn || touchOn)
{
if (leftOn) { ovrCon = OVRInput.Controller.LTrackedRemote; }
else if (rightOn) { ovrCon = OVRInput.Controller.RTrackedRemote; }
else if (touchOn) { ovrCon = OVRInput.Controller.RTouch; }
disconnected.SetActive(false);
Time.timeScale = 1;
}
else
{
disconnected.SetActive(true);
Time.timeScale = 0;
}
// Apply to Transforms // Apply to Transforms
Quaternion flip = Quaternion.identity; Quaternion flip = Quaternion.identity;
head.localPosition = InputTracking.GetLocalPosition(XRNode.Head); head.localPosition = InputTracking.GetLocalPosition(XRNode.Head);

View file

@ -7,23 +7,27 @@ public class World
[HideInInspector] [HideInInspector]
public Logic logic; public Logic logic;
public Rig rig;
public void Set(InspectorSetter setter) public void Set(InspectorSetter setter)
{ {
rig.Set(setter);
} }
public void Fetch(InspectorSetter setter) public void Fetch(InspectorSetter setter)
{ {
rig.Fetch(setter);
} }
public void Start(Logic logic) public void Start(Logic logic)
{ {
this.logic = logic; this.logic = logic;
rig.Start(this);
} }
public void Update() public void Update()
{ {
rig.Update();
} }
} }

View file

@ -8,8 +8,6 @@ public class Monolith : MonoBehaviour
[Header("Design")] [Header("Design")]
public float test; public float test;
public string words = "";
public Vector3 v3;
[Header("References")] [Header("References")]
public InspectorSetter setter; public InspectorSetter setter;
@ -17,8 +15,6 @@ public class Monolith : MonoBehaviour
void OnDisable() void OnDisable()
{ {
setter.Set("Monolith.test", test); setter.Set("Monolith.test", test);
setter.Set("Monolith.words", words);
setter.Set("Monolith.v3", v3);
logic.Set(setter); logic.Set(setter);
render.Set(setter); render.Set(setter);
@ -29,8 +25,6 @@ public class Monolith : MonoBehaviour
public void Fetch(InspectorSetter setter) public void Fetch(InspectorSetter setter)
{ {
test = setter.Fetch("Monolith.test", test); test = setter.Fetch("Monolith.test", test);
words = setter.Fetch("Monolith.words", words);
v3 = setter.Fetch("Monolith.v3", v3);
logic.Fetch(setter); logic.Fetch(setter);
render.Fetch(setter); render.Fetch(setter);