19 #ifndef __SIM_VolumeInstanceSource__
20 #define __SIM_VolumeInstanceSource__
48 bool needsEntireVector()
const;
168 bool need_vel =
false);
174 bool isValid()
const;
198 int getNumberOfRules()
const;
207 bool hasVelocity()
const;
217 void updateRulesArray();
267 float myTileCompare[15];
297 struct sim_ContainerBounds
305 struct sim_InstanceLocation
312 struct sim_InstanceVelocity
321 static bool getContainerBounds(
const SIM_Object* obj,
322 sim_ContainerBounds& bounds);
327 const sim_ContainerBounds* bounds,
329 const sim_InstanceLocation&
location,
int n)
const;
333 const sim_ContainerBounds* bounds,
335 const sim_InstanceLocation& location,
336 const sim_InstanceVelocity& vel,
int n)
const;
346 const sim_InstanceLocation&,
location,
348 const sim_InstanceVelocity&, velocity,
353 const sim_InstanceLocation& location,
355 const sim_InstanceVelocity& velocity,
363 mixEachVoxelVCContravariant,
368 const sim_InstanceLocation&,
location,
370 const sim_InstanceVelocity&, velocity,
372 void mixEachVoxelVCContravariantPartial(
SIM_RawField* dest,
375 const sim_InstanceLocation& location,
377 const sim_InstanceVelocity& velocity,
390 const sim_InstanceLocation&,
location,
392 const sim_InstanceVelocity&, velocity,
394 bool, contravariant);
399 const sim_InstanceLocation& location,
401 const sim_InstanceVelocity& velocity,
409 dest[0]->shouldMultiThread(),
414 const sim_InstanceLocation&, location,
416 const sim_InstanceVelocity&, velocity,
418 bool, contravariant);
422 const sim_InstanceLocation& location,
424 const sim_InstanceVelocity& velocity,
432 target->shouldMultiThread(),
433 blendEachVoxelVCNoWeight,
440 const sim_InstanceLocation&,
location,
442 const sim_InstanceVelocity&, velocity,
444 void blendEachVoxelVCNoWeightPartial(
SIM_RawField* target,
450 const sim_InstanceLocation& location,
452 const sim_InstanceVelocity& velocity,
461 blendEachVoxelVCNoWeightContravariant,
468 const sim_InstanceLocation&,
location,
470 const sim_InstanceVelocity&, velocity,
472 void blendEachVoxelVCNoWeightContravariantPartial(
SIM_RawField* target,
478 const sim_InstanceLocation& location,
480 const sim_InstanceVelocity& velocity,
488 targets[0]->shouldMultiThread(),
489 blendEachVoxelVNoWeight,
495 const sim_InstanceLocation&, location,
497 const sim_InstanceVelocity&, velocity,
499 bool, contravariant);
500 void blendEachVoxelVNoWeightPartial(
SIM_RawField* targets[3],
505 const sim_InstanceLocation& location,
507 const sim_InstanceVelocity& velocity,
516 targets[0]->shouldMultiThread(),
523 const sim_InstanceLocation&, location,
525 const sim_InstanceVelocity&, velocity,
527 bool, contravariant);
533 const sim_InstanceLocation& location,
535 const sim_InstanceVelocity& velocity,
546 const sim_InstanceLocation&,
location,
550 const sim_InstanceLocation& location,
563 const sim_InstanceLocation&,
location,
569 const sim_InstanceLocation& location,
576 blendEachVoxelNoWeight,
582 const sim_InstanceLocation&,
location,
584 void blendEachVoxelNoWeightPartial(
SIM_RawField* target,
589 const sim_InstanceLocation& location,
595 template <
typename FIELD>
602 template <
typename FIELD>
603 void resizeFieldIfNeeded(FIELD* field,
604 const sim_ContainerBounds* bounds,
606 const sim_InstanceLocation& location)
const;
613 "Volume Instance Source",
614 getDopDescription());
#define THREADED_METHOD8_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)
#define DECLARE_STANDARD_GETCASTTOTYPE()
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
cvex test(vector P=0;int unbound=3;export float s=0;export vector Cf=0;)
Iteration over a range of elements.
bool intersectsTile(const UT_Vector3 &p) const
fpreal32 myAccGuideStr
Pull strength for acceleration.
GT_API const UT_StringHolder time
bool myActivate
Is the rule active?
UT_Array< UT_OptionsHolder > myRulesArray
virtual bool solveGasSubclass(SIM_Engine &engine, SIM_Object *obj, SIM_Time time, SIM_Time timestep)=0
GA_ROHandleV3 myInstPivot
This class encapsulates a volume merging rule.
GA_ROHandleDictA myInstRules
bool shouldMultiThread() const
Returns true if this should be multithreaded.
void initTester(const SIM_RawField *field, const GEO_Primitive *prim, const UT_Vector3 &pos, const UT_Quaternion &orient, const UT_Vector3 &pivot)
#define THREADED_METHOD5_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)
UT_StringHolder myTargetField
Name of the target DOP field.
#define DECLARE_DATAFACTORY(DataClass, SuperClass, Description, DopParms)
fpreal32 myFinalScale
Coefficients for internal use. These values incorporate the timestep.
fpreal32 myDirGuideStr
Pull strength for directional guiding.
#define GET_DATA_FUNC_I(DataName, FuncName)
#define THREADED_METHOD7_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)
UT_StringHolder mySourceWeight
Name of the source weight volume.
PXL_API const char * getName(const ColorSpace *space)
Return the name of the color space.
#define THREADED_METHOD10_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)
GLsizei GLsizei GLchar * source
SourceOperation myOperation
The merging operation.
UT_StringHolder myTargetWeight
Name of the target DOP weight field.
GLuint const GLchar * name
fpreal32 myScale
The final scale applied while merging.
GA_API const UT_StringHolder orient
#define SCALAR(T)
Simplify checking for scalar types.
UT_StringHolder mySourceField
Name of the source volume.
#define GET_DATA_FUNC_B(DataName, FuncName)
fpreal32 myDecGuideStr
Pull strength for deceleration.
This class holds a three dimensional scalar field.
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
GA_API const UT_StringHolder pivot
Container class for all geometry.
This class holds a three dimensional vector field.
#define GET_DATA_FUNC_S(DataName, FuncName)
GA_ROHandleV4 myInstOrient
This class implements the intanced sourcing logic.
FieldRank myRank
Rank of the target and source fields.
sim_TileIntersectionTester()
bool myNormalizeTimestep
Use the timestep while merging?