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); }