Example #1
0
        public void CheckAttack(uint attackerID, Position attackerPos, float attackerScale, AttackCone attackCone, AttackInfo attackInfo)
        {
            readerWriterLockSlim.EnterReadLock();
            try
            {
                foreach (var shadowObj in ShadowObjectList)
                {
                    var pObj = shadowObj.PhysicsObj;
                    if (pObj.ID == attackerID || pObj.State.HasFlag(PhysicsState.Static))
                    {
                        continue;
                    }

                    var hitLocation = pObj.check_attack(attackerPos, attackerScale, attackCone, attackInfo.AttackRadius);
                    if (hitLocation != 0)
                    {
                        attackInfo.AddObject(pObj.ID, hitLocation);
                    }
                }
            }
            finally
            {
                readerWriterLockSlim.ExitReadLock();
            }
        }