Difference between revisions of "LlMakeFire"

From Second Life Wiki
Jump to navigation Jump to search
Line 22: Line 22:
}}
}}


todo: Write an equivalent llParticleSystem example script that duplicates the functionality of this particle command.
 
Beginning in 1.14, the simulator will be using llParticleSystem to emulate legacy llMakeFire particles.
 
llMakeFire(integer particle_count,
          float particle_scale,
          float particle_speed,
          float particle_lifetime,
          float source_cone,
          string source_texture_id,
          vector local_offset);
 
fakeMakeFire(integer particle_count, float particle_scale, float particle_speed,
            float particle_lifetime, float source_cone, string source_texture_id,
            vector local_offset)
{
//    local_offset is ignored
  llParticleSystem([
      PSYS_PART_FLAGS,            PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_WIND_MASK,
      PSYS_SRC_PATTERN,            PSYS_SRC_PATTERN_ANGLE_CONE,
      PSYS_PART_START_COLOR,        <1.0, 1.0, 1.0>,
      PSYS_PART_END_COLOR,        <1.0, 1.0, 1.0>,
      PSYS_PART_START_ALPHA,        0.50,
      PSYS_PART_END_ALPHA,        0.10,
      PSYS_PART_START_SCALE,        <particle_scale/2, particle_scale/2, 0.0>,
      PSYS_PART_END_SCALE,        <particle_scale, particle_scale, 0.0>,
      PSYS_PART_MAX_AGE,            0.5,
      PSYS_SRC_ACCEL,                <0.0, 0.0, 0.0>,
      PSYS_SRC_TEXTURE,            source_texture_id,
      PSYS_SRC_BURST_RATE,        5 / particle_count,
      PSYS_SRC_ANGLE_BEGIN,        0.0,
      PSYS_SRC_ANGLE_END,            source_cone * PI,
      PSYS_SRC_BURST_PART_COUNT,    1,
      PSYS_SRC_BURST_RADIUS,        0.0,
      PSYS_SRC_BURST_SPEED_MIN,    particle_speed,
      PSYS_SRC_BURST_SPEED_MAX,    particle_speed,
      PSYS_SRC_MAX_AGE,            particle_lifetime / 2,
      PSYS_SRC_OMEGA,                <0.0, 0.0, 0.0>
      ]);
  }
  //    Known discrepencies:
//    1) The original llMakeFire has random particle lifetime, which cannot be
//      created in the current particle system via a single call
  //    2) The original llMakeFire has continual particle growth throughout its
//      lifetime, ending well past the 4m limit of the current system, on long lived
//      particles
  //    3) several values are not taken 'verbatim' in the original particle system
//      (velocity is not m/sec for instance, and number of particles seems to be
//      wildly off), these are approximated loosely in this simulation via basic
//      divisors, which may not work out the same in some scenarios
  //    4) There is no way to duplicate the offset from the old functions within the
//      new particle system
//    5) These effects do not 'pump' like the older functions do,
//      i.e. its a single, set property, calling it 10 times won't cause
//      10x as many particles, as the old ones did

Revision as of 17:19, 23 March 2007

Emblem-important.png Deprecated
(This function has been deprecated, please use llParticleSystem instead.)

Summary

Function: llMakeFire( integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset );

Make fire like particles

• integer particles
• float scale
• float vel
• float lifetime
• float arc
• string texture
• vector offset

Caveats

  • This function causes the script to sleep for 0.1 seconds.
  • This function has been deprecated, please use llParticleSystem instead.
All Issues ~ Search JIRA for related Bugs

Examples

Deep Notes

Search JIRA for related Issues

Signature

function void llMakeFire( integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset );


Beginning in 1.14, the simulator will be using llParticleSystem to emulate legacy llMakeFire particles.

llMakeFire(integer particle_count,
         float particle_scale,
         float particle_speed,
         float particle_lifetime,
         float source_cone,
         string source_texture_id,
         vector local_offset);
fakeMakeFire(integer particle_count, float particle_scale, float particle_speed,
           float particle_lifetime, float source_cone, string source_texture_id,
           vector local_offset)
{
//    local_offset is ignored
  llParticleSystem([
      PSYS_PART_FLAGS,            PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_WIND_MASK,
      PSYS_SRC_PATTERN,            PSYS_SRC_PATTERN_ANGLE_CONE,
      PSYS_PART_START_COLOR,        <1.0, 1.0, 1.0>,
      PSYS_PART_END_COLOR,        <1.0, 1.0, 1.0>,
      PSYS_PART_START_ALPHA,        0.50,
      PSYS_PART_END_ALPHA,        0.10,
      PSYS_PART_START_SCALE,        <particle_scale/2, particle_scale/2, 0.0>,
      PSYS_PART_END_SCALE,        <particle_scale, particle_scale, 0.0>,
      PSYS_PART_MAX_AGE,            0.5,
      PSYS_SRC_ACCEL,                <0.0, 0.0, 0.0>,
      PSYS_SRC_TEXTURE,            source_texture_id,
      PSYS_SRC_BURST_RATE,        5 / particle_count,
      PSYS_SRC_ANGLE_BEGIN,        0.0,
      PSYS_SRC_ANGLE_END,            source_cone * PI,
      PSYS_SRC_BURST_PART_COUNT,    1,
      PSYS_SRC_BURST_RADIUS,        0.0,
      PSYS_SRC_BURST_SPEED_MIN,    particle_speed,
      PSYS_SRC_BURST_SPEED_MAX,    particle_speed,
      PSYS_SRC_MAX_AGE,            particle_lifetime / 2,
      PSYS_SRC_OMEGA,                <0.0, 0.0, 0.0>
      ]);
  }
 //    Known discrepencies:
//    1) The original llMakeFire has random particle lifetime, which cannot be
//       created in the current particle system via a single call
 //    2) The original llMakeFire has continual particle growth throughout its
//       lifetime, ending well past the 4m limit of the current system, on long lived
//       particles
 //    3) several values are not taken 'verbatim' in the original particle system
//       (velocity is not m/sec for instance, and number of particles seems to be
//       wildly off), these are approximated loosely in this simulation via basic
//       divisors, which may not work out the same in some scenarios
 //    4) There is no way to duplicate the offset from the old functions within the
//       new particle system
//    5) These effects do not 'pump' like the older functions do,
//       i.e. its a single, set property, calling it 10 times won't cause
//       10x as many particles, as the old ones did