diff --git a/Runtime/HumanoidControl/Scripts/Extensions/BodySkeleton.cs b/Runtime/HumanoidControl/Scripts/Extensions/BodySkeleton.cs
index 92d7f07..6b401bd 100644
--- a/Runtime/HumanoidControl/Scripts/Extensions/BodySkeleton.cs
+++ b/Runtime/HumanoidControl/Scripts/Extensions/BodySkeleton.cs
@@ -69,7 +69,7 @@ namespace Passer.Tracking {
if (boneRenderer != null) {
Vector3 localParentPosition = bone.transform.InverseTransformPoint(bone.transform.parent.position);
boneRenderer.SetPosition(1, localParentPosition);
- //boneRenderer.enabled = show;
+ boneRenderer.enabled = show;
}
}
}
diff --git a/Runtime/HumanoidControl/Scripts/Extensions/SensorComponent.cs b/Runtime/HumanoidControl/Scripts/Extensions/SensorComponent.cs
index a1ace42..eccbef5 100644
--- a/Runtime/HumanoidControl/Scripts/Extensions/SensorComponent.cs
+++ b/Runtime/HumanoidControl/Scripts/Extensions/SensorComponent.cs
@@ -6,7 +6,7 @@ namespace Passer.Tracking {
/// A sensor component is used to add tracking to a transform
///
/// Custom sensor implementation can be made by deriving from this class.
- public abstract class SensorComponent : MonoBehaviour {
+ public class SensorComponent : MonoBehaviour {
///
/// The transform which is used as the root of the tracking space
///
diff --git a/Runtime/HumanoidControl/Scripts/Extensions/TrackedBone.cs b/Runtime/HumanoidControl/Scripts/Extensions/TrackedBone.cs
index 2a5a30b..6016253 100644
--- a/Runtime/HumanoidControl/Scripts/Extensions/TrackedBone.cs
+++ b/Runtime/HumanoidControl/Scripts/Extensions/TrackedBone.cs
@@ -9,11 +9,12 @@ namespace Passer.Tracking {
protected static Material boneWhite;
- public static TrackedBone Create(string name, Transform parent) {
+ public static TrackedBone Create(string name, Transform parent, bool addRenderer = true) {
GameObject boneGO = new GameObject(name);
boneGO.transform.SetParent(parent, false);
- AddBoneRenderer(boneGO);
+ if (addRenderer)
+ AddBoneRenderer(boneGO);
TrackedBone bone = new TrackedBone() {
transform = boneGO.transform
diff --git a/Runtime/HumanoidControl/Scripts/HumanoidControl.cs b/Runtime/HumanoidControl/Scripts/HumanoidControl.cs
index afe7028..2d17871 100644
--- a/Runtime/HumanoidControl/Scripts/HumanoidControl.cs
+++ b/Runtime/HumanoidControl/Scripts/HumanoidControl.cs
@@ -1184,12 +1184,23 @@ namespace Passer.Humanoid {
//if (gameControllerEnabled && traditionalInput != null)
// traditionalInput.UpdateGameController(gameController);
+ InitializeTrackingConfidence();
+
for (int i = 0; i < trackers.Length; i++) {
if (trackers[i] != null)
trackers[i].UpdateTracker();
}
}
+ protected void InitializeTrackingConfidence() {
+ hipsTarget.InitializeTrackingConfidence();
+ headTarget.InitializeTrackingConfidence();
+ leftHandTarget.InitializeTrackingConfidence();
+ rightHandTarget.InitializeTrackingConfidence();
+ leftFootTarget.InitializeTrackingConfidence();
+ rightFootTarget.InitializeTrackingConfidence();
+ }
+
protected void StartSensors() {
hipsTarget.StartSensors();
headTarget.StartSensors();
@@ -1627,6 +1638,16 @@ namespace Passer.Humanoid {
//targetVelocity += Vector3.right * x;
}
+ ///
+ /// Moves the humanoid in 2D space
+ ///
+ /// The velocity to move with
+ /// The velocity axis are mapped as follows:
+ /// x = left/right movement
+ /// y = forward/backward movement
+ public virtual void Move(Vector2 velocity) {
+ targetVelocity = new Vector3(velocity.x, 0, velocity.y);
+ }
/// Moves the humanoid
public virtual void Move(Vector3 velocity) {
@@ -1645,8 +1666,7 @@ namespace Passer.Humanoid {
/// Rotates the humanoid along the Y axis
/// The speed in degrees per second
public void Rotate(float angularSpeed) {
- angularSpeed *= Time.deltaTime * rotationSpeed;
- //transform.RotateAround(hipsTarget.transform.position, hipsTarget.transform.up, angularSpeed);
+ angularSpeed *= Time.deltaTime;
transform.RotateAround(headTarget.transform.position, hipsTarget.transform.up, angularSpeed);
}
diff --git a/Runtime/HumanoidControl/Scripts/ObjectTracker.cs b/Runtime/HumanoidControl/Scripts/ObjectTracker.cs
index 1440326..9fd4be9 100644
--- a/Runtime/HumanoidControl/Scripts/ObjectTracker.cs
+++ b/Runtime/HumanoidControl/Scripts/ObjectTracker.cs
@@ -69,6 +69,9 @@ namespace Passer {
UpdateTarget();
}
+ public override void InitializeTrackingConfidence() {
+ }
+
public override void UpdateTarget() {
sensorComponent.UpdateComponent();
diff --git a/Runtime/HumanoidControl/Scripts/Targets/FootTarget.cs b/Runtime/HumanoidControl/Scripts/Targets/FootTarget.cs
index f2d6a50..f3fecb2 100644
--- a/Runtime/HumanoidControl/Scripts/Targets/FootTarget.cs
+++ b/Runtime/HumanoidControl/Scripts/Targets/FootTarget.cs
@@ -832,10 +832,17 @@ namespace Passer.Humanoid {
#region Update
- public override void UpdateTarget() {
+ public override void InitializeTrackingConfidence() {
upperLeg.target.confidence = Confidence.none;
lowerLeg.target.confidence = Confidence.none;
foot.target.confidence = Confidence.none;
+ }
+
+ public override void UpdateTarget() {
+ // If the targets are update in the tracker, this will reset the confidence...
+ //upperLeg.target.confidence = Confidence.none;
+ //lowerLeg.target.confidence = Confidence.none;
+ //foot.target.confidence = Confidence.none;
UpdateSensors();
diff --git a/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs b/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs
index 3cbb66e..e3c5e29 100644
--- a/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs
+++ b/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs
@@ -1473,6 +1473,13 @@ namespace Passer.Humanoid {
#region Update
+ public override void InitializeTrackingConfidence() {
+ hand.target.confidence.Degrade();
+ forearm.target.confidence.Degrade();
+ upperArm.target.confidence.Degrade();
+ shoulder.target.confidence.Degrade();
+ }
+
public bool grabbedChanged;
public override void UpdateTarget() {
@@ -1484,10 +1491,10 @@ namespace Passer.Humanoid {
grabbedChanged = (lastGrabbedObject != grabbedObject);
- hand.target.confidence.Degrade();
- forearm.target.confidence.Degrade();
- upperArm.target.confidence.Degrade();
- shoulder.target.confidence.Degrade();
+ //hand.target.confidence.Degrade();
+ //forearm.target.confidence.Degrade();
+ //upperArm.target.confidence.Degrade();
+ //shoulder.target.confidence.Degrade();
UpdateSensors();
diff --git a/Runtime/HumanoidControl/Scripts/Targets/HeadTarget.cs b/Runtime/HumanoidControl/Scripts/Targets/HeadTarget.cs
index 98341e1..6d86a75 100644
--- a/Runtime/HumanoidControl/Scripts/Targets/HeadTarget.cs
+++ b/Runtime/HumanoidControl/Scripts/Targets/HeadTarget.cs
@@ -881,12 +881,18 @@ namespace Passer.Humanoid {
#region Update
+ public override void InitializeTrackingConfidence() {
+ neck.target.confidence.Degrade();
+ head.target.confidence.Degrade();
+
+ }
+
/// Update all head sensors
public override void UpdateTarget() {
tracking = false;
- neck.target.confidence.Degrade();
- head.target.confidence.Degrade();
+ //neck.target.confidence.Degrade();
+ //head.target.confidence.Degrade();
#if hFACE
if (head.bone.transform != null)
diff --git a/Runtime/HumanoidControl/Scripts/Targets/HipsTarget.cs b/Runtime/HumanoidControl/Scripts/Targets/HipsTarget.cs
index bb7a7eb..8f46c21 100644
--- a/Runtime/HumanoidControl/Scripts/Targets/HipsTarget.cs
+++ b/Runtime/HumanoidControl/Scripts/Targets/HipsTarget.cs
@@ -618,10 +618,16 @@ namespace Passer.Humanoid {
#region Update
- public override void UpdateTarget() {
+ public override void InitializeTrackingConfidence() {
hips.target.confidence.Degrade();
spine.target.confidence = Confidence.none;
chest.target.confidence = Confidence.none;
+ }
+
+ public override void UpdateTarget() {
+ //hips.target.confidence.Degrade();
+ //spine.target.confidence = Confidence.none;
+ //chest.target.confidence = Confidence.none;
UpdateSensors();
diff --git a/Runtime/HumanoidControl/Scripts/Targets/Target.cs b/Runtime/HumanoidControl/Scripts/Targets/Target.cs
index a195590..fe2b0ca 100644
--- a/Runtime/HumanoidControl/Scripts/Targets/Target.cs
+++ b/Runtime/HumanoidControl/Scripts/Targets/Target.cs
@@ -33,6 +33,11 @@ namespace Passer {
public virtual void StartSensors() { }
protected virtual void UpdateSensors() { }
public virtual void StopSensors() { }
+
+ ///
+ /// Sets the tracking confidence before all tracking information is updated
+ ///
+ public abstract void InitializeTrackingConfidence();
public abstract void UpdateTarget();
public static List SetColliderToTrigger(GameObject obj) {