Example #1
0
        public void AddToRegister(string key, ICanCollide gameObject, RegisterSide side)
        {
            CheckObjectForNull(gameObject);

            var register = _collisionRegisters[key];

            if (side == RegisterSide.Left)
            {
                if (register.RegistredItems.Item1.Contains(gameObject))
                {
                    throw new GameObjectAlreadyExistsInRegisterException();
                }

                register.RegistredItems.Item1.Add(gameObject);
            }
            else
            {
                if (register.RegistredItems.Item2.Contains(gameObject))
                {
                    throw new GameObjectAlreadyExistsInRegisterException();
                }

                register.RegistredItems.Item2.Add(gameObject);
            }
        }
        public static bool CheckForCollision(ICanCollide first, ICanCollide second)
        {
            var firstFarVerticle  = new Vector2i(first.Position.X + first.Size.X, first.Position.Y + first.Size.Y);
            var secondFarVerticle = new Vector2i(second.Position.X + second.Size.X, second.Position.Y + second.Size.Y);


            return(SecondCollideWithFirstOnX(first, second, firstFarVerticle, secondFarVerticle) &&
                   SecondCollideWithFirstOnY(first, second, firstFarVerticle, secondFarVerticle));
        }
Example #3
0
        public void RemoveObjectFromAllRegisters(ICanCollide gameObject)
        {
            CheckObjectForNull(gameObject);

            foreach (var register in _collisionRegisters.Values)
            {
                register.RegistredItems.Item1.Remove(gameObject);
                register.RegistredItems.Item2.Remove(gameObject);
            }
        }
        /// <summary>
        /// Legg til et element i listene over elementer som kan kollidere dersom listene ikke allerede inneholder elementet
        /// </summary>
        /// <param name="canCollide">Elementet du vil legge inn</param>
        public void AddCollidable(ICanCollide canCollide)
        {
            if(_canCollideList.Contains(canCollide))
            {
                return;
            }
            if (canCollide == null)
            {
                Console.WriteLine("Unable to add collidable!");
                return;
            }

            _canCollideList.Add(canCollide);
            _listToCheck.Add(canCollide);
        }
Example #5
0
        public void RemoveObjectFromAllRegisterBySide(ICanCollide gameObject, RegisterSide side)
        {
            CheckObjectForNull(gameObject);

            foreach (var register in _collisionRegisters.Values)
            {
                if (side == RegisterSide.Left)
                {
                    register.RegistredItems.Item1.Remove(gameObject);
                }
                else
                {
                    register.RegistredItems.Item2.Remove(gameObject);
                }
            }
        }
Example #6
0
        public void RemoveObjectFromRegisterBySide(string key, ICanCollide gameObject, RegisterSide side)
        {
            CheckObjectForNull(gameObject);

            if (!_collisionRegisters.ContainsKey(key))
            {
                throw new KeyNotFoundInRegisterException();
            }

            var register = _collisionRegisters[key];

            if (side == RegisterSide.Left)
            {
                register.RegistredItems.Item1.Remove(gameObject);
            }
            else
            {
                register.RegistredItems.Item2.Remove(gameObject);
            }
        }
 /// <summary>
 /// Fjern et element i listene over elementer som kan kollidere
 /// </summary>
 /// <param name="toRemove"></param>
 public void RemoveCollidable(ICanCollide toRemove)
 {
     _canCollideList.Remove(toRemove);
     _listToCheck.Remove(toRemove);
 }
 private static bool SecondCollideWithFirstOnX(ICanCollide first, ICanCollide second, Vector2i firstFarVerticle, Vector2i secondFarVerticle)
 {
     return(ValueBeetweenValues(first.Position.X, second.Position.X, firstFarVerticle.X) ||
            ValueBeetweenValues(first.Position.X, secondFarVerticle.X, firstFarVerticle.X) ||
            ValueBeetweenValues(second.Position.X, first.Position.X, secondFarVerticle.X));
 }