Difference between revisions of "Variables"

From The Powder Toy
Jump to: navigation, search
(General: Suggested more info be posted on how PMAP works works.)
m
(10 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 +
{{Languages|Variables}}
 
This is a list of useful variables and usages of them inside the source.
 
This is a list of useful variables and usages of them inside the source.
  
Line 7: Line 8:
 
! 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. TYP(pmap[y][x]) returns the particle type at (x,y), ID(pmap[y][x]) returns the index of the particle at (x,y). Energy particles are not stored in, here you need to use photons.
 
|-
 
|-
| bmap[y][x] || Block-map. Returns wall at [y][x].
+
| sim->photons[y][x] || Photon-map. This works exactly like pmap, but only PHOT, NEUT, ELEC, and PROT are stored here (any particle with TYPE_ENERGY)
 
|-
 
|-
| emap[y][x] || Electronics-map. Used for conductive walls.
+
| sim->bmap[y][x] || Block-map. Returns wall at [y][x]. Wall constants are defined in src/simulation/SimulationData.h
 +
|-
 +
| sim->emap[y][x] || Electronics-map. Used for conductive walls. If it is 1, that means the wall at that location is conducting.
 
|-
 
|-
 
| r || usually preset to pmap[y][x]
 
| r || usually preset to pmap[y][x]
Line 17: Line 20:
 
| parts[i] || the particle that has index i
 
| 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).
+
| sim->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).
+
| sim->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).
 
|-
 
|-
| sl || Selected left. Means particle selected in menu by left mouse button.
+
| sim->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).
 
|-
 
|-
| sr || Selected right. Means particle selected in menu by right mouse button.
+
| sim->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).
 
|-
 
|-
| t || Current particle type. ex. PT_DUST
+
| t || Current particle type in some places. ex. PT_DUST
 
|}
 
|}
  
 
=== Particle ===
 
=== Particle ===
To get information from a particle, use parts[i].<sup>1</sup>, 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).
+
To get information from a particle, use parts[i].<sup>1</sup>, where i is the particle index. The index may also be stored as ID(r) 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 ID(r) 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 TYP(r).
  
 
=== Particle Information ===
 
=== Particle Information ===
Line 40: Line 39:
 
|-
 
|-
 
| parts[<sup>2</sup>].type || Contains the particle's current type.  
 
| parts[<sup>2</sup>].type || Contains the particle's current type.  
 +
|-
 +
| parts[<sup>2</sup>].life || Contains the particle's life.
 
|-
 
|-
 
| parts[<sup>2</sup>].ctype || Contains the particle's previous type (for example LAVA/SPRK) or the type of particle it is cloning (CLNE/...) usually.
 
| parts[<sup>2</sup>].ctype || Contains the particle's previous type (for example LAVA/SPRK) or the type of particle it is cloning (CLNE/...) usually.
 +
|-
 +
| parts[<sup>2</sup>].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[<sup>2</sup>].life || Contains the particle's life.
+
| parts[<sup>2</sup>].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[<sup>2</sup>].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[<sup>2</sup>].vx || Contains the particle's x velocity. It is a float.  
 
|-
 
|-
| parts[<sup>2</sup>].tmp || Contains a value which can be used for anything. Most particles don't use it.  
+
| parts[<sup>2</sup>].vy || Contains the particle's y velocity. It is a float
 
|-
 
|-
| parts[<sup>2</sup>].tmp2 || Contains another value. Even less particles use this.
+
| parts[<sup>2</sup>].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[<sup>2</sup>].dcolour || Contains the particle's decoration color, 32bit ARGB
+
| parts[<sup>2</sup>].flags || Rarely used; doesn't save.
 
|-
 
|-
| parts[<sup>2</sup>].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[<sup>2</sup>].tmp || Contains a value which can be used for anything.
 
|-
 
|-
| parts[<sup>2</sup>].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[<sup>2</sup>].tmp2 || Contains another value.
 
|-
 
|-
| parts[<sup>2</sup>].vx || Contains the particle's x velocity. It is a float.
+
| parts[<sup>2</sup>].dcolour || Contains the particle's decoration color, 32bit ARGB
 
|-
 
|-
| parts[<sup>2</sup>].vy || Contains the particle's y velocity. It is a float
+
| parts[<sup>2</sup>].pavg[0] || Mainly used for pressure or storing properties of particles inside PIPE
 
|-
 
|-
 +
| parts[<sup>2</sup>].pavg[1] || Another pavg
 
|}
 
|}
  
<sup>1</sup> - use either type, ctype, life, temp or tmp
+
<sup>1</sup> - use type, ctype, life, temp, tmp, etc.
  
<sup>2</sup> - use either r>>8 or i. See above (Particle) for more info.
+
<sup>2</sup> - use either ID(r) or i. See above (Particle) for more info.
  
 
[[Category:Development]]
 
[[Category:Development]]

Revision as of 15:48, 3 December 2019

Language: English  • 한국어 • polski • русский

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


General

Variable What it returns
pmap[y][x] Particle-map. TYP(pmap[y][x]) returns the particle type at (x,y), ID(pmap[y][x]) returns the index of the particle at (x,y). Energy particles are not stored in, here you need to use photons.
sim->photons[y][x] Photon-map. This works exactly like pmap, but only PHOT, NEUT, ELEC, and PROT are stored here (any particle with TYPE_ENERGY)
sim->bmap[y][x] Block-map. Returns wall at [y][x]. Wall constants are defined in src/simulation/SimulationData.h
sim->emap[y][x] Electronics-map. Used for conductive walls. If it is 1, that means the wall at that location is conducting.
r usually preset to pmap[y][x]
parts[i] the particle that has index i
sim->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).
sim->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).
sim->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).
sim->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).
t Current particle type in some places. 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 ID(r) 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 ID(r) 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 TYP(r).

Particle Information

Variable What it returns
parts[2].type Contains the particle's current type.
parts[2].life Contains the particle's life.
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].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
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].flags Rarely used; doesn't save.
parts[2].tmp Contains a value which can be used for anything.
parts[2].tmp2 Contains another value.
parts[2].dcolour Contains the particle's decoration color, 32bit ARGB
parts[2].pavg[0] Mainly used for pressure or storing properties of particles inside PIPE
parts[2].pavg[1] Another pavg

1 - use type, ctype, life, temp, tmp, etc.

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