예제 #1
0
        private void AddShape(Cv_ShapeData newShape, string id, Vector2 anchor,
                              string material, bool isBullet,
                              Cv_CollisionCategories collisionCategories   = null,
                              Cv_CollisionCategories collidesWith          = null,
                              Dictionary <int, string> collisionDirections = null)
        {
            newShape.IsBullet = isBullet;
            newShape.Material = material;
            newShape.ShapeID  = id;
            newShape.Anchor   = anchor;

            if (collisionCategories == null)
            {
                var categories = new Cv_CollisionCategories();
                categories.AddAllCategories();
                newShape.Categories = categories;
            }
            else
            {
                newShape.Categories = collisionCategories;
            }

            if (collidesWith == null)
            {
                var categories = new Cv_CollisionCategories();
                categories.AddAllCategories();
                newShape.CollidesWith = categories;
            }
            else
            {
                newShape.CollidesWith = collidesWith;
            }

            if (collisionDirections == null)
            {
                var directions = new Dictionary <int, string>();

                var _collidesWith = newShape.CollidesWith.GetCategoriesArray();
                foreach (var c in _collidesWith)
                {
                    directions.Add(c, "All");
                }
                newShape.CollisionDirections = directions;
            }
            else
            {
                newShape.CollisionDirections = collisionDirections;
            }

            m_Shapes.Add(newShape);

            var newEvt = new Cv_Event_NewCollisionShape(Owner.ID, newShape, this);

            Cv_EventManager.Instance.QueueEvent(newEvt, true);
        }