33 #define GU_AGENT_LAYER_DEFAULT "default"
34 #define GU_AGENT_LAYER_COLLISION "collision"
75 : myBlendMode(blend_mode), myWeight(weight), myParent(parent)
87 int64 getMemoryUsage(
bool inclusive)
const;
117 static bool hasAgentPackedPrimitives(
124 bool isValid()
const override;
125 void clearData()
override;
132 {
return loadFrom(prim, options, map); }
137 {
return loadFrom(prim, options, map); }
141 { updateFrom(prim, options); }
146 bool loadSharedData(
int load_data_type,
152 void getVelocityRange(
157 fpreal &wmax)
const override;
163 bool unpackWithStyler(
172 int64 getMemoryUsage(
bool inclusive)
const override;
178 bool inclusive)
const override;
185 loadDefinitionIfNeeded();
186 return *myDefinition;
241 StringType intrinsicCurrentLayerName(const
GU_PrimPacked *prim) const;
242 void intrinsicSetCurrentLayerByName(
GU_PrimPacked *prim, const StringType &
name);
243 StringType intrinsicCollisionLayerName(const
GU_PrimPacked *prim) const;
244 void intrinsicSetCollisionLayerByName(
GU_PrimPacked *prim, const StringType &name);
258 {
return numClips(); }
261 const char* clipName(
exint i)
const;
263 {
return clipName(i); }
272 {
return myState.myClipTimes(i); }
274 {
return clipTime(i); }
282 {
return myState.myClipWeights(i); }
284 {
return clipWeight(i); }
291 const char* clipTransformGroupName(
exint i)
const;
293 {
return clipTransformGroupName(i); }
301 {
return myState.myClipLayerIds(i); }
303 {
return clipLayerId(i); }
311 {
return myState.myClipLayers.entries(); }
317 bool interpolate_samples =
true)
const
318 {
return computeTransforms(xforms,
320 interpolate_samples); }
323 bool interpolate_samples =
true)
const
324 {
return computeTransforms(xforms,
326 interpolate_samples); }
329 bool interpolate_samples =
true)
const
330 {
return computeWorldTransformInternal(xform, i, interpolate_samples); }
333 bool interpolate_samples =
true)
const
334 {
return computeLocalTransformInternal(xform, i, interpolate_samples); }
338 { setTransforms(xforms,
true); }
341 { setTransforms(xforms,
false); }
343 void setWorldTransform(
const Matrix4Type &
xform,
exint i);
345 void setLocalTransform(
const Matrix4Type &
xform,
exint i);
350 {
return hasCustomTransforms(); }
353 {
return getRig() ? getRig()->transformCount() : 0; }
355 {
return transformCount(); }
357 const char* transformName(
exint i)
const;
359 {
return transformName(i); }
363 exint transformsArraySize()
const;
365 {
return transformsArraySize(); }
367 { transformsArray(data, n,
true); }
370 { setTransformsFromArray(data, n,
373 { transformsArray(data, n,
377 { setTransformsFromArray(data, n,
382 {
return getRig() ? getRig()->channelCount() : 0; }
385 bool computeChannelValues(FloatArrayConstPtr &
values,
386 bool interpolate_samples =
true)
const;
394 {
return myHasCustomChannelValues; }
400 {
return channelCount(); }
407 {
return hasCustomChannelValues(); }
441 {
return numClipLayers(); }
452 void loadDefinition()
const;
459 template <
typename T>
461 template <
typename T>
467 bool computeTransforms(Matrix4ArrayConstPtr &matrices,
469 bool interpolate_samples =
true,
470 bool acquire_xform_lock =
true)
const;
474 bool computeWorldTransformInternal(Matrix4Type &
xform,
476 bool interpolate_samples,
477 bool acquire_xform_lock =
true)
const;
481 bool computeLocalTransformInternal(Matrix4Type &
xform,
483 bool interpolate_samples,
484 bool acquire_xform_lock =
true)
const;
490 bool world_space)
const;
498 void convertCachedTransforms(
bool world_space)
const;
520 : myDefinition(definition),
521 myTransforms(transforms),
522 myChannelValues(channel_values)
526 DelayLoadData(
const DelayLoadData &
src)
527 : myDefinition(src.myDefinition),
528 myTransforms(src.myTransforms),
529 myChannelValues(src.myChannelValues),
530 myClipNames(src.myClipNames),
531 myClipXformGroupNames(src.myClipXformGroupNames),
532 myCurrentLayerNames(src.myCurrentLayerNames),
533 myCollisionLayerNames(src.myCollisionLayerNames)
538 bool isLoaded()
const
540 return !myDefinition && !myTransforms && !myChannelValues;
543 int64 getMemoryUsage(
bool inclusive)
const;
573 mutable FloatArrayPtr myCachedChannelValues;
574 mutable Matrix4ArrayPtr myCachedTransforms;
579 mutable bool myHasCustomChannelValues;
581 mutable bool myHasCustomXforms;
586 mutable XformLock myXformLock;
UT_Int64Array myClipLayerIds
UT_StringHolder StringType
UT_Lockable< tbb::spin_mutex > UT_TBBSpinLock
void setLocalTransformsFromArray(GU_PrimPacked *prim, const FloatType *data, exint n)
GLenum GLuint GLenum GLsizei const GLchar * buf
ApexArray< Matrix4 > Matrix4Array
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.
SIM_API const UT_StringHolder agent
GLsizei const GLfloat * value
#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
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
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.
UT_SharedPtr< FloatArray > FloatArrayPtr
fpreal intrinsicClipTime(const GU_PrimPacked *prim, exint i) const
#define GA_INVALID_OFFSET
std::optional< T > UT_Optional
GLenum GLuint GLint GLint layer
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
exint intrinsicNumClips(const GU_PrimPacked *prim) const
fpreal intrinsicClipWeight(const GU_PrimPacked *prim, exint i) const
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.
void setWorldTransforms(const Matrix4Array &xforms)
Override the world transforms for this agent.
const char * intrinsicClipName(const GU_PrimPacked *prim, exint i) const
void update(GU_PrimPacked *prim, const UT_Options &options) override
UT_Fpreal64Array myClipTimes
bool computeLocalTransform(Matrix4Type &xform, exint i, bool interpolate_samples=true) const
Get a specific local transform for the agent.
bool supportsJSONLoad() const override
UT_Matrix4T< FloatType > Matrix4Type
GLuint const GLchar * name
void worldTransformsArray(const GU_PrimPacked *prim, FloatType *data, exint n) const
const GU_AgentRigConstPtr & getRig() const
GA_API const UT_StringHolder transform
UT_SharedPtr< const FloatArray > FloatArrayConstPtr
exint intrinsicChannelCount(const GU_PrimPacked *) const
fpreal clipTime(exint i) const
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
UT_UniqueLock< UT_Lockable< tbb::spin_mutex > > Scope
bool hasCustomChannelValues() const
A map of string to various well defined value types.
GLenum GLsizei GLsizei GLint * values
fpreal clipWeight(exint i) const
LeafData & operator=(const LeafData &)=delete
bool computeWorldTransform(Matrix4Type &xform, exint i, bool interpolate_samples=true) const
Get a specific world transform for the agent.
GLubyte GLubyte GLubyte GLubyte w
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
bool intrinsicHasCustomTransforms(const GU_PrimPacked *) const
ClipLayer(BlendMode blend_mode, fpreal64 weight=0.0, int64 parent=-1)
UT_Array< Matrix4Type > Matrix4Array
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