private void ExecCollisionProcess(Collision collision) { float collisionVelocity = this.colliderVelocities[Array.IndexOf(this.colliders, collision.contacts[0].thisCollider)]; SIGVerseLogger.Info("HSR Collision Detection! Time=" + Time.time + ", Collision Velocity=" + collisionVelocity + ", Part=" + collision.contacts[0].thisCollider.name + ", Collided object=" + SIGVerseUtils.GetHierarchyPath(collision.collider.transform)); // Effect GameObject effect = MonoBehaviour.Instantiate(this.collisionEffect); Vector3 contactPoint = SIGVerseUtils.CalcContactAveragePoint(collision); effect.transform.position = contactPoint; effect.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); Destroy(effect, 1.0f); // Send the collision notification foreach (GameObject destination in this.collisionNotificationDestinations) { ExecuteEvents.Execute <IHSRCollisionHandler> ( target: destination, eventData: null, functor: (reciever, eventData) => reciever.OnHsrCollisionEnter(collision, collisionVelocity, 0.5f) ); } this.collidedTime = Time.time; }
private void ExecCollisionProcess(CollisionType collisionType, Collision collision) { SIGVerseLogger.Info("Object collision occurred. name=" + this.name + " Collided object=" + SIGVerseUtils.GetHierarchyPath(collision.collider.transform) + ", vel=" + collision.relativeVelocity); // Effect GameObject effect = MonoBehaviour.Instantiate(this.collisionEffect); Vector3 contactPoint = SIGVerseUtils.CalcContactAveragePoint(collision); effect.transform.position = contactPoint; effect.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); Destroy(effect, 1.0f); // Sound if (this.objectCollisionAudioSource != null) { this.objectCollisionAudioSource.Play(); } foreach (GameObject destination in this.destinations) { ExecuteEvents.Execute <ITransferredCollisionHandler> ( target: destination, eventData: null, functor: (reciever, eventData) => reciever.OnTransferredCollisionEnter(collisionType, collision, collision.relativeVelocity.magnitude, 0.1f) ); } }
protected static string GetDataLine(string elapsedTime, Collision collision, float collisionVelocity, float effectScale, string dataType) { Vector3 contactAve = SIGVerseUtils.CalcContactAveragePoint(collision); string dataLine = elapsedTime + "," + dataType; dataLine += "\t" + contactAve.x + "\t" + contactAve.y + "\t" + contactAve.z + "\t" + effectScale; // Following data is unused now dataLine += "\t" + collisionVelocity + "\t" + SIGVerseUtils.GetHierarchyPath(collision.contacts[0].thisCollider.transform) + "\t" + SIGVerseUtils.GetHierarchyPath(collision.contacts[0].otherCollider.transform); return(dataLine); }