Exemplo n.º 1
0
        public void CreateShield(Vector3 position, Vector3 origin, float angle, AbilityTypes type, int senderTeamID)
        {
            if (angle < m_MIN_ANGLE_TO_CREATE)
            {
                Debug.Log("ShieldController: Cannot create shield. Angle is to small");
                return;
            }

            //Создать визуальное отображение щита
            ShieldVisuals shieldObj = PoolManager.GetObject(GameManager.Instance.PrefabLibrary.ShieldVisualsPrefab) as ShieldVisuals;

            //Создать програмное представление щита
            Shield shield = new Shield(position, origin, ShieldRadius, angle, type, senderTeamID, shieldObj);

            //Задать событие на уничтожение щита
            shieldObj.OnTimeElapsed = () =>
            {
                GameManager.Instance.GameState.DataContainerController.ShieldContainer.RemoveShield(shield);
            };

            //Добавить програмное представление щита в список активных щитов
            GameManager.Instance.GameState.DataContainerController.ShieldContainer.AddShield(shield);

            //Инициализировать визуальное обображение щита
            shieldObj.Init(type, position, origin, ShieldRadius, angle, ShieldExistsTimeMiliseconds);
        }
Exemplo n.º 2
0
        public Shield(Vector3 position, Vector3 origin, float radius, float angle, AbilityTypes type, int senderTeamID, ShieldVisuals objReference)
        {
            Position        = position;
            Origin          = origin;
            Radius          = radius;
            Angle           = angle;
            Type            = type;
            SenderTeamID    = senderTeamID;
            ObjectReference = objReference;

            m_SQRRadius = radius * radius;
        }