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;
        }
Esempio n. 3
0
        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;
                }
            }
        }
Esempio n. 4
0
 public void RemoveGeneration(MyParticleGeneration generation)
 {
     int index = m_generations.IndexOf(generation);
     RemoveGeneration(index);
 }
Esempio n. 5
0
        public void AddGeneration(MyParticleGeneration generation)
        {
            m_generations.Add(generation);

            if (m_instances != null)
            {
                foreach (MyParticleEffect effect in m_instances)
                {
                    effect.AddGeneration(generation.CreateInstance(effect));
                }
            }
        }