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