private static void StartWave() { //m_meteorList.Add(MyMeteor.SpawnRandomLargeDebug(sphere.Center + sunDir * 500 + MyVRageUtils.GetRandomVector3Normalized() * sphere.Radius, sphere)); var sunDir = MySector.DirectionToSunNormalized; var waveMeteorCount = MyUtils.GetRandomFloat(Math.Min(2, m_meteorcount - 3), m_meteorcount + 3); for (int i = 0; i < waveMeteorCount; i++) { var randCircle = MyUtils.GetRandomVector3CircleNormalized(); var rand = MyUtils.GetRandomFloat(0, 1); Vector3D randomCircleInPlain = randCircle.X * m_rightVector + randCircle.Z * m_downVector; var hitPosition = m_currentTarget.Value.Center + Math.Pow(rand, 0.7f) * m_currentTarget.Value.Radius * randomCircleInPlain; var toSun = sunDir * (2000 + 50 * i); randCircle = MyUtils.GetRandomVector3CircleNormalized(); randomCircleInPlain = randCircle.X * m_rightVector + randCircle.Z * m_downVector; var realPosition = hitPosition + toSun + (float)Math.Tan(MyUtils.GetRandomFloat(0, (float)Math.PI / 18)) * toSun.Length() * randomCircleInPlain; if (MyUtils.GetRandomInt(5) == 0) { m_meteorList.Add(MyMeteor.SpawnRandomLarge(realPosition, Vector3.Normalize(hitPosition - realPosition))); } else { m_meteorList.Add(MyMeteor.SpawnRandomSmall(realPosition, Vector3.Normalize(hitPosition - realPosition))); } } }