private void OnProjectileDestroyed(ProjectilePipelineParameters param) { var velocity = param.projectile.Velocity; var baseRotation = velocity.Rotation(); var spawnPos = param.projectile.Position + Vector2.ClampMagnitude(velocity, Constants.COLLISION_CORRECTION_EPS); var spawnParam = new ProjectileSpawnParameters(spawnPos, baseRotation, velocity.magnitude, _settings.ttl, param.inheritableModules, param.inheritableModules, param.projectile.IsDummy); _factory.Create(spawnParam); spawnParam.rotation = baseRotation + _settings.spreadAngle; _factory.Create(spawnParam); spawnParam.rotation = baseRotation - _settings.spreadAngle; _factory.Create(spawnParam); }
private void StopTimer(ProjectilePipelineParameters parameters) { UnsubscribeLoop(); }
private void StartTimer(ProjectilePipelineParameters parameters) { FixedTravelTime = 0.0f; SubscribeLoop(); }