public static Entity MakeCharacterEntity(Game game, string name, string image, Vector2 position, Rectangle frame)
        {
            var e = new Entity()
            {
                Game = game,
                Name = name
            };

            var renderer = new RenderingAspect()
            {
                Name = "renderer"
            };
            e.Aspects.Add(renderer);

            var sprite = new SpriteAspect()
            {
                Name = "sprite",
                ImageFile = image,
                ImageFrame = frame,
                OrientationAspect = "collider",
                LayerDepth = 0.3f,
                CoordinateType = CoordinateType.World
            };
            e.Aspects.Add(sprite);

            var collider = new BoxCollisionAspect()
            {
                Name = "collider",
                Mass = 100,
                Position = position,
                IsStatic = false,
                Dimensions = frame
            };
            e.Aspects.Add(collider);

            var respawn = new RespawnAspect()
            {
                Bounds = new Rectangle(-512, -512, 2048, 1600),
                RespawnPosition = position
            };
            e.Aspects.Add(respawn);

            return e;
        }
 protected override void InitSubclass()
 {
     collider = Owner.Aspects.FindFirst<BoxCollisionAspect>();
     player = Entity.GetEntityByID(FirstLevel.PlayerID).Aspects.FindFirst <BoxCollisionAspect>();
     sprite = Owner.Aspects.FindFirst<SpriteAspect>();
 }
        protected override void LoadSubclassContent()
        {
            var template = new Entity()
            {
                IsTemplate = true,
                Game = Owner.Game,
                Name = "PROJETILE",
                Enabled = false
            };

            var projectileSprite = new SpriteAspect()
            {
                ImageFile = "Sprites/hobosquirrel",
                ImageFrame = new Rectangle(0, 154, 19, 12),
                OwnerID = template.EntityID,
                OrientationAspect = "orientation",
                LayerDepth = 0.3f,
                CoordinateType = CoordinateType.World,
                Scale = new Vector2(1.5f, 1.5f)
            };
            template.Aspects.Add(projectileSprite);

            var orientation = new BoxCollisionAspect()
            {
                Name = "orientation",
                OwnerID = template.EntityID,
                Mass = 50f,
                CollisionGroup = EntityTemplates.PlayerCollisionGroup,
                OnCollision = (geom1, geom2, contactList) =>
                {
                    Entity e2 = Entity.GetEntityByID(BoxCollisionAspect.FindEntityByGeomID(geom2.Id));
                    if (e2 != null && e2.Name == "Enemy1")
                    {
                        e2.Aspects.FindFirst<RespawnAspect>().Respawn();
                    }
                    return false;
                }
            };
            template.Aspects.Add(orientation);

            var rotater = new PinwheelRotaterAspect()
            {
                RotationSpeed = .015f,
                OwnerID = template.EntityID
            };
            template.Aspects.Add(rotater);

            var age = new AgeAspect() { OwnerID = template.EntityID };
            template.Aspects.Add(age);

            var render = new RenderingAspect()
            {
                OwnerID = template.EntityID,
                Visible = false
            };
            template.Aspects.Add(render);

            for (int i = 0; i < MaxNumberOfProjectiles; i++)
            {
                Projectiles[i] = (Entity)template.Clone();
                Projectiles[i].Initialize();
                Projectiles[i].LoadContent();
                projectileDirections[i] = 1;
                bool foo = Projectiles[i].Enabled;
            }
        }
        // TODO: Write Clone method for BoxCollisionAspect
        protected override IAspect CloneSubclass()
        {
            BoxCollisionAspect ba = new BoxCollisionAspect();

            ba.Position = this.Position;
            ba.Rotation = this.Rotation;
            ba.OnCollision = this.OnCollision;
            ba.Mass = this.mass;
            ba.IsStatic = this.IsStatic;
            ba.Dimensions = this.dimensions;
            ba.Enabled = this.Enabled;
            ba.CollisionGroup = this.CollisionGroup;

            return ba;
        }
        public static Entity NewStaticObjectEntity(Game game, string name, string image,
			Vector2 position, float layerDepth, CoordinateType coordinateType)
        {
            Entity e = new Entity();
            e.Game = game;
            e.Name = name;

            RenderingAspect renderer = new RenderingAspect();
            renderer.Name = "renderer";
            e.Aspects.Add(renderer);

            SpriteAspect sprite = new SpriteAspect();
            sprite.Name = "sprite";
            sprite.ImageFile = image;
            sprite.OrientationAspect = "collider";
            sprite.LayerDepth = layerDepth;
            sprite.CoordinateType = CoordinateType.World;
            e.Aspects.Add(sprite);

            BoxCollisionAspect collider = new BoxCollisionAspect();
            collider.Dimensions = sprite.ImageFrame;
            collider.Name = "collider";
            collider.Mass = 100;
            collider.Position = position;
            collider.IsStatic = true;
            e.Aspects.Add(collider);

            return e;
        }
        protected override void InitSubclass()
        {
            orientation = Owner.Aspects.FindByName<BoxCollisionAspect>(boxColliderName);
            MoveSpeed = 500;

            sprite = Owner.Aspects.FindFirst<ISprite>();

            projectileAttack = Owner.Aspects.FindFirst<ProjectileAspect>();
        }
 protected override void InitSubclass()
 {
     collider = Owner.Aspects.FindFirst<BoxCollisionAspect>();
 }