Пример #1
0
        //------------------------------------------------------------------------------------------------------------------------
        //                                                        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);
            }
        }
Пример #2
0
 //------------------------------------------------------------------------------------------------------------------------
 //                                                        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?)");
     }
 }