Ejemplo n.º 1
0
        /// <inheritdoc />
        public override int BuildVertexBuffer(ParticleVertexBuilder vtxBuilder, Vector3 invViewX, Vector3 invViewY, ref Vector3 spaceTranslation, ref Quaternion spaceRotation, float spaceScale, ParticleSorter sorter)
        {
            SamplerPosition?.UpdateChanges();

            SamplerSize?.UpdateChanges();

            return(0);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the combined position for the particle, adding its field value (if any) to its sampled value from the curve
        /// </summary>
        /// <param name="particle"></param>
        /// <param name="positionField"></param>
        /// <param name="lifeField">Normalized life for sampling</param>
        /// <returns>Particle's current 3D position</returns>
        protected unsafe Vector3 GetParticlePosition(Particle particle, ParticleFieldAccessor <Vector3> positionField, ParticleFieldAccessor <float> lifeField)
        {
            if (SamplerPosition == null)
            {
                return(particle.Get(positionField));
            }

            var life = 1f - (*((float *)particle[lifeField]));   // The Life field contains remaining life, so for sampling we take (1 - life)

            return(particle.Get(positionField) + SamplerPosition.Evaluate(life));
        }
Ejemplo n.º 3
0
        /// <inheritdoc />
        public override void PreUpdate()
        {
            SamplerPosition?.UpdateChanges();

            SamplerSize?.UpdateChanges();
        }