Types
sparticle-cpuinfo: structuresource
Fields
sprite: sprite-vec-data-2d
adgif: adgif-shader
radius: float
omega: float
vel-sxvel: vector
rot-syvel: vector
fade: rgbaf
acc: vector
rotvel3d: quaternion
vel: vector3s
accel: vector3s
scalevelx: float
scalevely: float
friction: float
timer: int32
flags: sp-cpuinfo-flag
user-int32: int32
user-uint32: uint32
user-float: float
user-pntr: uint32
user-sprite: sprite-vec-data-2d
func: basic
next-time: uint32
next-launcher: basic
cache-alpha: float
valid: symbol
binding: sparticle-launch-state
data: uint32
dataf: float
datac: uint8
sparticle-launchinfo: structuresource
sparticle-system: basicsource
Fields
type: type
blocks: int32
length: int32
num-alloc: int32
is-3d: basic
flags: uint32
alloc-table: pointer
cpuinfo-table: inline-array
vecdata-table: pointer
adgifdata-table: inline-array
Variables
*sp-60-hz*: symbolsource
Types
sp-field-init-spec: structuresource
Fields
field: sp-field-id
flags: sp-flag
initial-valuef: float
random-rangef: float
random-multf: float
initial-value: int32
random-range: int32
random-mult: int32
func: symbol
tex: texture-id
pntr: pointer
sym: symbol
sound: sound-spec
sparticle-group-item: structuresource
sparticle-launch-control: inline-array-classsource
Fields
type: type
length: int32
allocated-length: int32
_data: uint8
group: sparticle-launch-group
proc: process
local-clock: int32
fade: float
matrix: int32
last-spawn-frame: int32
last-spawn-time: int32
center: vector
data: sparticle-launch-state
Methods
initialize(obj: sparticle-launch-control, arg0: sparticle-launch-group, arg1: process) => nonesource
start a particle effect.
is-visible?(obj: sparticle-launch-control, arg0: vector) => symbolsource
Is the effect visible?. arg0 is the offset of the effect
spawn(obj: sparticle-launch-control, arg0: vector) => objectsource
kill-and-free-particles(obj: sparticle-launch-control) => nonesource
kill all the particles
kill-particles(obj: sparticle-launch-control) => nonesource
kill the particles, but don't clear flags or free hvdfs.
sparticle-launch-group: basicsource
Fields
type: type
length: int16
duration: uint16
linger-duration: uint16
flags: sp-group-flag
name: string
launcher: inline-array
bounds: sphere
Methods
create-launch-control(obj: sparticle-launch-group, arg0: process) => sparticle-launch-controlsource
create a launch-control to hold the state of the particles. stored on the process heap.
sparticle-launch-state: structuresource
Fields
group-item: sparticle-group-item
flags: sp-launch-state-flags
randomize: uint16
origin: vector
sprite3d: sprite-vec-data-3d
sprite: sparticle-cpuinfo
offset: uint32
accum: float
spawn-time: uint32
swarm: basic
seed: uint32
time: uint32
spec: basic
id: uint32
sparticle-launcher: basicsource
Types
particle-adgif-cache: basicsource
sp-launch-queue: basicsource
sp-queued-launch-particles: structuresource
sparticle-birthinfo: structuresource
Fields
sprite: uint32
anim: int32
anim-speed: float
birth-func: basic
joint-ppoint: int32
num-to-birth: float
sound: basic
dataf: float
data: uint32
Functions
birth-func-copy-omega-to-z(arg0: sparticle-system, arg1: sparticle-cpuinfo, arg2: sprite-vec-data-3d, arg3: sparticle-launcher, arg4: sparticle-launch-state) => nonesource
birth-func-copy-rot-color(arg0: sparticle-system, arg1: sparticle-cpuinfo, arg2: sprite-vec-data-3d, arg3: sparticle-launcher, arg4: sparticle-launch-state) => nonesource
birth-func-copy2-rot-color(arg0: sparticle-system, arg1: sparticle-cpuinfo, arg2: sprite-vec-data-3d, arg3: sparticle-launcher, arg4: sparticle-launch-state) => nonesource
birth-func-random-next-time(arg0: sparticle-system, arg1: sparticle-cpuinfo, arg2: sprite-vec-data-3d, arg3: sparticle-launcher, arg4: sparticle-launch-state) => nonesource
lookup-part-group-by-name(arg0: string) => basicsource
Find a particle group with the given name. Checks all of them, not very efficient.
lookup-part-group-pointer-by-name(arg0: string) => pointersource
Get a (pointer sparticle-launch-group) for the given name. Checks all of them, not very efficient.
part-group-pointer?(arg0: pointer) => symbolsource
Is the given pointer a pointer that was returned by lookup-part-group-pointer-by-name?
particle-setup-adgif(arg0: adgif-shader, arg1: texture-id) => nonesource
Set up the adgif for a particle and the given texture.
sp-adjust-launch(arg0: sparticle-launchinfo, arg1: sparticle-cpuinfo, arg2: inline-array) => nonesource
Adjust the fields based on the init-specs
sp-clear-queue() => nonesource
Launch all particles in the queue.
sp-euler-convert(arg0: sparticle-launchinfo, arg1: sparticle-cpuinfo) => nonesource
Convert rotations from euler angles to quaternions.
sp-init-fields!(arg0: pointer, arg1: inline-array, arg2: sp-field-id, arg3: sp-field-id, write-missing-fields: symbol) => inline-arraysource
sp-launch-particles-death(arg0: sparticle-system, arg1: sparticle-launcher, arg2: vector) => nonesource
sp-queue-launch(arg0: sparticle-system, arg1: sparticle-launcher, arg2: vector) => intsource
Queue a launch from the given launcher, at the given position.
sp-relaunch-particle-2d(arg0: object, arg1: sparticle-launcher, arg2: sparticle-cpuinfo, arg3: sprite-vec-data-3d) => nonesource
relaunch a 2d particle
sp-relaunch-particle-3d(arg0: object, arg1: sparticle-launcher, arg2: sparticle-cpuinfo, arg3: sprite-vec-data-3d) => nonesource
relaunch a 3d particle
sp-relaunch-setup-fields(arg0: object, arg1: sparticle-launcher, arg2: sparticle-cpuinfo, arg3: sprite-vec-data-3d) => nonesource
Reset fields of an existing particle
sp-rotate-system(arg0: sparticle-launchinfo, arg1: sparticle-cpuinfo, arg2: transformq) => nonesource
Apply a rotation to the particle launching.
sparticle-track-root(arg0: object, arg1: sparticle-cpuinfo, arg2: vector) => nonesource
track the root of the process drawable
sparticle-track-root-prim(arg0: object, arg1: sparticle-cpuinfo, arg2: vector) => nonesource
track the root of the collision geometry (must use collide-shape for root)
unlink-part-group-by-heap(arg0: kheap) => intsource
Find all particle groups that are stored in the specified heap and set them to 0.
Variables
*part-group-id-table*: arraysource
*part-id-table*: arraysource
*sp-launcher-enable*: symbolsource
*sp-launcher-lock*: symbolsource
SPARTICLE_QUEUE_SIZE: unknownsource
Functions
all-particles-50-to-60() => nonesource
all-particles-60-to-50() => nonesource
forall-particles(arg0: function, arg1: symbol, arg2: symbol) => nonesource
run function on all particles. arg1 for 2d, arg2 for 3d.
forall-particles-runner(arg0: function, arg1: sparticle-system) => nonesource
run function on all particles in the system.
forall-particles-with-key(arg0: sparticle-launch-control, arg1: function, arg2: symbol, arg3: symbol) => nonesource
call the given function on all particles with the given key. arg2 is 2d, arg3 is 3d.
forall-particles-with-key-runner(arg0: sparticle-launch-control, arg1: function, arg2: sparticle-system) => nonesource
call the given function on all particles with the given key (arg0)
kill-all-particles-in-level(arg0: level) => intsource
kill all particles belonging to the given level.
kill-all-particles-with-key(arg0: sparticle-launch-control) => nonesource
process-particles() => nonesource
main particle system update.
set-particle-frame-time(scaled-seconds: int) => nonesource
Adjusts particle frame time based on the frame-rate (scaled-seconds). Note: This used to be a case statement and has been rewritten as a more generic formula
sp-copy-from-spr(arg0: int, arg1: pointer, arg2: int) => nonesource
sp-copy-to-spr(arg0: int, arg1: pointer, arg2: int) => nonesource
sp-free-particle(arg0: sparticle-system, arg1: int, arg2: sparticle-cpuinfo, arg3: sprite-vec-data-2d) => nonesource
free a particle
sp-get-approx-alloc-size(arg0: sparticle-system, arg1: int) => intsource
get approximately the amount of sprite memory used.
sp-get-block-size(arg0: sparticle-system, arg1: int) => intsource
get the index of the highest used block for the given group (0 or 1)
sp-get-particle(arg0: sparticle-system, arg1: int, arg2: sparticle-launch-state) => sparticle-cpuinfosource
alloc a particle
sp-kill-particle(arg0: sparticle-system, arg1: sparticle-cpuinfo) => nonesource
kill the given particle
sp-orbiter(arg0: sparticle-system, arg1: sparticle-cpuinfo, arg2: vector) => nonesource
sp-particle-copy!(arg0: sparticle-cpuinfo, arg1: sparticle-cpuinfo) => nonesource
copy some of the particle state.
sp-process-block(arg0: sparticle-system, arg1: int, arg2: sprite-array-2d, arg3: int) => nonesource
update the given block of particles
sp-process-particle-system(arg0: sparticle-system, arg1: int, arg2: sprite-array-2d) => nonesource
update an entire particle system.
sparticle-50-to-60(arg0: sparticle-system, arg1: sparticle-cpuinfo, arg2: pointer) => nonesource
convert from 50hz to 60hz particles
sparticle-60-to-50(arg0: sparticle-system, arg1: sparticle-cpuinfo, arg2: pointer) => nonesource
convert from 60hz to 50hz particles
sparticle-kill-it(arg0: sparticle-system, arg1: sparticle-cpuinfo) => nonesource
kill a particle without freeing it.
sparticle-kill-it-level0(arg0: sparticle-system, arg1: sparticle-cpuinfo) => nonesource
kill all particles belonging to level 0
sparticle-kill-it-level1(arg0: sparticle-system, arg1: sparticle-cpuinfo) => nonesource
kill all particles belonging to level 1.