Code improvements
This commit is contained in:
parent
ae7112de56
commit
80a5581054
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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]
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -8,64 +8,48 @@ 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);
|
||||
sensorComponent = unityXR.GetController(handTarget.isLeft, position, rotation);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
UnityXR unityXRcomponent = unityXR.trackerComponent as UnityXR;
|
||||
controller = unityXRcomponent.GetController(handTarget.isLeft, position, rotation);
|
||||
}
|
||||
}
|
||||
|
||||
if (controller != null)
|
||||
sensorTransform = controller.transform;
|
||||
|
||||
if (!Application.isPlaying)
|
||||
SetSensor2Target();
|
||||
@ -73,14 +57,12 @@ namespace Passer.Humanoid {
|
||||
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();
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user