public void Start(MyParticleGeneration generation) { System.Diagnostics.Debug.Assert(Life > 0); m_elapsedTime = 0; m_normalizedTime = 0.0f; m_elapsedTimeDivider = VRage.Game.MyEngineConstants.UPDATE_STEP_SIZE_IN_SECONDS / Life; m_generation = generation; MyUtils.AssertIsValid(StartPosition); MyUtils.AssertIsValid(Angle); MyUtils.AssertIsValid(Velocity); MyUtils.AssertIsValid(RotationSpeed); m_actualPosition = StartPosition; m_previousPosition = m_actualPosition; m_actualAngle = Angle; if (PivotRotation != null && PivotDistance != null) { Vector3 rotation; float distance; PivotRotation.GetInterpolatedValue<Vector3>(0, out rotation); PivotDistance.GetInterpolatedValue<float>(0, out distance); Quaternion rotationQ = Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(rotation.Y), MathHelper.ToRadians(rotation.X), MathHelper.ToRadians(rotation.Z)); m_actualPivot = Vector3.Transform(Vector3.Forward, rotationQ) * distance; } }
public void Start(MyParticleGeneration generation) { System.Diagnostics.Debug.Assert(Life > 0); m_elapsedTime = 0; m_normalizedTime = 0.0f; m_elapsedTimeDivider = MyEngineConstants.UPDATE_STEP_SIZE_IN_SECONDS / Life; m_generation = generation; MyUtils.AssertIsValid(StartPosition); MyUtils.AssertIsValid(Angle); MyUtils.AssertIsValid(Velocity); MyUtils.AssertIsValid(RotationSpeed); m_actualPosition = StartPosition; m_actualAngle = Angle; }
public void Start(MyParticleGeneration generation) { System.Diagnostics.Debug.Assert(Life > 0); m_elapsedTime = 0; m_normalizedTime = 0.0f; m_elapsedTimeDivider = VRage.Game.MyEngineConstants.UPDATE_STEP_SIZE_IN_SECONDS / Life; m_generation = generation; MyUtils.AssertIsValid(StartPosition); MyUtils.AssertIsValid(Angle); MyUtils.AssertIsValid(Velocity); m_actualPosition = StartPosition; m_previousPosition = m_actualPosition; m_actualAngle = new Vector3(MathHelper.ToRadians(Angle.X), MathHelper.ToRadians(Angle.Y), MathHelper.ToRadians(Angle.Z)); if (Pivot != null) { Pivot.GetInterpolatedValue<Vector3>(0, out m_actualPivot); } if (PivotRotation != null) { PivotRotation.GetInterpolatedValue<Vector3>(0, out m_actualPivotRotation); } m_arrayIndex = -1; if (ArrayIndex != null) { ArrayIndex.GetInterpolatedValue<int>(m_normalizedTime, out m_arrayIndex); int arrayOffset = m_generation.ArrayOffset; Vector3 arraySize = m_generation.ArraySize; if (arraySize.X > 0 && arraySize.Y > 0) { int arrayModulo = m_generation.ArrayModulo == 0 ? (int)arraySize.X * (int)arraySize.Y : m_generation.ArrayModulo; m_arrayIndex = arrayOffset + m_arrayIndex % arrayModulo; } } }
public void RemoveGeneration(MyParticleGeneration generation) { int index = m_generations.IndexOf(generation); RemoveGeneration(index); }
public void AddGeneration(MyParticleGeneration generation) { m_generations.Add(generation); if (m_instances != null) { foreach (MyParticleEffect effect in m_instances) { effect.AddGeneration(generation.CreateInstance(effect)); } } }