implement terrascript profiling

This commit is contained in:
dfsek committed 2021-04-25 17:11:49 -07:00
1 parent 8a10867e5f
commit e5f4c5dc8d
1 file changed
+23 -12
@@ -29,6 +29,7 @@ import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.structure.buffer.Buffer; import com.dfsek.terra.api.structures.structure.buffer.Buffer;
import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer; import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer;
import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer; import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer;
import com.dfsek.terra.profiler.ProfileFrame;
import com.dfsek.terra.registry.config.FunctionRegistry; import com.dfsek.terra.registry.config.FunctionRegistry;
import com.dfsek.terra.registry.config.LootRegistry; import com.dfsek.terra.registry.config.LootRegistry;
import com.dfsek.terra.registry.config.ScriptRegistry; import com.dfsek.terra.registry.config.ScriptRegistry;
@@ -105,21 +106,27 @@ public class StructureScript {
* @return Whether generation was successful * @return Whether generation was successful
*/ */
public boolean execute(Location location, Random random, Rotation rotation) { public boolean execute(Location location, Random random, Rotation rotation) {
StructureBuffer buffer = new StructureBuffer(location); try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) {
boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); StructureBuffer buffer = new StructureBuffer(location);
buffer.paste(); boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0));
return level; buffer.paste();
return level;
}
} }
public boolean execute(Location location, Chunk chunk, Random random, Rotation rotation) { public boolean execute(Location location, Chunk chunk, Random random, Rotation rotation) {
StructureBuffer buffer = computeBuffer(location, random, rotation); try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) {
buffer.paste(chunk); StructureBuffer buffer = computeBuffer(location, random, rotation);
return buffer.succeeded(); buffer.paste(chunk);
return buffer.succeeded();
}
} }
public boolean test(Location location, Random random, Rotation rotation) { public boolean test(Location location, Random random, Rotation rotation) {
StructureBuffer buffer = computeBuffer(location, random, rotation); try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) {
return buffer.succeeded(); StructureBuffer buffer = computeBuffer(location, random, rotation);
return buffer.succeeded();
}
} }
private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) { private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) {
@@ -135,12 +142,16 @@ public class StructureScript {
} }
public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) { public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) {
return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions)); try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) {
return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions));
}
} }
public boolean executeDirect(Location location, Random random, Rotation rotation) { public boolean executeDirect(Location location, Random random, Rotation rotation) {
DirectBuffer buffer = new DirectBuffer(location); try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) {
return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); DirectBuffer buffer = new DirectBuffer(location);
return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0));
}
} }
public String getId() { public String getId() {