diff --git a/Runtime/HumanoidControl/Scripts/Interaction/HandInteraction.cs b/Runtime/HumanoidControl/Scripts/Interaction/HandInteraction.cs index 316b0b3..09b8bfa 100644 --- a/Runtime/HumanoidControl/Scripts/Interaction/HandInteraction.cs +++ b/Runtime/HumanoidControl/Scripts/Interaction/HandInteraction.cs @@ -24,8 +24,7 @@ namespace Passer.Humanoid { if (humanoid.isRemote) return; - if (grabSocket != null) - grabSocket.handTarget = this; + grabSocket.handTarget = this; // Gun Interaction pointer creates an Event System // First solve that before enabling this warning @@ -33,7 +32,11 @@ namespace Passer.Humanoid { inputModule = humanoid.GetComponent(); if (inputModule == null) { +#if UNITY_6000_0_OR_NEWER + inputModule = Object.FindAnyObjectByType(); +#else inputModule = Object.FindObjectOfType(); +#endif if (inputModule == null) { inputModule = humanoid.gameObject.AddComponent(); } @@ -826,7 +829,11 @@ namespace Passer.Humanoid { Rigidbody objRigidbody = RigidbodyDisabled.UnparentRigidbody(handPalm, grabbedObject.transform); if (objRigidbody != null && !objRigidbody.isKinematic) { if (handRigidbody != null) { +#if UNITY_6000_0_OR_NEWER objRigidbody.linearVelocity = handRigidbody.linearVelocity; +#else + objRigidbody.velocity = handRigidbody.velocity; +#endif objRigidbody.angularVelocity = handRigidbody.angularVelocity; } HumanoidNetworking.ReenableNetworkSync(objRigidbody.gameObject); @@ -854,13 +861,17 @@ namespace Passer.Humanoid { //grabbedRigidbody.centerOfMass = handTarget.storedCOM; if (grabbedRigidbody.isKinematic == false) { +#if UNITY_6000_0_OR_NEWER grabbedRigidbody.linearVelocity = handRigidbody.linearVelocity; +#else + grabbedRigidbody.velocity = handRigidbody.velocity; +#endif grabbedRigidbody.angularVelocity = handRigidbody.angularVelocity; } if (grabbedHandle != null) LetGoHandle(grabbedHandle); - + handRigidbody.mass = 1; } this.grabbedRigidbody = false; diff --git a/Runtime/HumanoidControl/Scripts/Movements/HandMovements.cs b/Runtime/HumanoidControl/Scripts/Movements/HandMovements.cs index 55015e1..649789a 100644 --- a/Runtime/HumanoidControl/Scripts/Movements/HandMovements.cs +++ b/Runtime/HumanoidControl/Scripts/Movements/HandMovements.cs @@ -53,8 +53,13 @@ namespace Passer.Humanoid { handTarget.handRigidbody = handTarget.hand.bone.transform.gameObject.AddComponent(); } handTarget.handRigidbody.mass = 1; +#if UNITY_6000_0_OR_NEWER handTarget.handRigidbody.linearDamping = 0; handTarget.handRigidbody.angularDamping = 10; +#else + handTarget.handRigidbody.drag = 0; + handTarget.handRigidbody.angularDrag = 10; +#endif handTarget.handRigidbody.useGravity = false; handTarget.handRigidbody.isKinematic = true; handTarget.handRigidbody.interpolation = RigidbodyInterpolation.None; diff --git a/Runtime/HumanoidControl/Scripts/Networking/Roboid/HumanoidPlayerRoboid.cs b/Runtime/HumanoidControl/Scripts/Networking/Roboid/HumanoidPlayerRoboid.cs index 6966cf1..f1a1a85 100644 --- a/Runtime/HumanoidControl/Scripts/Networking/Roboid/HumanoidPlayerRoboid.cs +++ b/Runtime/HumanoidControl/Scripts/Networking/Roboid/HumanoidPlayerRoboid.cs @@ -5,7 +5,7 @@ using System.Net; using System.Net.Sockets; using System.Threading.Tasks; using UnityEngine; -using GLTFast; +//using GLTFast; #if hNW_ROBOID diff --git a/Runtime/HumanoidControl/Scripts/Physics/HandPhysics.cs b/Runtime/HumanoidControl/Scripts/Physics/HandPhysics.cs index b25e2be..18e9efd 100644 --- a/Runtime/HumanoidControl/Scripts/Physics/HandPhysics.cs +++ b/Runtime/HumanoidControl/Scripts/Physics/HandPhysics.cs @@ -227,7 +227,11 @@ namespace Passer.Humanoid { //Compensate for absolute rigidbody speed (specifically when on a moving platform) if (handRigidbody != null) { +#if UNITY_6000_0_OR_NEWER Vector3 residualVelocity = handRigidbody.linearVelocity - velocityTowardsTarget; +#else + Vector3 residualVelocity = handRigidbody.velocity - velocityTowardsTarget; +#endif damper += residualVelocity * 10; } } @@ -552,7 +556,11 @@ namespace Passer.Humanoid { Vector3 velocityTarget = (positionDelta * velocityMagic) * Time.fixedDeltaTime; if (float.IsNaN(velocityTarget.x) == false) +#if UNITY_6000_0_OR_NEWER handRigidbody.linearVelocity = Vector3.MoveTowards(handRigidbody.linearVelocity, velocityTarget, MaxVelocityChange); +#else + handRigidbody.velocity = Vector3.MoveTowards(handRigidbody.velocity, velocityTarget, MaxVelocityChange); +#endif rotationDelta.ToAngleAxis(out angle, out axis); diff --git a/Runtime/HumanoidControl/Scripts/Physics/RigidbodyData.cs b/Runtime/HumanoidControl/Scripts/Physics/RigidbodyData.cs index 8da4f09..b870927 100644 --- a/Runtime/HumanoidControl/Scripts/Physics/RigidbodyData.cs +++ b/Runtime/HumanoidControl/Scripts/Physics/RigidbodyData.cs @@ -15,8 +15,13 @@ namespace Passer { public RigidbodyData(Rigidbody rb) { mass = rb.mass; +#if UNITY_6000_0_OR_NEWER drag = rb.linearDamping; angularDrag = rb.angularDamping; +#else + drag = rb.drag; + angularDrag = rb.angularDrag; +#endif useGravity = rb.useGravity; isKinematic = rb.isKinematic; interpolation = rb.interpolation; @@ -28,8 +33,13 @@ namespace Passer { public void CopyToRigidbody(Rigidbody rb) { rb.mass = mass; +#if UNITY_6000_0_OR_NEWER rb.linearDamping = drag; rb.angularDamping = angularDrag; +#else + rb.drag = drag; + rb.angularDrag = angularDrag; +#endif rb.useGravity = useGravity; rb.isKinematic = isKinematic; rb.interpolation = interpolation; diff --git a/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs b/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs index f37308f..0850657 100644 --- a/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs +++ b/Runtime/HumanoidControl/Scripts/Targets/HandTarget.cs @@ -103,13 +103,7 @@ namespace Passer.Humanoid { [System.Serializable] [HelpURL("https://passervr.com/apis/HumanoidControl/Unity/class_passer_1_1_humanoid_1_1_hand_target.html")] public partial class HandTarget : HumanoidTarget { - /// - /// Pseudo-constructor because Unity does not use real constructors - /// - /// The humanoid for this hand target - /// Is this the left hand target? - public void Constructor(HumanoidControl humanoid, bool isLeft) { - this.humanoid = humanoid; + public HandTarget() { shoulder = new TargetedShoulderBone(this); upperArm = new TargetedUpperArmBone(this); forearm = new TargetedForearmBone(this); @@ -122,11 +116,6 @@ namespace Passer.Humanoid { }; fingers = new FingersTarget(this); - - this.isLeft = isLeft; - this.side = isLeft ? Side.Left : Side.Right; - this.outward = this.isLeft ? Vector3.left : Vector3.right; - InitSubTargets(); } #if pCEREBELLUM @@ -202,7 +191,7 @@ namespace Passer.Humanoid { #if pUNITYXR public UnityXRHand unityXR = new UnityXRHand(); #endif -#if hVIVETRACKER +#if hVIVETRACKER && UNITY_STANDALONE_WIN public ViveTrackerArm viveTracker = new ViveTrackerArm(); #endif #if hWINDOWSMR && UNITY_WSA_10_0 @@ -211,9 +200,9 @@ namespace Passer.Humanoid { #if hWAVEVR public WaveVRHand waveVR = new WaveVRHand(); #endif -//#if hNEURON -// public NeuronHand neuron = new NeuronHand(); -//#endif + //#if hNEURON + // public NeuronHand neuron = new NeuronHand(); + //#endif #if hLEAP public LeapHand leap = new LeapHand(); #endif @@ -291,11 +280,9 @@ namespace Passer.Humanoid { #if hWAVEVR waveVR, #endif -#if hSTEAMVR && UNITY_STANDALONE_WIN -#if hVIVETRACKER +#if hVIVETRACKER && UNITY_STANDALONE_WIN viveTracker, #endif -#endif #if hREALSENSE //realsenseHand, #endif @@ -334,7 +321,7 @@ namespace Passer.Humanoid { #if hLEAP (leap.handSkeleton != null && leap.handSkeleton.status == Tracker.Status.Tracking) | #endif -#if pUNITYXR && (hOCHAND || hVIVEHAND) +#if pUNITYXR && (hOCHAND || hHTCVIVE) (unityXR.handSkeleton != null && unityXR.handSkeleton.status == Tracker.Status.Tracking) | #endif false; @@ -390,7 +377,7 @@ namespace Passer.Humanoid { get { return hand; } } public Transform stretchlessTarget; - private TargetedBone[] subTargets; + private readonly TargetedBone[] subTargets; #region Shoulder @@ -728,10 +715,7 @@ namespace Passer.Humanoid { targetTransform.position = oldTarget.transform.position; targetTransform.rotation = oldTarget.transform.rotation; - //HandTarget handTarget = Constructor(humanoid, oldTarget.isLeft, targetTransform); - HandTarget handTarget = targetTransform.gameObject.AddComponent(); - handTarget.Constructor(humanoid, oldTarget.isLeft); - + HandTarget handTarget = Constructor(humanoid, oldTarget.isLeft, targetTransform); if (oldTarget.isLeft) { humanoid.leftHandTarget = handTarget; //handTarget.otherHand = humanoid.rightHandTarget; @@ -1210,7 +1194,11 @@ namespace Passer.Humanoid { private HumanoidControl GetHumanoid() { // This does not work for prefabs +#if UNITY_6000_0_OR_NEWER + HumanoidControl[] humanoids = FindObjectsByType(FindObjectsSortMode.None); +#else HumanoidControl[] humanoids = FindObjectsOfType(); +#endif for (int i = 0; i < humanoids.Length; i++) { if ((humanoids[i].leftHandTarget != null && humanoids[i].leftHandTarget.transform == this.transform) || @@ -1242,8 +1230,13 @@ namespace Passer.Humanoid { handRigidbody = hand.bone.transform.gameObject.AddComponent(); } handRigidbody.mass = 1; +#if UNITY_6000_0_OR_NEWER handRigidbody.linearDamping = 0; handRigidbody.angularDamping = 10; +#else + handRigidbody.drag = 0; + handRigidbody.angularDrag = 10; +#endif handRigidbody.useGravity = false; handRigidbody.isKinematic = true; handRigidbody.interpolation = RigidbodyInterpolation.None; @@ -1272,6 +1265,18 @@ namespace Passer.Humanoid { #endif } + // This function is called only when the humanoid is created + private static HandTarget Constructor(HumanoidControl humanoid, bool isLeft, Transform handTargetTransform) { + HandTarget handTarget = handTargetTransform.gameObject.AddComponent(); + handTarget.humanoid = humanoid; + handTarget.isLeft = isLeft; + handTarget.side = isLeft ? Side.Left : Side.Right; + handTarget.outward = handTarget.isLeft ? Vector3.left : Vector3.right; + + handTarget.InitSubTargets(); + return handTarget; + } + public override void NewComponent(HumanoidControl _humanoid) { humanoid = _humanoid; isLeft = (this == humanoid.leftHandTarget); @@ -1382,13 +1387,10 @@ namespace Passer.Humanoid { } handTarget = handTargetTransform.GetComponent(); - if (handTarget == null) - handTarget = handTargetTransform.gameObject.AddComponent(); + if (handTarget == null) + handTarget = Constructor(humanoid, isLeft, handTargetTransform); } - if (handTarget.subTargets == null) - handTarget.Constructor(humanoid, isLeft); - if (isLeft) humanoid.leftHandTarget = handTarget; else diff --git a/Runtime/HumanoidControl/Scripts/Tools/Redrop.cs b/Runtime/HumanoidControl/Scripts/Tools/Redrop.cs index aabb8a2..36097cb 100644 --- a/Runtime/HumanoidControl/Scripts/Tools/Redrop.cs +++ b/Runtime/HumanoidControl/Scripts/Tools/Redrop.cs @@ -12,18 +12,18 @@ namespace Passer { private Vector3 startPosition; private Quaternion startRotation; - void Start() { + protected void Start() { startPosition = transform.position; startRotation = transform.rotation; } - void Update() { + protected void Update() { if (groundCollider == null && transform.position.y < 0) { MoveToStart(); } } - private void OnCollisionEnter(Collision collision) { + protected void OnCollisionEnter(Collision collision) { if (collision.collider == groundCollider) { MoveToStart(); } @@ -34,7 +34,11 @@ namespace Passer { if (thisRigidbody != null) { thisRigidbody.MovePosition(new Vector3(startPosition.x, startPosition.y + 0.1F, startPosition.z)); thisRigidbody.MoveRotation(startRotation); +#if UNITY_6000_0_OR_NEWER thisRigidbody.linearVelocity = Vector3.zero; +#else + thisRigidbody.velocity = Vector3.zero; +#endif thisRigidbody.angularVelocity = Vector3.zero; } } diff --git a/Runtime/Tools/Physics/HybridPhysics.cs b/Runtime/Tools/Physics/HybridPhysics.cs index f95f69d..9d8f7e2 100644 --- a/Runtime/Tools/Physics/HybridPhysics.cs +++ b/Runtime/Tools/Physics/HybridPhysics.cs @@ -229,7 +229,11 @@ namespace Passer { damper = -velocityTowardsTarget * damping; //Compensate for absolute rigidbody speed (specifically when on a moving platform) +#if UNITY_6000_0_OR_NEWER Vector3 residualVelocity = thisRigidbody.linearVelocity - velocityTowardsTarget; +#else + Vector3 residualVelocity = thisRigidbody.velocity - velocityTowardsTarget; +#endif damper += residualVelocity * 10; } lastDistanceToTarget = distanceToTarget; diff --git a/Runtime/Tools/Physics/RigidbodyDisabled.cs b/Runtime/Tools/Physics/RigidbodyDisabled.cs index 72b04bf..31d3fe2 100644 --- a/Runtime/Tools/Physics/RigidbodyDisabled.cs +++ b/Runtime/Tools/Physics/RigidbodyDisabled.cs @@ -30,8 +30,13 @@ namespace Passer { public void CopyFromRigidbody(Rigidbody rb) { mass = rb.mass; +#if UNITY_6000_0_OR_NEWER drag = rb.linearDamping; angularDrag = rb.angularDamping; +#else + drag = rb.drag; + angularDrag = rb.angularDrag; +#endif useGravity = rb.useGravity; isKinematic = rb.isKinematic; interpolation = rb.interpolation; @@ -44,8 +49,13 @@ namespace Passer { public void CopyToRigidbody(Rigidbody rb) { rb.mass = mass; +#if UNITY_6000_0_OR_NEWER rb.linearDamping = drag; rb.angularDamping = angularDrag; +#else + rb.drag = drag; + rb.angularDrag = angularDrag; +#endif rb.useGravity = useGravity; rb.isKinematic = isKinematic; rb.interpolation = interpolation; diff --git a/Runtime/Tools/Scripts/InteractionPointer.cs b/Runtime/Tools/Scripts/InteractionPointer.cs index d7a3d0e..2551b9f 100644 --- a/Runtime/Tools/Scripts/InteractionPointer.cs +++ b/Runtime/Tools/Scripts/InteractionPointer.cs @@ -224,7 +224,11 @@ namespace Passer { protected virtual void Awake() { Transform rootTransform = this.transform.root; +#if UNITY_6000_0_OR_NEWER + interactionModule = FindAnyObjectByType(); +#else interactionModule = FindObjectOfType(); +#endif if (interactionModule == null) interactionModule = CreateInteractionModule(); EventSystem eventSystem = interactionModule.GetComponent(); @@ -585,7 +589,11 @@ namespace Passer { if (rayType != RayType.Gravity) return; +#if UNITY_6000_0_OR_NEWER rigidbody.linearVelocity = transform.forward * speed; +#else + rigidbody.velocity = transform.forward * speed; +#endif } public void LaunchPrefab(GameObject prefab) { diff --git a/Runtime/Tools/Scripts/Socket.cs b/Runtime/Tools/Scripts/Socket.cs index e787ada..52e7bdf 100644 --- a/Runtime/Tools/Scripts/Socket.cs +++ b/Runtime/Tools/Scripts/Socket.cs @@ -694,7 +694,11 @@ namespace Passer { Humanoid.HumanoidNetworking.ReenableNetworkSync(objRigidbody.gameObject); if (thisRigidbody != null) { +#if UNITY_6000_0_OR_NEWER objRigidbody.linearVelocity = thisRigidbody.linearVelocity; +#else + objRigidbody.velocity = thisRigidbody.velocity; +#endif objRigidbody.angularVelocity = thisRigidbody.angularVelocity; } @@ -761,7 +765,7 @@ namespace Passer { } } - #endregion Rigidbody +#endregion Rigidbody #region Static Object @@ -807,7 +811,7 @@ namespace Passer { #endregion Static Object - #endregion Release +#endregion Release #region Start