38 #ifndef __SNOW_Solver_h__
39 #define __SNOW_Solver_h__
50 #define SIM_NAME_BIRTHRATE "birthrate"
51 #define SIM_NAME_ORIGINALDEPTH "originaldepth"
56 typedef unsigned char u8;
58 namespace HDK_Sample {
60 class SNOW_VoxelArray;
81 bool newobject)
override;
87 int sx,
int sy,
int sz,
88 int dx,
int dy,
int dz,
89 int &rx,
int &ry,
int &rz,
113 void setVoxelArrayAttributes(
116 DECLARE_STANDARD_GETCASTTOTYPE();
120 getSolverSNOWDopDescription());
124 #define VOXEL_EMPTY 0
126 #define VOXEL_COMPRESSED 2
128 #define VOXEL_OBJECT 4
130 #define SNOW_NAME_DIVISIONS "div"
131 #define SNOW_NAME_CENTER "t"
132 #define SNOW_NAME_SIZE "size"
184 int x0,
int y0,
int z0,
185 int x1,
int y1,
int z1,
186 int x2,
int y2,
int z2,
187 int x3,
int y3,
int z3);
188 void buildGeometryFromArray();
189 void freeArray()
const;
190 void allocateArray()
const;
197 DECLARE_STANDARD_GETCASTTOTYPE();
201 getVoxelArrayDopDescription()
241 DECLARE_STANDARD_GETCASTTOTYPE();
245 getVisualizeDopDescription()
#define SIM_NAME_SHOWGUIDE
void initAlternateRepresentationSubclass(const SIM_Data &) override
GETSET_DATA_FUNCS_F(SIM_NAME_BIRTHRATE, BirthRate)
void initializeSubclass() override
GET_GUIDE_FUNC_V3(SIM_NAME_COLOR, Color,(1, 1, 1))
void pubHandleModification()
GLdouble GLdouble GLdouble z
GETSET_DATA_FUNCS_V3(SNOW_NAME_DIVISIONS, Divisions)
void makeEqualSubclass(const SIM_Data *source) override
Makes this geometry equal to some other SIM_Geometry.
void initializeSubclass() override
Set initial values on all the geometry attributes.
int64 getMemorySizeSubclass() const override
void fillRow(SNOW_VoxelArray &snow, fpreal startx, fpreal endx, int y, int z, u8 voxeltype, SIM_Random *rand) const
GET_GUIDE_FUNC_B(SIM_NAME_SHOWGUIDE, ShowGuide, true)
GU_ConstDetailHandle getGeometrySubclass() const override
bool getIsAlternateRepresentationSubclass() const override
u8 getVoxel(int x, int y, int z) const
int rand_choice(int numchoice, SIM_Random *rand) const
Holds pointers to a number of SIM_Object objects.
void saveIOSubclass(std::ostream &os, SIM_DataThreadedIO *io) const override
GLsizei GLsizei GLchar * source
SNOW_Visualize(const SIM_DataFactory *factory)
GLuint const GLchar * name
int clearInDirection(const SNOW_VoxelArray &snow, int sx, int sy, int sz, int dx, int dy, int dz, int &rx, int &ry, int &rz, int maxdist, SIM_Random *rand) const
static void createBoundingBoxGuide(GU_Detail *gdp, const UT_BoundingBox &bbox, const UT_Vector3 &color)
void setVoxel(u8 voxel, int x, int y, int z)
void applyGeometry(SNOW_VoxelArray &snow, const GU_ConstDetailHandle &gdh, const UT_DMatrix4 &xform, u8 voxletype, SIM_Random *rand) const
#define SIM_NAME_BIRTHRATE
SIM_Guide * createGuideObjectSubclass() const override
void optionChangedSubclass(const char *name) override
SNOW_Solver(const SIM_DataFactory *factory)
bool brownianize(int &v, int dv, int max, SIM_Random *rand) const
void clearSnow(SNOW_VoxelArray &snow, int x, int y, int z, SIM_Random *rand) const
SNOW_VoxelArray(const SIM_DataFactory *factory)
void handleModification(int code=-1)
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
void handleModificationSubclass(int code) override
bool loadIOSubclass(UT_IStream &is, SIM_DataThreadedIO *io) override
SIM_Result solveSingleObjectSubclass(SIM_Engine &engine, SIM_Object &object, SIM_ObjectArray &feedbacktoobjects, const SIM_Time ×tep, bool newobject) override
~SNOW_VoxelArray() override
~SNOW_Visualize() override
void buildGuideGeometrySubclass(const SIM_RootData &root, const SIM_Options &options, const GU_DetailHandle &gdh, UT_DMatrix4 *xform, const SIM_Time &t) const override
GLdouble GLdouble GLdouble y2
#define SNOW_NAME_DIVISIONS
#define SIM_NAME_ORIGINALDEPTH
GETSET_DATA_FUNCS_I(SIM_NAME_ORIGINALDEPTH, OriginalDepth)
SIM_Random * createRandomData(SIM_Object *obj) const