summaryrefslogtreecommitdiff
path: root/src/simulation
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-07-24 13:58:39 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-07-24 13:58:39 (GMT)
commit603cf3149df2fc788303207162bf29e05bd29816 (patch)
tree1e2f9c7ddf3c01a67bc50426806e598a595a1e40 /src/simulation
parente65e222f2ccbf60a4c224bbe29884ebb1001cfd7 (diff)
downloadpowder-603cf3149df2fc788303207162bf29e05bd29816.zip
powder-603cf3149df2fc788303207162bf29e05bd29816.tar.gz
HUD improvements
Diffstat (limited to 'src/simulation')
-rw-r--r--src/simulation/Sample.h25
-rw-r--r--src/simulation/Simulation.cpp20
-rw-r--r--src/simulation/Simulation.h3
3 files changed, 43 insertions, 5 deletions
diff --git a/src/simulation/Sample.h b/src/simulation/Sample.h
new file mode 100644
index 0000000..bd91d02
--- /dev/null
+++ b/src/simulation/Sample.h
@@ -0,0 +1,25 @@
+
+
+#ifndef The_Powder_Toy_Sample_h
+#define The_Powder_Toy_Sample_h
+
+#include "Particle.h"
+
+class SimulationSample
+{
+public:
+ Particle particle;
+ float AirPressure;
+ float AirTemperature;
+ float AirVelocityX;
+ float AirVelocityY;
+
+ int WallType;
+ float Gravity;
+ float GravityVelocityX;
+ float GravityVelocityY;
+
+ SimulationSample() : particle(), AirPressure(0), AirVelocityX(0), AirVelocityY(0), WallType(0), Gravity(0), GravityVelocityX(0), GravityVelocityY(0), AirTemperature(0) {}
+};
+
+#endif \ No newline at end of file
diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp
index 4a7bede..9aece76 100644
--- a/src/simulation/Simulation.cpp
+++ b/src/simulation/Simulation.cpp
@@ -340,13 +340,25 @@ int Simulation::flood_prop(int x, int y, size_t propoffset, void * propvalue, St
return 0;
}
-Particle Simulation::Get(int x, int y)
+SimulationSample Simulation::Get(int x, int y)
{
+ SimulationSample sample;
if(pmap[y][x])
- return parts[pmap[y][x]>>8];
+ sample.particle = parts[pmap[y][x]>>8];
if(photons[y][x])
- return parts[photons[y][x]>>8];
- return Particle();
+ sample.particle = parts[photons[y][x]>>8];
+ sample.AirPressure = pv[y/CELL][x/CELL];
+ sample.AirTemperature = hv[y/CELL][x/CELL];
+ sample.AirVelocityX = vx[y/CELL][x/CELL];
+ sample.AirVelocityY = vy[y/CELL][x/CELL];
+
+ if(grav->ngrav_enable)
+ {
+ sample.Gravity = gravp[(y/CELL)*(XRES/CELL)+(x/CELL)];
+ sample.GravityVelocityX = gravx[(y/CELL)*(XRES/CELL)+(x/CELL)];
+ sample.GravityVelocityY = gravy[(y/CELL)*(XRES/CELL)+(x/CELL)];
+ }
+ return sample;
}
#define PMAP_CMP_CONDUCTIVE(pmap, t) (((pmap)&0xFF)==(t) || (((pmap)&0xFF)==PT_SPRK && parts[(pmap)>>8].ctype==(t)))
diff --git a/src/simulation/Simulation.h b/src/simulation/Simulation.h
index d4f43f2..0e6c66f 100644
--- a/src/simulation/Simulation.h
+++ b/src/simulation/Simulation.h
@@ -26,6 +26,7 @@
#include "GOLMenu.h"
#include "MenuSection.h"
#include "client/GameSave.h"
+#include "Sample.h"
#define CHANNELS ((int)(MAX_TEMP-73)/100+2)
@@ -117,7 +118,7 @@ public:
int Load(int x, int y, GameSave * save);
GameSave * Save();
GameSave * Save(int x1, int y1, int x2, int y2);
- Particle Get(int x, int y);
+ SimulationSample Get(int x, int y);
inline int is_blocking(int t, int x, int y);
inline int is_boundary(int pt, int x, int y);
inline int find_next_boundary(int pt, int *x, int *y, int dm, int *em);