diff --git a/.vscode/settings.json b/.vscode/settings.json index 100f1856..9661ac3b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -51,6 +51,7 @@ "flux.h": "c", "diffusion_ode.h": "c", "pressurecell.h": "c", - "pressure.h": "c" + "pressure.h": "c", + "tracking.h": "c" } } \ No newline at end of file diff --git a/src/main/c/includes/fluid/tracking/tracking.h b/src/main/c/includes/fluid/tracking/tracking.h new file mode 100644 index 00000000..54152a2e --- /dev/null +++ b/src/main/c/includes/fluid/tracking/tracking.h @@ -0,0 +1,15 @@ +#ifndef FLUID_TRACKING_H +#define FLUID_TRACKING_H + +#include "public.h" +#include "fluid/env/environment.h" + + +/** + * Resets the tracking state for this frame + */ +LIBRARY_API void fluid_tracking_reset(Environment * environment); + + + +#endif \ No newline at end of file diff --git a/src/main/c/src/fluid/queue/javainterface.c b/src/main/c/src/fluid/queue/javainterface.c index cbcad077..c1a78c2e 100644 --- a/src/main/c/src/fluid/queue/javainterface.c +++ b/src/main/c/src/fluid/queue/javainterface.c @@ -15,6 +15,7 @@ #include "fluid/sim/grid/simulation.h" #include "fluid/sim/grid2/grid2.h" #include "fluid/sim/simulator.h" +#include "fluid/tracking/tracking.h" #include "fluid/dispatch/dispatcher.h" #include "math/ode/multigrid.h" @@ -58,6 +59,7 @@ JNIEXPORT void JNICALL Java_electrosphere_server_fluid_simulator_FluidAccelerate ){ environment->consts.dt = dt; int numReadIn = readInChunks(env,chunkList,environment); + fluid_tracking_reset(environment); fluid_solve_bounds(numReadIn,chunkViewC,environment); fluid_dispatch(numReadIn,chunkViewC,environment,FLUID_DISPATCHER_OVERRIDE_NONE); fluid_simulate(environment); diff --git a/src/main/c/src/fluid/sim/pressurecell/normalization.c b/src/main/c/src/fluid/sim/pressurecell/normalization.c index 0a54935f..8c9c8b57 100644 --- a/src/main/c/src/fluid/sim/pressurecell/normalization.c +++ b/src/main/c/src/fluid/sim/pressurecell/normalization.c @@ -37,6 +37,7 @@ LIBRARY_API void fluid_pressurecell_calculate_normalization_ratio(Environment * } } double expected = chunk->pressureCellData.densitySum; + env->state.existingDensity = env->state.existingDensity + expected; double normalizationRatio = expected / sum; chunk->pressureCellData.densitySum = normalizationRatio; } diff --git a/src/main/c/src/fluid/tracking/tracking.c b/src/main/c/src/fluid/tracking/tracking.c new file mode 100644 index 00000000..57d11f91 --- /dev/null +++ b/src/main/c/src/fluid/tracking/tracking.c @@ -0,0 +1,12 @@ + + +#include "fluid/tracking/tracking.h" + +/** + * Resets the tracking state for this frame + */ +LIBRARY_API void fluid_tracking_reset(Environment * environment){ + environment->state.existingDensity = 0; + environment->state.normalizationRatio = 0; +} +