Example #1
0
        void ISignalOnTriggerDynamic.OnTriggerDynamic(Frame f, DynamicCollisionInfo info)
        {
            var charOne = Entity.CastToCharacter(info.EntityA);

            if (charOne == null)
            {
                charOne = Entity.CastToCharacter(info.EntityB);
            }


            var charTwo = Entity.CastToProjectile(info.EntityA);

            if (charTwo == null)
            {
                charTwo = Entity.CastToProjectile(info.EntityB);
            }

            if (charTwo != null && charOne != null && !charTwo->Source.Equals(charOne->EntityRef))
            {
                //if it's a valid hit and we didn't hit ourself
                //destroy the bullet
                f.DestroyProjectile(charTwo);
                DamageData dmg = new DamageData()
                {
                    Character = charOne->EntityRef,
                    Type      = DamageType.Magical,
                    Damage    = 20
                };
                f.Signals.OnDamageBefore(&dmg);
                f.Signals.OnDamage(dmg);


                //f.Events.CharacterDamage(charOne->EntityRef, 10);
            }
        }
Example #2
0
            public void OnTriggerDynamic(DynamicCollisionInfo info)
            {
                var array   = _f._ISignalOnTriggerDynamicSystems;
                var systems = &(_f._globals->Systems);

                for (Int32 i = 0; i < array.Length; ++i)
                {
                    var s = array[i];
                    if (BitSet256.IsSet(systems, s.RuntimeIndex))
                    {
                        s.OnTriggerDynamic(_f, info);
                    }
                }
            }
Example #3
0
        public void OnTrigger(DynamicScene.Manifold manifold)
        {
            var aIsNull = manifold.A.Entity == null;

            if (aIsNull || manifold.B.Entity == null)
            {
                StaticCollisionInfo info;
                info            = default(StaticCollisionInfo);
                info.Entity     = (Entity *)(aIsNull ? manifold.B.Entity : manifold.A.Entity);
                info.StaticData = aIsNull ? manifold.A.StaticData : manifold.B.StaticData;
                _f.Signals.OnTriggerStatic(info);
                var typesHash = (Int32)info.Entity->Type;
                OnTriggerInternal(info, typesHash);
            }
            else
            {
                DynamicCollisionInfo info = default(DynamicCollisionInfo);
                info.EntityA = (Entity *)manifold.A.Entity;
                info.EntityB = (Entity *)manifold.B.Entity;
                _f.Signals.OnTriggerDynamic(info);
                var typesHash = (Int32)info.EntityA->Type | ((Int32)info.EntityB->Type << 16);
                OnTriggerInternal(info, typesHash);
            }
        }
Example #4
0
 partial void OnTriggerInternal(DynamicCollisionInfo info, Int32 typesHash);
Example #5
0
 partial void OnCollisionInternal(DynamicCollisionInfo info, Int32 typesHash)
 {
     switch (typesHash)
     {
     }
 }