Code improvement

This commit is contained in:
Pascal Serrarens 2022-06-03 17:59:07 +02:00
parent 59f4add2ac
commit ae7112de56
5 changed files with 27 additions and 12 deletions

View File

@ -104,7 +104,7 @@ namespace Passer.Humanoid {
public HeadTargetProps(SerializedObject serializedObject, HeadTarget headTarget) public HeadTargetProps(SerializedObject serializedObject, HeadTarget headTarget)
: base(serializedObject, headTarget.unityXR, headTarget, nameof(HeadTarget.unityXR)) { : base(serializedObject, headTarget.unityXR, headTarget, nameof(HeadTarget.unityXR)) {
hmdProp = serializedObject.FindProperty(nameof(HeadTarget.unityXR) + ".hmd"); hmdProp = serializedObject.FindProperty(nameof(HeadTarget.unityXR) + ".sensorComponent");
} }
public override void Inspector() { public override void Inspector() {
@ -121,7 +121,8 @@ namespace Passer.Humanoid {
using (new EditorGUILayout.HorizontalScope()) { using (new EditorGUILayout.HorizontalScope()) {
EditorGUILayout.LabelField("Hmd", GUILayout.Width(120)); EditorGUILayout.LabelField("Hmd", GUILayout.Width(120));
if (GUILayout.Button("Show")) { if (GUILayout.Button("Show")) {
headTarget.unityXR.CheckSensor(headTarget); //headTarget.unityXR.CheckSensor(headTarget);
headTarget.unityXR.GetSensorComponent();
} }
} }
} }

View File

@ -13,7 +13,6 @@ namespace Passer.Humanoid {
protected HumanoidControl humanoid => headTarget.humanoid; protected HumanoidControl humanoid => headTarget.humanoid;
//public SensorComponent sensorComponent;
protected new Tracking.HeadSensor sensor; protected new Tracking.HeadSensor sensor;

View File

@ -14,13 +14,6 @@ namespace Passer.Humanoid {
protected Tracking.Sensor sensor; protected Tracking.Sensor sensor;
public SensorComponent sensorComponent;
/// <summary>
/// Returns sensorComponent and creates a new SensorComponent if it does not exist
/// </summary>
/// <returns></returns>
public abstract SensorComponent GetSensorComponent();
[System.NonSerialized] [System.NonSerialized]
public const string _name = ""; public const string _name = "";
public override string name { get { return _name; } } public override string name { get { return _name; } }
@ -125,6 +118,12 @@ namespace Passer.Humanoid {
} }
public virtual void UpdateSensorTransformFromTarget(Transform targetTransform) { public virtual void UpdateSensorTransformFromTarget(Transform targetTransform) {
if (sensorComponent != null) {
sensorComponent.transform.position = TransformPointUnscaled(targetTransform, -sensor2TargetPosition);
sensorComponent.transform.rotation = targetTransform.rotation * Quaternion.Inverse(sensor2TargetRotation);
return;
}
if (sensorTransform == null) if (sensorTransform == null)
return; return;

View File

@ -1,6 +1,7 @@
using UnityEngine; using UnityEngine;
namespace Passer { namespace Passer {
using Tracking;
[System.Serializable] [System.Serializable]
public abstract class Sensor { public abstract class Sensor {
@ -14,6 +15,14 @@ namespace Passer {
public Transform sensorTransform; public Transform sensorTransform;
public SensorComponent sensorComponent;
/// <summary>
/// Returns sensorComponent and creates a new SensorComponent if it does not exist
/// </summary>
/// <returns></returns>
public abstract SensorComponent GetSensorComponent();
public virtual void Start(Transform targetTransform) { public virtual void Start(Transform targetTransform) {
target = targetTransform.GetComponent<Target>(); target = targetTransform.GetComponent<Target>();
} }

View File

@ -19,13 +19,20 @@ namespace Passer.Humanoid {
if (sensorComponent != null) if (sensorComponent != null)
return sensorComponent; return sensorComponent;
if (tracker.trackerComponent == null) // Make sure the unityXR component exists
tracker.CheckTracker(humanoid); humanoid.unityXR.GetTrackerComponent();
Vector3 position = headTarget.transform.TransformPoint(headTarget.head2eyes); Vector3 position = headTarget.transform.TransformPoint(headTarget.head2eyes);
Quaternion rotation = headTarget.transform.rotation; Quaternion rotation = headTarget.transform.rotation;
UnityXR unityXRtracker = tracker.trackerComponent as UnityXR; UnityXR unityXRtracker = tracker.trackerComponent as UnityXR;
sensorComponent = unityXRtracker.GetHmd(position, rotation); sensorComponent = unityXRtracker.GetHmd(position, rotation);
if (sensorComponent != null)
sensorTransform = sensorComponent.transform;
if (!Application.isPlaying)
SetSensor2Target();
return sensorComponent; return sensorComponent;
} }