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); }
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; }