public override void Process(Entity e)
        {
            Health h = healthMapper.Get(e);

            if (h == null)
                return;

            if (e.HasComponent<Origin>())
            {
                Origin o = e.GetComponent<Origin>();
                Entity parent = o.Parent;

                if (!parent.HasComponent<Body>() || !parent.GetComponent<Health>().IsAlive)
                {
                    if (e.HasComponent<Health>())
                        e.GetComponent<Health>().SetHealth(e, 0);
                    else
                        e.Delete();
                }
            }

            if (!h.IsAlive)
            {
                h.SetHealth(e, 0);
                e.Delete();
            }
        }
        /// <summary>
        /// Renders all entities with a sprite and a transform to the screen.
        /// </summary>
        /// <param name="e"></param>
        public override void Process(Entity e)
        {
            try
            {
                //Get sprite data and transform
                ITransform transform = e.GetComponent<ITransform>();
                Sprite sprite = e.GetComponent<Sprite>();

                if (sprite.Source != null)
                    //Draw to sprite batch
                    spriteBatch.Draw(
                        sprite.SpriteSheet.Texture,
                        ConvertUnits.ToDisplayUnits(transform.Position),
                        sprite.CurrentRectangle,
                        sprite.Color,
                        transform.Rotation,
                        sprite.Origin,
                        sprite.Scale,
                        SpriteEffects.None, sprite.Layer);
            }
            catch
            {
                e.Delete();
                Console.WriteLine("Exception try-caught in RenderSystem");
            }
        }
        public override void Process(Entity e)
        {
            Body b = e.GetComponent<Body>();

            if (b.Position.Y > ConvertUnits.ToSimUnits(ScreenHelper.Viewport.Height) / 2 || Math.Abs(b.Position.X) > ConvertUnits.ToSimUnits(ScreenHelper.Viewport.Width) / 2)
            {
                e.Delete();
            }
        }
        public override void Process(Entity e)
        {
            ITransform t = TransformMapper.Get(e);
            if (t == null)
                return;
            if (Vector2.Distance(t.Position, Vector2.Zero) > bound)
            {
                e.Delete();
                return;
            }

            if (e.HasComponent<Components.Timer>() && e.GetComponent<Components.Timer>().Update(world.Delta))
            {
                if (e.Tag == "Boss1")
                    Console.WriteLine("Whooops");

                e.Delete();
            }
        }
Beispiel #5
0
 public static void MoveToMemory(Entity i)
 {
     var obj = new MapObject()
     {
         Dynamic = !StaticProps.Contains(i.Handle),
         Hash = i.Model.Hash,
         Position = i.Position,
         Quaternion = Quaternion.GetEntityQuaternion(i),
         Rotation = i.Rotation,
         Type = ObjectTypes.Prop,
     };
     MemoryObjects.Add(obj);
     StreamedInHandles.Remove(i.Handle);
     StaticProps.Remove(i.Handle);
     i.Delete();
 }