//------------------------------------------------------------------------------------------------------------------------ // Add() //------------------------------------------------------------------------------------------------------------------------ public void Add(GameObject gameObject) { if (gameObject.collider != null && !colliderList.Contains (gameObject)) { colliderList.Add(gameObject); } MethodInfo info = gameObject.GetType().GetMethod("OnCollision", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); if (info != null) { CollisionDelegate onCollision = (CollisionDelegate)Delegate.CreateDelegate(typeof(CollisionDelegate), gameObject, info, false); if (onCollision != null && !_collisionReferences.ContainsKey (gameObject)) { ColliderInfo colliderInfo = new ColliderInfo(gameObject, onCollision); _collisionReferences[gameObject] = colliderInfo; activeColliderList.Add(colliderInfo); } } else { validateCase(gameObject); } }
//------------------------------------------------------------------------------------------------------------------------ // validateCase() //------------------------------------------------------------------------------------------------------------------------ private void validateCase(GameObject gameObject) { MethodInfo info = gameObject.GetType().GetMethod("OnCollision", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); if (info != null) { throw new Exception("'OnCollision' function was not binded. Please check it's correct case (capital O?)"); } }