protected static void Shoot(WeaponCommandData commandData) { float _halfBulletAmount = 0f; float _angleStep = 0f; if (commandData.BulletAmount > 1) { _halfBulletAmount = (commandData.BulletAmount - 1) / 2f; _angleStep = commandData.SpreadAngle / _halfBulletAmount / 2f; } else { _halfBulletAmount = 0f; _angleStep = 0f; } for (int i = 0; i < commandData.BulletAmount; ++i) { GameObject bullet = BulletPoolsContainer.Instance.GetObjectFromPool(commandData.BulletType); (bullet.GetComponent(typeof(IBulletMovement)) as IBulletMovement).SpeedMultiplier = commandData.BulletSpeed; bullet.transform.position = commandData.Position; bullet.transform.localScale = commandData.BulletSize * Vector3.one; bullet.transform.localEulerAngles = new Vector3(0f, 0f, Vector2.Angle(Vector2.up, commandData.Direction) + (_angleStep * (i - _halfBulletAmount))); } }
public void StoreData() { _originalData = (WeaponCommandData)this.MemberwiseClone(); }
public void SetParametrs(WeaponCommandData commandData) { CommandData = commandData.Clone(); CommandData.StoreData(); }