diff --git a/Editor/HumanoidControl/Extensions/UnityXR/UnityXR_Editor.cs b/Editor/HumanoidControl/Extensions/UnityXR/UnityXR_Editor.cs
index 4b66d3a..f07ed11 100644
--- a/Editor/HumanoidControl/Extensions/UnityXR/UnityXR_Editor.cs
+++ b/Editor/HumanoidControl/Extensions/UnityXR/UnityXR_Editor.cs
@@ -104,7 +104,7 @@ namespace Passer.Humanoid {
public HeadTargetProps(SerializedObject serializedObject, HeadTarget headTarget)
: 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() {
@@ -121,7 +121,8 @@ namespace Passer.Humanoid {
using (new EditorGUILayout.HorizontalScope()) {
EditorGUILayout.LabelField("Hmd", GUILayout.Width(120));
if (GUILayout.Button("Show")) {
- headTarget.unityXR.CheckSensor(headTarget);
+ //headTarget.unityXR.CheckSensor(headTarget);
+ headTarget.unityXR.GetSensorComponent();
}
}
}
diff --git a/Runtime/HumanoidControl/Scripts/Extensions/HeadSensor.cs b/Runtime/HumanoidControl/Scripts/Extensions/HeadSensor.cs
index fe60fad..c6b1d9a 100644
--- a/Runtime/HumanoidControl/Scripts/Extensions/HeadSensor.cs
+++ b/Runtime/HumanoidControl/Scripts/Extensions/HeadSensor.cs
@@ -13,7 +13,6 @@ namespace Passer.Humanoid {
protected HumanoidControl humanoid => headTarget.humanoid;
- //public SensorComponent sensorComponent;
protected new Tracking.HeadSensor sensor;
diff --git a/Runtime/HumanoidControl/Scripts/Extensions/HumanoidSensor.cs b/Runtime/HumanoidControl/Scripts/Extensions/HumanoidSensor.cs
index a6e6f37..b11898a 100644
--- a/Runtime/HumanoidControl/Scripts/Extensions/HumanoidSensor.cs
+++ b/Runtime/HumanoidControl/Scripts/Extensions/HumanoidSensor.cs
@@ -14,13 +14,6 @@ namespace Passer.Humanoid {
protected Tracking.Sensor sensor;
- public SensorComponent sensorComponent;
- ///
- /// Returns sensorComponent and creates a new SensorComponent if it does not exist
- ///
- ///
- public abstract SensorComponent GetSensorComponent();
-
[System.NonSerialized]
public const string _name = "";
public override string name { get { return _name; } }
@@ -125,6 +118,12 @@ namespace Passer.Humanoid {
}
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)
return;
diff --git a/Runtime/HumanoidControl/Scripts/Extensions/Sensor.cs b/Runtime/HumanoidControl/Scripts/Extensions/Sensor.cs
index d4a041e..8825c45 100644
--- a/Runtime/HumanoidControl/Scripts/Extensions/Sensor.cs
+++ b/Runtime/HumanoidControl/Scripts/Extensions/Sensor.cs
@@ -1,6 +1,7 @@
using UnityEngine;
namespace Passer {
+ using Tracking;
[System.Serializable]
public abstract class Sensor {
@@ -14,6 +15,14 @@ namespace Passer {
public Transform sensorTransform;
+ public SensorComponent sensorComponent;
+ ///
+ /// Returns sensorComponent and creates a new SensorComponent if it does not exist
+ ///
+ ///
+ public abstract SensorComponent GetSensorComponent();
+
+
public virtual void Start(Transform targetTransform) {
target = targetTransform.GetComponent();
}
diff --git a/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs b/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs
index d083ae1..5262a37 100644
--- a/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs
+++ b/Runtime/HumanoidControl/Scripts/Extensions/UnityXR/UnityXRHead.cs
@@ -19,13 +19,20 @@ namespace Passer.Humanoid {
if (sensorComponent != null)
return sensorComponent;
- if (tracker.trackerComponent == null)
- tracker.CheckTracker(humanoid);
+ // Make sure the unityXR component exists
+ humanoid.unityXR.GetTrackerComponent();
Vector3 position = headTarget.transform.TransformPoint(headTarget.head2eyes);
Quaternion rotation = headTarget.transform.rotation;
UnityXR unityXRtracker = tracker.trackerComponent as UnityXR;
sensorComponent = unityXRtracker.GetHmd(position, rotation);
+
+ if (sensorComponent != null)
+ sensorTransform = sensorComponent.transform;
+
+ if (!Application.isPlaying)
+ SetSensor2Target();
+
return sensorComponent;
}