20 using namespace UT::Literal;
34 myColliderGeo =
""_sh;
36 myVelocityVDB =
""_sh;
37 myVDBNameSuffix =
""_sh;
38 myUseInstances =
false;
39 myInstanceGeo =
""_sh;
49 if (myColliderType != src.myColliderType)
return false;
50 if (myField != src.myField)
return false;
51 if (myVelField != src.myVelField)
return false;
52 if (myColliderGeo != src.myColliderGeo)
return false;
53 if (mySurfaceVDB != src.mySurfaceVDB)
return false;
54 if (myVelocityVDB != src.myVelocityVDB)
return false;
55 if (myVDBNameSuffix != src.myVDBNameSuffix)
return false;
56 if (myUseInstances != src.myUseInstances)
return false;
57 if (myInstanceGeo != src.myInstanceGeo)
return false;
78 {
return !strcmp(recordtype,
"Params"); }
83 if (recordtypenum == 0)
return "Params";
88 if (isMyRecord(recordtype))
return 1;
93 if (isMyRecord(recordtype))
99 int fieldnum)
const override
101 if (!isMyRecord(recordtype))
107 return "collidertype";
113 return "collidergeo";
129 int fieldnum)
const override
131 if (!isMyRecord(recordtype))
161 const char *fieldname,
164 if (!isMyRecord(recordtype))
170 if (!strcmp(fieldname,
"collidertype"))
172 result = UTmakeUnique<UT_OptionInt>(myParms.myColliderType);
175 if (!strcmp(fieldname,
"field"))
177 result = UTmakeUnique<UT_OptionString>(myParms.myField);
180 if (!strcmp(fieldname,
"velocity"))
182 result = UTmakeUnique<UT_OptionString>(myParms.myVelField);
185 if (!strcmp(fieldname,
"collidergeo"))
187 result = UTmakeUnique<UT_OptionString>(myParms.myColliderGeo);
190 if (!strcmp(fieldname,
"surfvdb"))
192 result = UTmakeUnique<UT_OptionString>(myParms.mySurfaceVDB);
195 if (!strcmp(fieldname,
"velvdb"))
197 result = UTmakeUnique<UT_OptionString>(myParms.myVelocityVDB);
200 if (!strcmp(fieldname,
"vdbsuffix"))
202 result = UTmakeUnique<UT_OptionString>(myParms.myVDBNameSuffix);
205 if (!strcmp(fieldname,
"useinst"))
207 result = UTmakeUnique<UT_OptionBool>(myParms.myUseInstances);
210 if (!strcmp(fieldname,
"instgeo"))
212 result = UTmakeUnique<UT_OptionString>(myParms.myInstanceGeo);
224 {
return new Query(owner, *
this); }
262 loadData(is, rampdata);
280 int typelen = colon - data.
buffer();
294 {
int64 iv =
v; UTwrite(os, &iv); }
296 { UTwrite<fpreal64>(os, &
v); }
298 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
300 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
301 UTwrite<fpreal64>(os, &v.
z()); }
303 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
304 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
316 if (s) s->save(ostr);
318 saveData(os, result);
325 ostr << s->getDataTypeToken();
330 saveData(os, result);
334 void save(std::ostream &os)
const
338 saveData(os, myColliderType);
339 saveData(os, myField);
340 saveData(os, myVelField);
341 saveData(os, myColliderGeo);
342 saveData(os, mySurfaceVDB);
343 saveData(os, myVelocityVDB);
344 saveData(os, myVDBNameSuffix);
345 saveData(os, myUseInstances);
346 saveData(os, myInstanceGeo);
359 loadData(is, myColliderType);
360 loadData(is, myField);
361 loadData(is, myVelField);
362 loadData(is, myColliderGeo);
363 loadData(is, mySurfaceVDB);
364 loadData(is, myVelocityVDB);
365 loadData(is, myVDBNameSuffix);
366 loadData(is, myUseInstances);
367 loadData(is, myInstanceGeo);
392 int64 myColliderType;
const UT_StringHolder & getVelField() const
bool operator==(const SIM_OpenCLEnforceBoundaryParms &src) const
UT_OptionType getFieldTypeSubclass(const char *recordtype, int fieldnum) const override
void setColliderGeo(const UT_StringHolder &val)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool getUseInstances() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
int getNumRecordTypesSubclass() const override
exint bread(int32 *buffer, exint asize=1)
static void saveData(std::ostream &os, bool v)
int getNumFieldsSubclass(const char *recordtype) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
SYS_FORCE_INLINE const char * buffer() const
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void saveData(std::ostream &os, fpreal64 v)
bool isMyRecord(const char *recordtype) const
const UT_StringHolder & getSurfaceVDB() const
const UT_StringHolder & getVelocityVDB() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void loadData(UT_IStream &is, fpreal64 &v)
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool operator!=(const SIM_OpenCLEnforceBoundaryParms &src) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
const SIM_OpenCLEnforceBoundaryParms & myParms
static void saveData(std::ostream &os, UT_Vector3D v)
const UT_StringHolder & getVDBNameSuffix() const
SIM_OpenCLEnforceBoundaryParms()
static void saveData(std::ostream &os, int64 v)
const char * getRecordTypeNameSubclass(int recordtypenum) const override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
void setField(const UT_StringHolder &val)
bool load(UT_IStream &is)
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
const UT_StringHolder & getField() const
static void loadData(UT_IStream &is, int64 &v)
static void saveData(std::ostream &os, UT_Matrix4D v)
static void saveData(std::ostream &os, UT_Vector2D v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
GT_API const UT_StringHolder version
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
int getNumRecordsSubclass(const char *recordtype) const override
void save(std::ostream &os) const
void setVDBNameSuffix(const UT_StringHolder &val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setColliderType(int64 val)
Utility class for containing a color ramp.
const UT_StringHolder & getColliderGeo() const
int64 getColliderType() const
static void saveData(std::ostream &os, UT_StringHolder s)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setVelocityVDB(const UT_StringHolder &val)
static void loadData(UT_IStream &is, bool &v)
void setSurfaceVDB(const UT_StringHolder &val)
const char * findChar(int c) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void setVelField(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Vector4D v)
const UT_StringHolder & getInstanceGeo() const
constexpr SYS_FORCE_INLINE T & y() noexcept
void setInstanceGeo(const UT_StringHolder &val)
~SIM_OpenCLEnforceBoundaryParms()
void setUseInstances(bool val)
const char * getFieldNameSubclass(const char *recordtype, int fieldnum) const override
static void loadData(UT_IStream &is, UT_Vector3D &v)
Query(const SIM_Data *owner, const SIM_OpenCLEnforceBoundaryParms &parms)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
UT_UniquePtr< UT_OptionEntry > UT_OptionEntryPtr
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix2D v)
SIM_Query * createQueryObject(const SIM_Data *owner) const
bool getFieldRawSubclass(const char *recordtype, int recordnum, const char *fieldname, UT_OptionEntryPtr &result) const override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
constexpr SYS_FORCE_INLINE T & x() noexcept