Code improvements

This commit is contained in:
Pascal Serrarens 2022-06-09 15:24:50 +02:00
parent ae7112de56
commit 80a5581054
22 changed files with 190 additions and 222 deletions

View File

@ -122,7 +122,7 @@ namespace Passer.Humanoid {
EditorGUILayout.LabelField("Hmd", GUILayout.Width(120));
if (GUILayout.Button("Show")) {
//headTarget.unityXR.CheckSensor(headTarget);
headTarget.unityXR.GetSensorComponent();
headTarget.unityXR.CheckSensor(headTarget); //.GetSensorComponent();
}
}
}

View File

@ -312,7 +312,7 @@ namespace Passer {
new Hydra_Editor.TrackerProps(serializedObject, targetObjs, humanoid.hydra),
#endif
#if hLEAP && (UNITY_STANDALONE_WIN || UNITY_WSA_10_0)
new LeapMotion_Editor.TrackerProps(serializedObject, targetObjs, humanoid.leapTracker),
new LeapMotion_Editor.TrackerProps(serializedObject, targetObjs, humanoid.leap),
#endif
#if hKINECT1 && (UNITY_STANDALONE_WIN || UNITY_WSA_10_0)
new Kinect1_Editor.TrackerProps(serializedObject, targetObjs, humanoid.kinect1),
@ -1082,7 +1082,7 @@ namespace Passer {
using (new EditorGUILayout.HorizontalScope()) {
EditorGUILayout.LabelField("Tracker", GUILayout.Width(120));
if (TrackerComponentShowButton())
tracker.GetTrackerComponent();
tracker.CheckTracker(humanoid);
}
}
else {
@ -1136,7 +1136,7 @@ namespace Passer {
private void RemoveControllers() {
foreach (HumanoidSensor sensor in tracker.sensors)
RemoveTransform(sensor.sensorTransform);
RemoveSensor(sensor.sensorComponent);
if (tracker.headSensor != null)
tracker.headSensor.RemoveController(headSensorProp);
@ -1152,11 +1152,16 @@ namespace Passer {
tracker.rightFootSensor.RemoveController(rightFootSensorProp);
}
private void RemoveTransform(Transform trackerTransform) {
if (trackerTransform != null)
DestroyImmediate(trackerTransform.gameObject, true);
private void RemoveSensor(Tracking.SensorComponent sensorComponent) {
if (sensorComponent != null)
DestroyImmediate(sensorComponent.gameObject, true);
}
//private void RemoveTransform(Transform trackerTransform) {
// if (trackerTransform != null)
// DestroyImmediate(trackerTransform.gameObject, true);
//}
private void SetSensors2Target() {
foreach (HumanoidSensor sensor in tracker.sensors) {
sensor.SetSensor2Target();

View File

@ -572,7 +572,7 @@ namespace Passer {
public abstract class TargetProps {
public SerializedProperty enabledProp;
public SerializedProperty sensorTransformProp;
public SerializedProperty sensorComponentProp;
public SerializedProperty sensor2TargetPositionProp;
public SerializedProperty sensor2TargetRotationProp;
@ -581,7 +581,7 @@ namespace Passer {
public TargetProps(SerializedObject serializedObject, LegSensor _sensor, FootTarget _footTarget, string unitySensorName) {
enabledProp = serializedObject.FindProperty(unitySensorName + ".enabled");
sensorTransformProp = serializedObject.FindProperty(unitySensorName + ".sensorTransform");
sensorComponentProp = serializedObject.FindProperty(unitySensorName + ".sensorComponent");
sensor2TargetPositionProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetPosition");
sensor2TargetRotationProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetRotation");
@ -592,11 +592,11 @@ namespace Passer {
}
public virtual void SetSensor2Target() {
if (sensor.sensorTransform == null)
if (sensor.sensorComponent == null)
return;
sensor2TargetRotationProp.quaternionValue = Quaternion.Inverse(sensor.sensorTransform.rotation) * footTarget.foot.target.transform.rotation;
sensor2TargetPositionProp.vector3Value = -footTarget.foot.target.transform.InverseTransformPoint(sensor.sensorTransform.position);
sensor2TargetRotationProp.quaternionValue = Quaternion.Inverse(sensor.sensorComponent.transform.rotation) * footTarget.foot.target.transform.rotation;
sensor2TargetPositionProp.vector3Value = -footTarget.foot.target.transform.InverseTransformPoint(sensor.sensorComponent.transform.position);
}
public abstract void Inspector();

View File

@ -721,7 +721,8 @@ namespace Passer.Humanoid {
public abstract class TargetProps {
public SerializedProperty enabledProp;
public SerializedProperty sensorTransformProp;
//public SerializedProperty sensorTransformProp;
public SerializedProperty sensorComponentProp;
public SerializedProperty sensor2TargetPositionProp;
public SerializedProperty sensor2TargetRotationProp;
@ -730,7 +731,8 @@ namespace Passer.Humanoid {
public TargetProps(SerializedObject serializedObject, Humanoid.ArmSensor _sensor, HandTarget _handTarget, string unitySensorName) {
enabledProp = serializedObject.FindProperty(unitySensorName + ".enabled");
sensorTransformProp = serializedObject.FindProperty(unitySensorName + ".sensorTransform");
//sensorTransformProp = serializedObject.FindProperty(unitySensorName + ".sensorTransform");
sensorComponentProp = serializedObject.FindProperty(unitySensorName + ".sensorComponent");
sensor2TargetPositionProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetPosition");
sensor2TargetRotationProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetRotation");

View File

@ -507,7 +507,8 @@ namespace Passer.Humanoid {
public abstract class TargetProps {
public SerializedProperty enabledProp;
public SerializedProperty sensorTransformProp;
//public SerializedProperty sensorTransformProp;
public SerializedProperty sensorComponentProp;
public SerializedProperty sensor2TargetPositionProp;
public SerializedProperty sensor2TargetRotationProp;
@ -516,7 +517,7 @@ namespace Passer.Humanoid {
public TargetProps(SerializedObject serializedObject, HeadSensor _sensor, HeadTarget _headTarget, string unitySensorName) {
enabledProp = serializedObject.FindProperty(unitySensorName + ".enabled");
sensorTransformProp = serializedObject.FindProperty(unitySensorName + ".sensorTransform");
sensorComponentProp = serializedObject.FindProperty(unitySensorName + ".sensorComponent");
sensor2TargetPositionProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetPosition");
sensor2TargetRotationProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetRotation");
@ -527,11 +528,11 @@ namespace Passer.Humanoid {
}
public virtual void SetSensor2Target() {
if (sensor.sensorTransform == null)
if (sensor.sensorComponent == null)
return;
sensor2TargetRotationProp.quaternionValue = Quaternion.Inverse(sensor.sensorTransform.rotation) * headTarget.head.target.transform.rotation;
sensor2TargetPositionProp.vector3Value = -headTarget.head.target.transform.InverseTransformPoint(sensor.sensorTransform.position);
sensor2TargetRotationProp.quaternionValue = Quaternion.Inverse(sensor.sensorComponent.transform.rotation) * headTarget.head.target.transform.rotation;
sensor2TargetPositionProp.vector3Value = -headTarget.head.target.transform.InverseTransformPoint(sensor.sensorComponent.transform.position);
}
public abstract void Inspector();

View File

@ -32,7 +32,7 @@ namespace Passer {
private void InitEditors() {
allProps = new TargetProps[] {
#if hOPENVR && hVIVETRACKER && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX)
#if hVIVETRACKER
new ViveTracker_Editor.HipsTargetProps(serializedObject, hipsTarget),
#endif
#if hKINECT1
@ -297,7 +297,8 @@ namespace Passer {
public abstract class TargetProps {
public SerializedProperty enabledProp;
public SerializedProperty sensorTransformProp;
//public SerializedProperty sensorTransformProp;
public SerializedProperty sensorComponentProp;
public SerializedProperty sensor2TargetPositionProp;
public SerializedProperty sensor2TargetRotationProp;
@ -306,7 +307,8 @@ namespace Passer {
public TargetProps(SerializedObject serializedObject, TorsoSensor _sensor, HipsTarget _hipsTarget, string unitySensorName) {
enabledProp = serializedObject.FindProperty(unitySensorName + ".enabled");
sensorTransformProp = serializedObject.FindProperty(unitySensorName + ".sensorTransform");
//sensorTransformProp = serializedObject.FindProperty(unitySensorName + ".sensorTransform");
sensorComponentProp = serializedObject.FindProperty(unitySensorName + ".sensorComponent");
sensor2TargetPositionProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetPosition");
sensor2TargetRotationProp = serializedObject.FindProperty(unitySensorName + ".sensor2TargetRotation");
@ -317,11 +319,11 @@ namespace Passer {
}
public virtual void SetSensor2Target() {
if (sensor.sensorTransform == null)
if (sensor.sensorComponent == null)
return;
sensor2TargetRotationProp.quaternionValue = Quaternion.Inverse(sensor.sensorTransform.rotation) * hipsTarget.hips.target.transform.rotation;
sensor2TargetPositionProp.vector3Value = -hipsTarget.hips.target.transform.InverseTransformPoint(sensor.sensorTransform.position);
sensor2TargetRotationProp.quaternionValue = Quaternion.Inverse(sensor.sensorComponent.transform.rotation) * hipsTarget.hips.target.transform.rotation;
sensor2TargetPositionProp.vector3Value = -hipsTarget.hips.target.transform.InverseTransformPoint(sensor.sensorComponent.transform.position);
}
public abstract void Inspector();

View File

@ -12,9 +12,9 @@ namespace Passer.Humanoid {
set { }
}
public override SensorComponent GetSensorComponent() {
return null;
}
//public override SensorComponent GetSensorComponent() {
// return null;
//}
}
[System.Serializable]
@ -26,9 +26,9 @@ namespace Passer.Humanoid {
set { }
}
public override SensorComponent GetSensorComponent() {
return null;
}
//public override SensorComponent GetSensorComponent() {
// return null;
//}
public bool armSwing;
[HideInInspector]

View File

@ -8,10 +8,6 @@ namespace Passer.Humanoid {
public bool headAnimation = true;
public bool faceAnimation = true;
public override SensorComponent GetSensorComponent() {
return null;
}
#region Update
public override void Update() {
if (!headTarget.humanoid.animatorEnabled || !enabled || headTarget.humanoid.targetsRig.runtimeAnimatorController != null)

View File

@ -8,10 +8,6 @@ namespace Passer.Humanoid {
private Vector3 positionalVelocity;
private Quaternion rotationalVelocity;
public override SensorComponent GetSensorComponent() {
return null;
}
public override void Start(HumanoidControl _humanoid, Transform targetTransform) {
base.Start(_humanoid, targetTransform);
}

View File

@ -6,10 +6,6 @@ namespace Passer.Humanoid {
[System.Serializable]
public class LegAnimator : LegSensor {
public override SensorComponent GetSensorComponent() {
return null;
}
private LegAnimator leftAnimator;
private LegAnimator rightAnimator;

View File

@ -6,10 +6,6 @@ namespace Passer.Humanoid {
[System.Serializable]
public class TorsoAnimator : TorsoSensor {
public override SensorComponent GetSensorComponent() {
return null;
}
public enum BodyRotation {
HeadRotation = 1,
HeadAndHandRotation = 2,

View File

@ -93,8 +93,8 @@ namespace Passer.Humanoid {
Init(handTarget);
SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
sensorTransformProp.objectReferenceValue = sensorTransform;
//SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
//sensorTransformProp.objectReferenceValue = sensorTransform;
SerializedProperty targetProp = sensorProp.FindPropertyRelative("target");
targetProp.objectReferenceValue = target;
@ -103,7 +103,7 @@ namespace Passer.Humanoid {
return;
CheckSensorTransform();
sensorTransformProp.objectReferenceValue = sensorTransform;
//sensorTransformProp.objectReferenceValue = sensorTransform;
ShowSensor(handTarget.humanoid.showRealObjects && handTarget.showRealObjects);
@ -114,18 +114,18 @@ namespace Passer.Humanoid {
}
public void RemoveController(SerializedProperty sensorProp) {
if (sensorProp == null)
return;
//if (sensorProp == null)
// return;
SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
sensorTransformProp.objectReferenceValue = null;
//SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
//sensorTransformProp.objectReferenceValue = null;
}
#endif
public void CheckSensorTransform(Transform targetTransform, bool isLeft) {
if (enabled && sensorTransform == null)
if (enabled && sensorComponent == null)
CreateSensorTransform(targetTransform, isLeft);
else if (!enabled && sensorTransform != null)
else if (!enabled && sensorComponent != null)
RemoveSensorTransform();
}
@ -136,22 +136,22 @@ namespace Passer.Humanoid {
}
public override void SetSensor2Target() {
if (sensorTransform == null || target == null)
if (sensorComponent == null || target == null)
return;
sensor2TargetRotation = Quaternion.Inverse(sensorTransform.rotation) * target.transform.rotation;
sensor2TargetPosition = -target.transform.InverseTransformPoint(sensorTransform.position);
sensor2TargetRotation = Quaternion.Inverse(sensorComponent.transform.rotation) * target.transform.rotation;
sensor2TargetPosition = -target.transform.InverseTransformPoint(sensorComponent.transform.position);
}
public virtual void SetSensor2Target(Vector3 targetPosition, Quaternion targetRotation) {
if (sensorTransform == null)
if (sensorComponent == null)
return;
sensor2TargetRotation = Quaternion.Inverse(sensorTransform.rotation) * targetRotation;
sensor2TargetRotation = Quaternion.Inverse(sensorComponent.transform.rotation) * targetRotation;
//sensor2TargetPosition = -targetTransform.InverseTransformPoint(sensorTransform.position);
var worldToLocalMatrix = Matrix4x4.TRS(targetPosition, targetRotation, Vector3.one).inverse;
sensor2TargetPosition = -worldToLocalMatrix.MultiplyPoint3x4(sensorTransform.position);
sensor2TargetPosition = -worldToLocalMatrix.MultiplyPoint3x4(sensorComponent.transform.position);
}
#endregion
@ -248,11 +248,11 @@ namespace Passer.Humanoid {
protected virtual void UpdateHandTargetTransform(Humanoid.Tracking.ArmSensor armSensor) {
if (handTarget.hand.target.transform != null) {
if (armSensor.hand.confidence.rotation > 0 && armSensor.hand.confidence.rotation >= handTarget.hand.target.confidence.rotation) {
handTarget.hand.target.transform.rotation = sensorTransform.rotation * sensor2TargetRotation;
handTarget.hand.target.transform.rotation = sensorComponent.transform.rotation * sensor2TargetRotation;
handTarget.hand.target.confidence.rotation = armSensor.hand.confidence.rotation;
}
if (armSensor.hand.confidence.position > 0 && armSensor.hand.confidence.position >= handTarget.hand.target.confidence.position) {
handTarget.hand.target.transform.position = sensorTransform.position + handTarget.hand.target.transform.rotation * sensor2TargetPosition;
handTarget.hand.target.transform.position = sensorComponent.transform.position + handTarget.hand.target.transform.rotation * sensor2TargetPosition;
handTarget.hand.target.confidence.position = armSensor.hand.confidence.position;
}
else if (handTarget.hand.target.confidence.position == 0) // Hmm. I could insert the arm model here when confidence.rotation > 0.5F for example!
@ -370,19 +370,21 @@ namespace Passer.Humanoid {
public abstract class ArmController : Humanoid.ArmSensor {
protected Humanoid.Tracking.Sensor.ID sensorID;
protected Controller controllerInput;
public Humanoid.Tracking.ArmController oldController;
public Passer.Tracking.ControllerComponent controller;
//public Humanoid.Tracking.ArmController oldController;
public Passer.Tracking.ControllerComponent controller => sensorComponent as Passer.Tracking.ControllerComponent;
public override Tracker.Status status {
get {
if (oldController == null)
if (sensorComponent == null)
return Tracker.Status.Unavailable;
else
return oldController.status;
return sensorComponent.status;
}
set {
if (oldController != null)
oldController.status = value;
if (sensorComponent != null)
sensorComponent.status = value;
}
}
@ -399,11 +401,11 @@ namespace Passer.Humanoid {
if (tracker == null || !tracker.enabled || !enabled)
return;
oldController.Update();
if (oldController.status != Tracker.Status.Tracking)
return;
//oldController.Update();
//if (oldController.status != Tracker.Status.Tracking)
// return;
UpdateSensorTransform(oldController);
//UpdateSensorTransform(oldController);
UpdateTargetTransform();
}

View File

@ -7,13 +7,13 @@ namespace Passer.Humanoid {
using Passer.Tracking;
public abstract class HeadSensor : HumanoidSensor {
protected HeadTarget headTarget {
get { return target as HeadTarget; }
}
protected HeadTarget headTarget => target as HeadTarget;
// get { return target as HeadTarget; }
//}
protected HumanoidControl humanoid => headTarget.humanoid;
protected new Tracking.HeadSensor sensor;
//protected new Tracking.HeadSensor sensor;
#region Manage
@ -42,8 +42,8 @@ namespace Passer.Humanoid {
Init(target);
SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
sensorTransformProp.objectReferenceValue = sensorTransform;
//SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
//sensorTransformProp.objectReferenceValue = sensorTransform;
SerializedProperty targetProp = sensorProp.FindPropertyRelative("target");
targetProp.objectReferenceValue = base.target;
@ -61,11 +61,11 @@ namespace Passer.Humanoid {
}
public void RemoveController(SerializedProperty sensorProp) {
if (sensorProp == null)
return;
//if (sensorProp == null)
// return;
SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
sensorTransformProp.objectReferenceValue = null;
//SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
//sensorTransformProp.objectReferenceValue = null;
}
#endif
@ -79,13 +79,13 @@ namespace Passer.Humanoid {
if (tracker == null || !tracker.enabled || !enabled)
return;
status = sensor.Update();
UpdateSensorTransform(sensor);
//status = sensor.Update();
//UpdateSensorTransform(sensor);
if (status != Tracker.Status.Tracking)
return;
//if (status != Tracker.Status.Tracking)
// return;
UpdateHeadTargetTransform(sensor);
//UpdateHeadTargetTransform(sensor);
}
protected virtual void UpdateHeadTargetTransform(Humanoid.Tracking.HeadSensor headTracker) {

View File

@ -12,7 +12,7 @@ namespace Passer.Humanoid {
public new virtual HumanoidTracker tracker => null;
protected Tracking.Sensor sensor;
//protected Tracking.Sensor sensor;
[System.NonSerialized]
public const string _name = "";
@ -30,9 +30,9 @@ namespace Passer.Humanoid {
}
public virtual void CheckSensorTransform() {
if (enabled && sensorTransform == null)
if (enabled && sensorComponent == null)
CreateSensorTransform();
else if (!enabled && sensorTransform != null)
else if (!enabled && sensorComponent != null)
RemoveSensorTransform();
if (sensor2TargetRotation.x + sensor2TargetRotation.y + sensor2TargetRotation.z + sensor2TargetRotation.w == 0)
@ -57,8 +57,9 @@ namespace Passer.Humanoid {
sensorObject.name = resourceName;
}
sensorTransform = sensorObject.transform;
sensorTransform.parent = tracker.trackerComponent.transform;
//sensorTransform = sensorObject.transform;
//tracker.trackerComponent = tracker.GetTrackerComponent();
sensorObject.transform.parent = tracker.trackerComponent.transform;
sensor2TargetPosition = -_sensor2TargetPosition;
sensor2TargetRotation = Quaternion.Inverse(_sensor2TargetRotation);
@ -68,17 +69,17 @@ namespace Passer.Humanoid {
protected void RemoveSensorTransform() {
if (Application.isPlaying)
Object.Destroy(sensorTransform.gameObject);
Object.Destroy(sensorComponent.gameObject);
else
Object.DestroyImmediate(sensorTransform.gameObject, true);
Object.DestroyImmediate(sensorComponent.gameObject, true);
}
public virtual void SetSensor2Target() {
if (sensorTransform == null || target == null)
if (sensorComponent == null || target == null)
return;
sensor2TargetRotation = Quaternion.Inverse(sensorTransform.rotation) * target.transform.rotation;
sensor2TargetPosition = -InverseTransformPointUnscaled(target.transform, sensorTransform.position);
sensor2TargetRotation = Quaternion.Inverse(sensorComponent.transform.rotation) * target.transform.rotation;
sensor2TargetPosition = -InverseTransformPointUnscaled(target.transform, sensorComponent.transform.position);
}
public static Vector3 InverseTransformPointUnscaled(Transform transform, Vector3 position) {
@ -92,28 +93,28 @@ namespace Passer.Humanoid {
if (tracker == null || !tracker.enabled || !enabled)
return;
if (sensor == null)
return;
//if (sensor == null)
// return;
sensor.Update();
if (sensor.status != Tracker.Status.Tracking)
return;
//sensor.Update();
//if (sensor.status != Tracker.Status.Tracking)
// return;
UpdateSensorTransform(sensor);
//UpdateSensorTransform(sensor);
UpdateTargetTransform();
}
protected void UpdateSensorTransform(Tracking.Sensor sensor) {
if (sensorTransform == null)
if (sensorComponent == null)
return;
if (status == Tracker.Status.Tracking) {
sensorTransform.gameObject.SetActive(true);
sensorTransform.position = HumanoidTarget.ToVector3(sensor.sensorPosition);
sensorTransform.rotation = HumanoidTarget.ToQuaternion(sensor.sensorRotation);
sensorComponent.gameObject.SetActive(true);
sensorComponent.transform.position = HumanoidTarget.ToVector3(sensor.sensorPosition);
sensorComponent.transform.rotation = HumanoidTarget.ToQuaternion(sensor.sensorRotation);
}
else {
sensorTransform.gameObject.SetActive(false);
sensorComponent.gameObject.SetActive(false);
}
}
@ -124,11 +125,11 @@ namespace Passer.Humanoid {
return;
}
if (sensorTransform == null)
if (sensorComponent == null)
return;
sensorTransform.position = TransformPointUnscaled(targetTransform, -sensor2TargetPosition);
sensorTransform.rotation = targetTransform.rotation * Quaternion.Inverse(sensor2TargetRotation);
sensorComponent.transform.position = TransformPointUnscaled(targetTransform, -sensor2TargetPosition);
sensorComponent.transform.rotation = targetTransform.rotation * Quaternion.Inverse(sensor2TargetRotation);
}
protected static Vector3 TransformPointUnscaled(Transform transform, Vector3 position) {
@ -137,8 +138,8 @@ namespace Passer.Humanoid {
}
protected virtual void UpdateTargetTransform() {
target.transform.rotation = sensorTransform.rotation * sensor2TargetRotation;
target.transform.position = sensorTransform.position + target.transform.rotation * sensor2TargetPosition;
target.transform.rotation = sensorComponent.transform.rotation * sensor2TargetRotation;
target.transform.position = sensorComponent.transform.position + target.transform.rotation * sensor2TargetPosition;
}
#endregion

View File

@ -39,8 +39,8 @@ namespace Passer.Humanoid {
Init(footTarget);
SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
sensorTransformProp.objectReferenceValue = sensorTransform;
//SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
//sensorTransformProp.objectReferenceValue = sensorTransform;
SerializedProperty targetProp = sensorProp.FindPropertyRelative("target");
targetProp.objectReferenceValue = target;
@ -49,7 +49,7 @@ namespace Passer.Humanoid {
return;
CheckSensorTransform();
sensorTransformProp.objectReferenceValue = sensorTransform;
//sensorTransformProp.objectReferenceValue = sensorTransform;
ShowSensor(footTarget.humanoid.showRealObjects && footTarget.showRealObjects);

View File

@ -13,15 +13,9 @@ namespace Passer {
public virtual string name { get { return ""; } }
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) {
target = targetTransform.GetComponent<Target>();
@ -33,13 +27,16 @@ namespace Passer {
}
public virtual void ShowSensor(bool shown) {
if (sensorTransform == null)
if (sensorComponent == null)
return;
if (!Application.isPlaying)
sensorTransform.gameObject.SetActive(shown);
//if (sensorTransform == null)
// return;
Renderer[] renderers = sensorTransform.GetComponentsInChildren<Renderer>();
if (!Application.isPlaying)
sensorComponent.gameObject.SetActive(shown);
Renderer[] renderers = sensorComponent.GetComponentsInChildren<Renderer>();
for (int i = 0; i < renderers.Length; i++) {
if (!(renderers[i] is LineRenderer))
renderers[i].enabled = shown;

View File

@ -15,7 +15,7 @@ namespace Passer.Humanoid {
protected HumanoidControl humanoid => hipsTarget.humanoid;
//public SensorComponent sensorComponent;
protected new Tracking.TorsoSensor sensor;
//protected new Tracking.TorsoSensor sensor;
#region Manage
@ -43,8 +43,8 @@ namespace Passer.Humanoid {
Init(hipsTarget);
SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
sensorTransformProp.objectReferenceValue = sensorTransform;
//SerializedProperty sensorTransformProp = sensorProp.FindPropertyRelative("sensorTransform");
//sensorTransformProp.objectReferenceValue = sensorTransform;
SerializedProperty targetProp = sensorProp.FindPropertyRelative("target");
targetProp.objectReferenceValue = target;
@ -53,7 +53,7 @@ namespace Passer.Humanoid {
return;
CheckSensorTransform();
sensorTransformProp.objectReferenceValue = sensorTransform;
//sensorTransformProp.objectReferenceValue = sensorTransform;
ShowSensor(hipsTarget.humanoid.showRealObjects && hipsTarget.showRealObjects);

View File

@ -36,11 +36,12 @@ namespace Passer {
/// The tracking device
/// </summary>
public TrackerComponent trackerComponent;
/// <summary>
/// Returns trackerComponent and creates a new TrackerComponent if it does not exist
/// </summary>
/// <returns></returns>
public abstract TrackerComponent GetTrackerComponent();
///// <summary>
///// Returns trackerComponent and creates a new TrackerComponent if it does not exist
///// </summary>
///// <returns></returns>
//public abstract TrackerComponent GetTrackerComponent();
#region SubTrackers

View File

@ -8,79 +8,61 @@ namespace Passer.Humanoid {
#if pUNITYXR
public override string name => "Unity XR";
#if hCUSTOM
public override HumanoidTracker tracker => humanoid.unityXR;
#endif
public override SensorComponent GetSensorComponent() {
if (sensorComponent != null)
return sensorComponent;
// public override SensorComponent GetSensorComponent() {
// if (sensorComponent != null)
// return sensorComponent;
Vector3 position = handTarget.transform.TransformPoint(handTarget.isLeft ? -0.1F : 0.1F, -0.05F, 0.04F);
Quaternion localRotation = handTarget.isLeft ? Quaternion.Euler(180, 90, 90) : Quaternion.Euler(180, -90, -90);
Quaternion rotation = handTarget.transform.rotation * localRotation;
#if hSTEAMVR
if (UnityXRDevice.xrDevice == UnityXRDevice.XRDeviceType.OpenVR) {
SteamVR steamVR = unityXR.trackerComponent as SteamVR;
controller = steamVR.GetController(handTarget.isLeft, position, rotation);
}
else
#endif
{
UnityXR unityXRcomponent = unityXR.trackerComponent as UnityXR;
controller = unityXRcomponent.GetController(handTarget.isLeft, position, rotation);
}
return controller as SensorComponent;
}
// Vector3 position = handTarget.transform.TransformPoint(handTarget.isLeft ? -0.1F : 0.1F, -0.05F, 0.04F);
// Quaternion localRotation = handTarget.isLeft ? Quaternion.Euler(180, 90, 90) : Quaternion.Euler(180, -90, -90);
// Quaternion rotation = handTarget.transform.rotation * localRotation;
//#if hSTEAMVR
// if (UnityXRDevice.xrDevice == UnityXRDevice.XRDeviceType.OpenVR) {
// SteamVR steamVR = unityXR.trackerComponent as SteamVR;
// controller = steamVR.GetController(handTarget.isLeft, position, rotation);
// }
// else
//#endif
// {
// UnityXR unityXRcomponent = unityXR.trackerComponent as UnityXR;
// controller = unityXRcomponent.GetController(handTarget.isLeft, position, rotation);
// }
// return controller as SensorComponent;
// }
protected UnityXRTracker unityXR => humanoid.unityXR;
protected UnityXR unityXR => tracker.trackerComponent as UnityXR;
#region Manage
public override void CheckSensor(HandTarget handTarget) {
#if pUNITYXR
if (this.handTarget == null)
this.target = handTarget;
if (this.handTarget == null)
return;
if (unityXR.trackerComponent == null && enabled)
unityXR.CheckTracker(handTarget.humanoid);
if (tracker.trackerComponent == null && enabled)
tracker.CheckTracker(humanoid);
if (enabled && unityXR.trackerComponent != null && unityXR.trackerComponent.enabled) {
if (controller == null) {
if (enabled && tracker.trackerComponent != null && tracker.trackerComponent.enabled) {
if (sensorComponent == null) {
Vector3 position = handTarget.transform.TransformPoint(handTarget.isLeft ? -0.1F : 0.1F, -0.05F, 0.04F);
Quaternion localRotation = handTarget.isLeft ? Quaternion.Euler(180, 90, 90) : Quaternion.Euler(180, -90, -90);
Quaternion rotation = handTarget.transform.rotation * localRotation;
#if hSTEAMVR
if (UnityXRDevice.xrDevice == UnityXRDevice.XRDeviceType.OpenVR) {
SteamVR steamVR = unityXR.trackerComponent as SteamVR;
controller = steamVR.GetController(handTarget.isLeft, position, rotation);
}
else
#endif
{
UnityXR unityXRcomponent = unityXR.trackerComponent as UnityXR;
controller = unityXRcomponent.GetController(handTarget.isLeft, position, rotation);
}
sensorComponent = unityXR.GetController(handTarget.isLeft, position, rotation);
}
if (controller != null)
sensorTransform = controller.transform;
if (!Application.isPlaying)
SetSensor2Target();
}
else {
#if UNITY_EDITOR
if (!Application.isPlaying) {
if (controller != null)
Object.DestroyImmediate(controller.gameObject, true);
if (sensorComponent != null)
Object.DestroyImmediate(sensorComponent.gameObject, true);
}
#endif
controller = null;
sensorTransform = null;
sensorComponent = null;
}
#endif
}
#endregion Manage
@ -98,13 +80,13 @@ namespace Passer.Humanoid {
Quaternion localRotation = handTarget.isLeft ? Quaternion.Euler(180, 90, 90) : Quaternion.Euler(180, -90, -90);
Quaternion rotation = handTarget.transform.rotation * localRotation;
UnityXR unityXRcomponent = unityXR.trackerComponent as UnityXR;
UnityXR unityXRcomponent = unityXR; //.trackerComponent as UnityXR;
if (unityXRcomponent != null)
controller = unityXRcomponent.GetController(handTarget.isLeft, position, rotation);
sensorComponent = unityXRcomponent.GetController(handTarget.isLeft, position, rotation);
if (controller != null) {
controller.show = handTarget.humanoid.showRealObjects && handTarget.showRealObjects;
sensorTransform = controller.transform;
if (sensorComponent != null) {
sensorComponent.show = handTarget.humanoid.showRealObjects && handTarget.showRealObjects;
//sensorTransform = controller.transform;
}
SetSensor2Target();

View File

@ -15,26 +15,26 @@ namespace Passer.Humanoid {
public UnityXR unityXR => tracker.trackerComponent as UnityXR;
//protected UnityXRTracker unityXR => humanoid.unityXR;
public override SensorComponent GetSensorComponent() {
if (sensorComponent != null)
return sensorComponent;
//public override SensorComponent GetSensorComponent() {
// if (sensorComponent != null)
// return sensorComponent;
// Make sure the unityXR component exists
humanoid.unityXR.GetTrackerComponent();
// // Make sure the unityXR component exists
// humanoid.unityXR.CheckTracker(humanoid);
Vector3 position = headTarget.transform.TransformPoint(headTarget.head2eyes);
Quaternion rotation = headTarget.transform.rotation;
UnityXR unityXRtracker = tracker.trackerComponent as UnityXR;
sensorComponent = unityXRtracker.GetHmd(position, rotation);
// 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 (sensorComponent != null)
// // sensorTransform = sensorComponent.transform;
if (!Application.isPlaying)
SetSensor2Target();
// if (!Application.isPlaying)
// SetSensor2Target();
return sensorComponent;
}
// return sensorComponent;
//}
#region Manage
@ -44,19 +44,15 @@ namespace Passer.Humanoid {
if (this.headTarget == null)
return;
if (tracker.trackerComponent == null) {
if (tracker.trackerComponent == null)
tracker.CheckTracker(humanoid);
}
if (enabled && tracker.trackerComponent != null && tracker.trackerComponent.enabled) {
if (sensorComponent == null) {
Vector3 position = headTarget.transform.TransformPoint(headTarget.head2eyes);
Quaternion rotation = headTarget.transform.rotation;
UnityXR unityXRtracker = tracker.trackerComponent as UnityXR;
sensorComponent = unityXRtracker.GetHmd(position, rotation);
sensorComponent = unityXR.GetHmd(position, rotation);
}
if (sensorComponent != null)
sensorTransform = sensorComponent.transform;
if (!Application.isPlaying)
SetSensor2Target();
@ -69,7 +65,6 @@ namespace Passer.Humanoid {
}
#endif
sensorComponent = null;
sensorTransform = null;
}
}
@ -112,8 +107,8 @@ namespace Passer.Humanoid {
UnityXR unityXRtracker = tracker.trackerComponent as UnityXR;
sensorComponent = unityXRtracker.GetHmd(position, rotation);
}
if (sensorComponent != null)
sensorTransform = sensorComponent.transform;
//if (sensorComponent != null)
// sensorTransform = sensorComponent.transform;
SetSensor2Target();
CheckSensorTransform();

View File

@ -129,11 +129,6 @@ namespace Passer.Humanoid {
#region Manage
public override TrackerComponent GetTrackerComponent() {
CheckTracker(humanoid, UnityXR.Get);
return trackerComponent;
}
public override void CheckTracker(HumanoidControl humanoid) {
CheckTracker(humanoid, UnityXR.Get);
}

View File

@ -688,6 +688,7 @@ namespace Passer.Humanoid {
/// <summary>Checks the humanoid for presence of Targets and adds them if they are not found </summary>
public void DetermineTargets() {
CheckTargetRig(this);
HeadTarget.DetermineTarget(this);
HandTarget.DetermineTarget(this, true);
HandTarget.DetermineTarget(this, false);
@ -762,7 +763,7 @@ namespace Passer.Humanoid {
public void UpdateSensorsFromTargets() {
#if hLEAP
// temporary solution? Leap may need a Head Sensor Component for the camera tracker?
leapTracker.UpdateTrackerFromTarget(leapTracker.isHeadMounted);
leap.UpdateTrackerFromTarget(leap.isHeadMounted);
#endif
hipsTarget.UpdateSensorsFromTarget();
headTarget.UpdateSensorsFromTarget();
@ -1023,7 +1024,7 @@ namespace Passer.Humanoid {
#endif
/// <summary>The Leap Motion tracker</summary>
#if hLEAP
public LeapTracker leapTracker = new LeapTracker();
public LeapTracker leap = new LeapTracker();
#endif
/// <summary>The Intel RealSense tracker</summary>
#if hREALSENSE
@ -1119,7 +1120,7 @@ namespace Passer.Humanoid {
neuronTracker,
#endif
#if hLEAP
leapTracker,
leap,
#endif
#if hREALSENSE
realsense,
@ -1358,7 +1359,7 @@ namespace Passer.Humanoid {
#region Stop
public void OnApplicationQuit() {
#if hLEAP
leapTracker.StopTracker();
leap.StopTracker();
#endif
#if hNEURON
neuronTracker.StopTracker();