Pascal Serrarens 17741d862a First commit
2022-01-12 10:50:57 +01:00

90 lines
2.4 KiB
C#

using UnityEngine;
namespace Passer {
using Passer.Tracking;
[System.Serializable]
public class ObjectTracker : Target {
#region Sensors
public SensorComponent sensorComponent;
public override void InitSensors() {
}
public override void StartSensors() {
}
#endregion
#region Settings
public bool physics;
#endregion
[SerializeField]
protected Vector3 sensor2ObjectPosition;
[SerializeField]
protected Quaternion sensor2ObjectRotation;
#region Start
public void Start() {
StartTarget();
}
public override void StartTarget() {
InitSensors();
StartSensors();
if (physics) {
StartPhysics();
}
}
private void StartPhysics() {
//Rigidbody targetRigidbody = targetTransform.gameObject.AddComponent<Rigidbody>();
//targetRigidbody.isKinematic = true;
//targetRigidbody.useGravity = false;
//ConfigurableJoint joint = gameObject.AddComponent<ConfigurableJoint>();
//joint.connectedBody = targetRigidbody;
//joint.autoConfigureConnectedAnchor = false;
//joint.anchor = Vector3.zero;
//joint.connectedAnchor = Vector3.zero;
//joint.xMotion = ConfigurableJointMotion.Locked;
//joint.yMotion = ConfigurableJointMotion.Locked;
//joint.zMotion = ConfigurableJointMotion.Locked;
//joint.angularXMotion = ConfigurableJointMotion.Locked;
//joint.angularYMotion = ConfigurableJointMotion.Locked;
//joint.angularZMotion = ConfigurableJointMotion.Locked;
}
#endregion
#region Update
void Update() {
UpdateTarget();
}
public override void UpdateTarget() {
sensorComponent.UpdateComponent();
UpdateTransform();
}
// See HumanoidSensor.UpdateTargetTransform
private void UpdateTransform() {
this.transform.rotation = sensorComponent.transform.rotation * sensor2ObjectRotation;
this.transform.position = sensorComponent.transform.position + this.transform.rotation * sensor2ObjectPosition;
}
public void ShowTrackers(bool shown) {
}
#endregion
}
}