unsleeping fluid chunks on edit
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2024-12-01 17:48:06 -05:00
parent 391a727709
commit ba7884363d
6 changed files with 9 additions and 3 deletions

View File

@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file #maven.buildNumber.plugin properties file
#Sun Dec 01 17:42:04 EST 2024 #Sun Dec 01 17:46:45 EST 2024
buildNumber=481 buildNumber=482

View File

@ -1212,6 +1212,7 @@ Fix fluid sim NP bug with skipped chunks
Fix fluid chunk indexing from java side Fix fluid chunk indexing from java side
Memory pooling for chunk buffer allocations Memory pooling for chunk buffer allocations
Server homogenous fluid chunk declarations Server homogenous fluid chunk declarations
Unsleeping fluid chunks on edit

View File

@ -26,6 +26,7 @@ typedef struct {
jfieldID updatedId; jfieldID updatedId;
jfieldID totalDensityId; jfieldID totalDensityId;
jfieldID asleepId; jfieldID asleepId;
jfieldID homogenousId;
} ServerFluidChunkLookupTable; } ServerFluidChunkLookupTable;
/** /**

View File

@ -114,6 +114,7 @@ JNIEXPORT void JNICALL Java_electrosphere_server_fluid_simulator_FluidAccelerate
environment->lookupTable.serverFluidChunkTable.totalDensityId = (*env)->GetFieldID(env,fluidSimStorageClass,"totalDensity","F"); environment->lookupTable.serverFluidChunkTable.totalDensityId = (*env)->GetFieldID(env,fluidSimStorageClass,"totalDensity","F");
environment->lookupTable.serverFluidChunkTable.updatedId = (*env)->GetFieldID(env,fluidSimStorageClass,"updated","Z"); environment->lookupTable.serverFluidChunkTable.updatedId = (*env)->GetFieldID(env,fluidSimStorageClass,"updated","Z");
environment->lookupTable.serverFluidChunkTable.asleepId = (*env)->GetFieldID(env,fluidSimStorageClass,"asleep","Z"); environment->lookupTable.serverFluidChunkTable.asleepId = (*env)->GetFieldID(env,fluidSimStorageClass,"asleep","Z");
environment->lookupTable.serverFluidChunkTable.homogenousId = (*env)->GetFieldID(env,fluidSimStorageClass,"isHomogenous","Z");
} }
/** /**

View File

@ -49,6 +49,9 @@ void updateMetadata(JNIEnv * env, int numChunks, Chunk ** passedInChunks, Enviro
if(sum <= 0){ if(sum <= 0){
//sleep the chunk if it has no density //sleep the chunk if it has no density
(*env)->SetBooleanField(env,jObj,environment->lookupTable.serverFluidChunkTable.asleepId,JNI_TRUE); (*env)->SetBooleanField(env,jObj,environment->lookupTable.serverFluidChunkTable.asleepId,JNI_TRUE);
(*env)->SetBooleanField(env,jObj,environment->lookupTable.serverFluidChunkTable.homogenousId,JNI_TRUE);
} else {
(*env)->SetBooleanField(env,jObj,environment->lookupTable.serverFluidChunkTable.homogenousId,JNI_FALSE);
} }
} }
} }

View File

@ -114,7 +114,7 @@ public class FluidCell {
for(int x = ServerFluidChunk.TRUE_DATA_OFFSET; x < ServerFluidChunk.TRUE_DATA_GENERATOR_SIZE + ServerFluidChunk.TRUE_DATA_OFFSET; x++){ for(int x = ServerFluidChunk.TRUE_DATA_OFFSET; x < ServerFluidChunk.TRUE_DATA_GENERATOR_SIZE + ServerFluidChunk.TRUE_DATA_OFFSET; x++){
for(int y = ServerFluidChunk.TRUE_DATA_OFFSET; y < ServerFluidChunk.TRUE_DATA_GENERATOR_SIZE + ServerFluidChunk.TRUE_DATA_OFFSET; y++){ for(int y = ServerFluidChunk.TRUE_DATA_OFFSET; y < ServerFluidChunk.TRUE_DATA_GENERATOR_SIZE + ServerFluidChunk.TRUE_DATA_OFFSET; y++){
for(int z = ServerFluidChunk.TRUE_DATA_OFFSET; z < ServerFluidChunk.TRUE_DATA_GENERATOR_SIZE + ServerFluidChunk.TRUE_DATA_OFFSET; z++){ for(int z = ServerFluidChunk.TRUE_DATA_OFFSET; z < ServerFluidChunk.TRUE_DATA_GENERATOR_SIZE + ServerFluidChunk.TRUE_DATA_OFFSET; z++){
weights[x][y][z] = currentChunk.getWeight(x,y,z); weights[x-ServerFluidChunk.TRUE_DATA_OFFSET][y-ServerFluidChunk.TRUE_DATA_OFFSET][z-ServerFluidChunk.TRUE_DATA_OFFSET] = currentChunk.getWeight(x,y,z);
} }
} }
} }