Пример #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);
            }
        }
Пример #2
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);
                }
            }
        }
Пример #3
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);
            }
        }