using XCEngine; namespace Gameplay { public sealed class PhysicsApiProbe : MonoBehaviour { public bool InitialHasRigidbody; public bool AddedRigidbody; public bool HasRigidbodyAfterAdd; public bool RigidbodyLookupSucceeded; public int ObservedBodyType; public float ObservedMass; public float ObservedLinearDamping; public float ObservedAngularDamping; public bool ObservedUseGravity; public bool ObservedEnableCCD; public Vector3 ObservedLinearVelocity; public Vector3 ObservedAngularVelocity; public bool RaycastHitDetected; public string RaycastHitName = string.Empty; public float RaycastHitDistance; public bool RaycastHitWasTrigger; public Vector3 RaycastHitPoint; public Vector3 RaycastHitNormal; public void Start() { InitialHasRigidbody = HasComponent(); AddedRigidbody = AddComponent() != null; HasRigidbodyAfterAdd = HasComponent(); RigidbodyLookupSucceeded = TryGetComponent(out Rigidbody rigidbody); if (rigidbody != null) { rigidbody.bodyType = PhysicsBodyType.Dynamic; rigidbody.mass = 2.5f; rigidbody.linearDamping = 0.25f; rigidbody.angularDamping = 0.5f; rigidbody.useGravity = false; rigidbody.enableCCD = true; rigidbody.linearVelocity = new Vector3(0.0f, 0.0f, 0.0f); rigidbody.angularVelocity = new Vector3(0.0f, 1.0f, 0.0f); ObservedBodyType = (int)rigidbody.bodyType; ObservedMass = rigidbody.mass; ObservedLinearDamping = rigidbody.linearDamping; ObservedAngularDamping = rigidbody.angularDamping; ObservedUseGravity = rigidbody.useGravity; ObservedEnableCCD = rigidbody.enableCCD; ObservedLinearVelocity = rigidbody.linearVelocity; ObservedAngularVelocity = rigidbody.angularVelocity; rigidbody.AddForce(new Vector3(10.0f, 0.0f, 0.0f), ForceMode.Impulse); } RaycastHitDetected = Physics.Raycast( new Vector3(0.0f, 3.0f, 0.0f), new Vector3(0.0f, 0.0f, -1.0f), out RaycastHit hit, 10.0f); if (RaycastHitDetected) { RaycastHitName = hit.gameObject != null ? hit.gameObject.name : string.Empty; RaycastHitDistance = hit.distance; RaycastHitWasTrigger = hit.isTrigger; RaycastHitPoint = hit.point; RaycastHitNormal = hit.normal; } } } }