Difference between revisions of "Variables"

From The Powder Toy
Jump to: navigation, search
(General: Suggested more info be posted on how PMAP works works.)
(General)
Line 7: Line 7:
 
! Variable || What it returns
 
! Variable || What it returns
 
|-
 
|-
| pmap[y][x] || Particle-map. (pmap[y][x]&0xFF) returns the particle at (x,y), (pmap[y][x]>>8) returns the index of the particle at (x,y). '''Please expand on what "returns the particle" means. Does it mean returns the particle type? Does it mean returns all information (vx,vy,temp,tmp,ctype, etc) on the particle? Please explain.'''
+
| pmap[y][x] || Particle-map. (pmap[y][x]&0xFF) returns the particle type at (x,y), (pmap[y][x]>>8) returns the index of the particle at (x,y).  
 
|-
 
|-
 
| bmap[y][x] || Block-map. Returns wall at [y][x].
 
| bmap[y][x] || Block-map. Returns wall at [y][x].

Revision as of 00:52, 18 January 2012

This is a list of useful variables and usages of them inside the source.


General

Variable What it returns
pmap[y][x] Particle-map. (pmap[y][x]&0xFF) returns the particle type at (x,y), (pmap[y][x]>>8) returns the index of the particle at (x,y).
bmap[y][x] Block-map. Returns wall at [y][x].
emap[y][x] Electronics-map. Used for conductive walls.
r usually preset to pmap[y][x]
parts[i] the particle that has index i
pv[y/CELL][x/CELL] The pressure at x,y. Pressure is on a 4x4 grid like walls. Is a float(0.0f for 0).
vx[y/CELL][x/CELL] The air velocity in the x direction at x,y. Uses a 4x4 grid like walls. Is a float(0.0f for 0).
vy[y/CELL][x/CELL] The air velocity in the y direction at x,y. Uses a 4x4 grid like walls. Is a float(0.0f for 0).
hv[y/CELL][x/CELL] The ambient heat at x,y. It is on a 4x4 grid like walls and pressure. Is a float(0.0f for 0).
sl Selected left. Means particle selected in menu by left mouse button.
sr Selected right. Means particle selected in menu by right mouse button.
t Current particle type. ex. PT_DUST

Particle

To get information from a particle, use parts[i].1, where i is the particle index. The index may also be stored as r>>8 instead of i. This is normally used in the update functions for particles. i is the index of the particle that is being updated, and r>>8 is the index of a particle surrounding it that it might react with or modify. To get the type of the particle from the variable r, use (r&0xFF).

Particle Information

Variable What it returns
parts[2].type Contains the particle's current type.
parts[2].ctype Contains the particle's previous type (for example LAVA/SPRK) or the type of particle it is cloning (CLNE/...) usually.
parts[2].life Contains the particle's life.
parts[2].temp Contains the particle's temperature. It's a float(0.0f for 0K, which is -273.15C). All temps are stored in Kelvins.
parts[2].tmp Contains a value which can be used for anything. Most particles don't use it.
parts[2].tmp2 Contains another value. Even less particles use this.
parts[2].dcolour Contains the particle's decoration color, 32bit ARGB
parts[2].x Contains the particle's x coordinate. It is not an integer, it's a float. To get the exact coordinate, add .5 to it before changing it to an int.
parts[2].y Contains the particle's y coordinate. It is not an integer, it's a float. To get the exact coordinate, add .5 to it before changing it to an int.
parts[2].vx Contains the particle's x velocity. It is a float.
parts[2].vy Contains the particle's y velocity. It is a float

1 - use either type, ctype, life, temp or tmp

2 - use either r>>8 or i. See above (Particle) for more info.