33 #define GU_AGENT_LAYER_DEFAULT "default"
34 #define GU_AGENT_LAYER_COLLISION "collision"
75 : myBlendMode(blend_mode), myWeight(
weight), myParent(parent)
114 static bool hasAgentPackedPrimitives(
129 {
return loadFrom(prim, options, map); }
134 {
return loadFrom(prim, options, map); }
138 { updateFrom(prim, options); }
154 fpreal &wmax)
const override;
172 bool inclusive)
const override;
179 loadDefinitionIfNeeded();
180 return *myDefinition;
185 loadDefinitionIfNeeded();
186 return *myDefinition;
240 StringType intrinsicCurrentLayerName(const
GU_PrimPacked *prim) const;
241 void intrinsicSetCurrentLayerByName(
GU_PrimPacked *prim, const StringType &
name);
242 StringType intrinsicCollisionLayerName(const
GU_PrimPacked *prim) const;
243 void intrinsicSetCollisionLayerByName(
GU_PrimPacked *prim, const StringType &name);
257 {
return numClips(); }
260 const char* clipName(
exint i)
const;
262 {
return clipName(i); }
271 {
return myState.myClipTimes(i); }
273 {
return clipTime(i); }
281 {
return myState.myClipWeights(i); }
283 {
return clipWeight(i); }
290 const char* clipTransformGroupName(
exint i)
const;
292 {
return clipTransformGroupName(i); }
300 {
return myState.myClipLayerIds(i); }
302 {
return clipLayerId(i); }
310 {
return myState.myClipLayers.entries(); }
316 bool interpolate_samples =
true)
const
317 {
return computeTransforms(xforms,
319 interpolate_samples); }
322 bool interpolate_samples =
true)
const
323 {
return computeTransforms(xforms,
325 interpolate_samples); }
328 bool interpolate_samples =
true)
const
329 {
return computeWorldTransformInternal(xform, i, interpolate_samples); }
332 bool interpolate_samples =
true)
const
333 {
return computeLocalTransformInternal(xform, i, interpolate_samples); }
337 { setTransforms(xforms,
true); }
340 { setTransforms(xforms,
false); }
342 void setWorldTransform(
const Matrix4Type &xform,
exint i);
344 void setLocalTransform(
const Matrix4Type &xform,
exint i);
349 {
return hasCustomTransforms(); }
352 {
return getRig() ? getRig()->transformCount() : 0; }
354 {
return transformCount(); }
356 const char* transformName(
exint i)
const;
358 {
return transformName(i); }
362 exint transformsArraySize()
const;
364 {
return transformsArraySize(); }
366 { transformsArray(data, n,
true); }
369 { setTransformsFromArray(data, n,
372 { transformsArray(data, n,
376 { setTransformsFromArray(data, n,
381 {
return getRig() ? getRig()->channelCount() : 0; }
384 bool computeChannelValues(FloatArrayConstPtr &
values,
385 bool interpolate_samples =
true)
const;
393 {
return myHasCustomChannelValues; }
399 {
return channelCount(); }
406 {
return hasCustomChannelValues(); }
440 {
return numClipLayers(); }
451 void loadDefinition()
const;
458 template <
typename T>
460 template <
typename T>
466 bool computeTransforms(Matrix4ArrayConstPtr &matrices,
468 bool interpolate_samples =
true,
469 bool acquire_xform_lock =
true)
const;
473 bool computeWorldTransformInternal(Matrix4Type &xform,
475 bool interpolate_samples,
476 bool acquire_xform_lock =
true)
const;
480 bool computeLocalTransformInternal(Matrix4Type &xform,
482 bool interpolate_samples,
483 bool acquire_xform_lock =
true)
const;
486 void setTransforms(
const Matrix4Array &xforms,
489 bool world_space)
const;
497 void convertCachedTransforms(
bool world_space)
const;
519 : myDefinition(definition),
520 myTransforms(transforms),
521 myChannelValues(channel_values)
525 DelayLoadData(
const DelayLoadData &
src)
526 : myDefinition(src.myDefinition),
527 myTransforms(src.myTransforms),
528 myChannelValues(src.myChannelValues),
529 myClipNames(src.myClipNames),
530 myClipXformGroupNames(src.myClipXformGroupNames),
531 myCurrentLayerNames(src.myCurrentLayerNames),
532 myCollisionLayerNames(src.myCollisionLayerNames)
537 bool isLoaded()
const
539 return !myDefinition && !myTransforms && !myChannelValues;
542 int64 getMemoryUsage(
bool inclusive)
const;
572 mutable FloatArrayPtr myCachedChannelValues;
573 mutable Matrix4ArrayPtr myCachedTransforms;
578 mutable bool myHasCustomChannelValues;
580 mutable bool myHasCustomXforms;
585 mutable XformLock myXformLock;
UT_Int64Array myClipLayerIds
UT_StringHolder StringType
UT_Lockable< tbb::spin_mutex > UT_TBBSpinLock
virtual void getVelocityRange(UT_Vector3 &min, UT_Vector3 &max) const =0
void setLocalTransformsFromArray(GU_PrimPacked *prim, const FloatType *data, exint n)
UT_JSONValueMap stores a map/dictionary of UT_JSONValue objects.
const char * intrinsicTransformName(const GU_PrimPacked *prim, exint i) const
Used to pass options and map offset values during saving.
GLenum GLuint GLint GLint layer
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
#define SYS_DEPRECATED_HDK_REPLACE(__V__, __R__)
void setWorldTransformsFromArray(GU_PrimPacked *prim, const FloatType *data, exint n)
UT_SharedPtr< Matrix4Array > Matrix4ArrayPtr
exint intrinsicTransformsArraySize(const GU_PrimPacked *prim) const
GU_AgentClipPtrArray myClips
virtual bool getBounds(UT_BoundingBox &box) const =0
Get the bounding box for the geometry (not including transforms)
bool hasCustomTransforms() const
Class which writes ASCII or binary JSON streams.
exint transformCount() const
Number of transforms in the rig.
bool intrinsicHasCustomChannelValues(const GU_PrimPacked *) const
GLuint const GLchar * name
UT_SharedPtr< GA_SharedDataHandle > GA_SharedDataHandlePtr
UT_Array< ClipLayer > myClipLayers
exint intrinsicTransformCount(const GU_PrimPacked *prim) const
exint GA_Size
Defines the bit width for index and offset types in GA.
GLuint GLuint GLfloat weight
UT_SharedPtr< FloatArray > FloatArrayPtr
fpreal intrinsicClipTime(const GU_PrimPacked *prim, exint i) const
#define GA_INVALID_OFFSET
GLenum GLsizei GLsizei GLint * values
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
virtual bool getRenderingBounds(UT_BoundingBox &box) const =0
exint intrinsicNumClips(const GU_PrimPacked *prim) const
GLubyte GLubyte GLubyte GLubyte w
GLuint GLenum GLenum transform
fpreal intrinsicClipWeight(const GU_PrimPacked *prim, exint i) const
UT_IntrusiveRefCounter & operator=(const UT_IntrusiveRefCounter &) noexcept
Assignment operator: Does not modify counter.
GU_AgentTransformGroupArray myClipXformGroups
UT_IntrusivePtr< const GU_AgentLayer > GU_AgentLayerConstPtr
void localTransformsArray(const GU_PrimPacked *prim, FloatType *data, exint n) const
const char * intrinsicClipTransformGroupName(const GU_PrimPacked *prim, exint i) const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
virtual void clearData()=0
UT_LockScopeType< UT_Lockable< tbb::spin_mutex > > Scope
void setWorldTransforms(const Matrix4Array &xforms)
Override the world transforms for this agent.
virtual int64 getMemoryUsage(bool inclusive) const =0
Report memory usage (includes all shared memory)
const char * intrinsicClipName(const GU_PrimPacked *prim, exint i) const
virtual void countMemory(UT_MemoryCounter &counter, bool inclusive) const =0
void update(GU_PrimPacked *prim, const UT_Options &options) override
virtual GU_PackedFactory * getFactory() const =0
Get the factory associated with this procedural.
UT_Fpreal64Array myClipTimes
virtual GU_ConstDetailHandle getPackedDetail(GU_PackedContext *context=0) const
bool computeLocalTransform(Matrix4Type &xform, exint i, bool interpolate_samples=true) const
Get a specific local transform for the agent.
bool supportsJSONLoad() const override
GLuint const GLuint * names
UT_Matrix4T< FloatType > Matrix4Type
void worldTransformsArray(const GU_PrimPacked *prim, FloatType *data, exint n) const
const GU_AgentRigConstPtr & getRig() const
UT_SharedPtr< const FloatArray > FloatArrayConstPtr
exint intrinsicChannelCount(const GU_PrimPacked *) const
fpreal clipTime(exint i) const
virtual bool isValid() const =0
Test whether the deferred load primitive data is valid.
GLenum GLuint GLenum GLsizei const GLchar * buf
exint entries() const
Alias of size(). size() is preferred.
exint intrinsicNumClipLayers(const GU_PrimPacked *prim) const
SYS_FORCE_INLINE const GU_AgentDefinition & definition() const
bool computeWorldTransforms(Matrix4ArrayConstPtr &xforms, bool interpolate_samples=true) const
bool hasCustomChannelValues() const
A map of string to various well defined value types.
GLsizei const GLint box[]
virtual GU_PackedImpl * copy() const =0
Create a copy of this resolver.
fpreal clipWeight(exint i) const
bool unpack(GU_Detail &destgdp, const GU_PrimPacked *prim) const
SYS_FORCE_INLINE GU_AgentDefinition & definition()
bool computeWorldTransform(Matrix4Type &xform, exint i, bool interpolate_samples=true) const
Get a specific world transform for the agent.
virtual bool saveSharedData(UT_JSONWriter &w, GA_SaveMap &map, GA_GeometryIndex *geo_index) const
virtual bool unpackWithStyler(GU_Detail &destgdp, STY_StylerGroup &prim_styler_group, const STY_Styler &parent_styler, const GU_PrimPacked *prim) const
bool computeLocalTransforms(Matrix4ArrayConstPtr &xforms, bool interpolate_samples=true) const
Get the local transforms for this agent.
exint numClipLayers() const
bool load(GU_PrimPacked *prim, const UT_Options &options, const GA_LoadMap &map) override
UT_SharedPtr< const Matrix4Array > Matrix4ArrayConstPtr
UT_Array< FloatType > FloatArray
virtual bool loadSharedData(int load_data_type, const GA_SharedLoadData *item)
bool intrinsicHasCustomTransforms(const GU_PrimPacked *) const
ClipLayer(BlendMode blend_mode, fpreal64 weight=0.0, int64 parent=-1)
UT_Array< Matrix4Type > Matrix4Array
virtual bool save(UT_Options &options, const GA_SaveMap &map) const =0
Copy the resolver data into the UT_Options for saving.
GLenum GLsizei GLsizei GLsizei GLsizei layers
exint channelCount() const
Number of transforms in the rig.
static GA_PrimitiveTypeId typeId()
Get the type ID for the GU_Agent primitive type.
bool loadFromJSON(GU_PrimPacked *prim, const UT_JSONValueMap &options, const GA_LoadMap &map) override
void setLocalTransforms(const Matrix4Array &xforms)
Override the local transforms for this agent.
exint intrinsicClipLayerId(const GU_PrimPacked *prim, exint i) const
UT_Fpreal64Array myClipWeights
exint clipLayerId(exint i) const
virtual void getWidthRange(fpreal &wmin, fpreal &wmax) const =0