1 #ifndef _VOXEL_PROCEDURAL_H_
2 #define _VOXEL_PROCEDURAL_H_
4 #include <dragonstd/list.h>
6 #include "server/server_terrain.h"
9 // Note: This is a close reimplementation of goxel procedural scripting capabilities
17 } VoxelProceduralState;
27 typedef TerrainNode (*VoxelProceduralNode)(v3s32 pos, v3f32 color, void *arg);
29 VoxelProcedural *voxel_procedural_create(List *changed_chunks, TerrainGenStage tgs, v3s32 pos);
30 void voxel_procedural_delete(VoxelProcedural *proc);
31 void voxel_procedural_hue(VoxelProcedural *proc, f32 value);
32 void voxel_procedural_sat(VoxelProcedural *proc, f32 value);
33 void voxel_procedural_light(VoxelProcedural *proc, f32 value);
34 void voxel_procedural_life(VoxelProcedural *proc, s32 value);
35 void voxel_procedural_x(VoxelProcedural *proc, f32 value);
36 void voxel_procedural_y(VoxelProcedural *proc, f32 value);
37 void voxel_procedural_z(VoxelProcedural *proc, f32 value);
38 void voxel_procedural_rx(VoxelProcedural *proc, f32 value);
39 void voxel_procedural_ry(VoxelProcedural *proc, f32 value);
40 void voxel_procedural_rz(VoxelProcedural *proc, f32 value);
41 void voxel_procedural_sx(VoxelProcedural *proc, f32 value);
42 void voxel_procedural_sy(VoxelProcedural *proc, f32 value);
43 void voxel_procedural_sz(VoxelProcedural *proc, f32 value);
44 void voxel_procedural_s(VoxelProcedural *proc, f32 value);
45 void voxel_procedural_pop(VoxelProcedural *proc);
46 void voxel_procedural_push(VoxelProcedural *proc);
47 bool voxel_procedural_is_alive(VoxelProcedural *proc);
48 void voxel_procedural_cube(VoxelProcedural *proc, VoxelProceduralNode func, void *arg);
49 void voxel_procedural_cylinder(VoxelProcedural *proc, VoxelProceduralNode func, void *arg);
50 f32 voxel_procedural_random(VoxelProcedural *proc, f32 base, f32 vary);
52 #endif // _VOXEL_PROCEDURAL_H_