Ejemplo n.º 1
0
 public override void Update(PlayState State, Worldspawn Worldspawn, GameObject Owner, int GOID)
 {
     var hitbox = Owner.QueryComponent<Hitbox>();
     var gobs = Worldspawn.SpacePartitionning
         ? Worldspawn.GetNearObjects<Lifespan>(Owner)
         : Worldspawn.GameObjects.Where(Gob => Gob.Value.HasComponent<Lifespan>());
     foreach (var gob in gobs)
     {
         var lifeSpan = gob.Value.QueryComponent<Lifespan>();
         if (lifeSpan.Group != Group) continue;
         var boundingBox = gob.Value.QueryComponent<Hitbox>();
         if (hitbox.Intersects(boundingBox))
         {
             lifeSpan.Kill();
             if (lifeSpan.IsDead)
                 if (InstantlyKill != null) InstantlyKill(this, new InstantlyKilledEventArgs { State = State, GOID = GOID, Owner = Owner, Worldspawn = Worldspawn, DealtTo = gob });
         }
     }
 }
Ejemplo n.º 2
0
        public override void Update(PlayState State, Worldspawn Worldspawn, GameObject Owner, int GOID)
        {
            var hitbox = Owner.QueryComponent<Hitbox>();
            var gobs = Worldspawn.SpacePartitionning
                ? Worldspawn.GetNearObjects<Lifespan>(Owner)
                : Worldspawn.GameObjects.Where(Gob => Gob.Value.HasComponent<Lifespan>() );
            foreach (var gob in gobs)
            {
                var lifeSpan = gob.Value.QueryComponent<Lifespan>();
                if(lifeSpan.Group != Group) continue;
                var boundingBox = gob.Value.QueryComponent<Hitbox>();
                if (!hitbox.Intersects(boundingBox)) continue;

                var args = new DamageDealtEventArgs { State = State, Worldspawn = Worldspawn, DealtTo = gob, Owner = Owner, GOID = GOID, Amount = Damages };
                var oldLife = lifeSpan.Current;
                lifeSpan.Hurt(Damages);
                args.EffectiveAmount = lifeSpan.Current - oldLife;
                if (DamageDealt != null) DamageDealt(this, args);
            }
        }