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;
160 bool unpackWithStyler(
169 int64 getMemoryUsage(
bool inclusive)
const override;
175 bool inclusive)
const override;
182 loadDefinitionIfNeeded();
183 return *myDefinition;
238 StringType intrinsicCurrentLayerName(const
GU_PrimPacked *prim) const;
239 void intrinsicSetCurrentLayerByName(
GU_PrimPacked *prim, const StringType &
name);
240 StringType intrinsicCollisionLayerName(const
GU_PrimPacked *prim) const;
241 void intrinsicSetCollisionLayerByName(
GU_PrimPacked *prim, const StringType &name);
255 {
return numClips(); }
258 const char* clipName(
exint i)
const;
260 {
return clipName(i); }
269 {
return myState.myClipTimes(i); }
271 {
return clipTime(i); }
279 {
return myState.myClipWeights(i); }
281 {
return clipWeight(i); }
288 const char* clipTransformGroupName(
exint i)
const;
290 {
return clipTransformGroupName(i); }
298 {
return myState.myClipLayerIds(i); }
300 {
return clipLayerId(i); }
308 {
return myState.myClipLayers.entries(); }
314 bool interpolate_samples =
true)
const
315 {
return computeTransforms(xforms,
317 interpolate_samples); }
320 bool interpolate_samples =
true)
const
321 {
return computeTransforms(xforms,
323 interpolate_samples); }
326 bool interpolate_samples =
true)
const
327 {
return computeWorldTransformInternal(xform, i, interpolate_samples); }
330 bool interpolate_samples =
true)
const
331 {
return computeLocalTransformInternal(xform, i, interpolate_samples); }
335 { setTransforms(xforms,
true); }
338 { setTransforms(xforms,
false); }
340 void setWorldTransform(
const Matrix4Type &xform,
exint i);
342 void setLocalTransform(
const Matrix4Type &xform,
exint i);
347 {
return hasCustomTransforms(); }
350 {
return getRig() ? getRig()->transformCount() : 0; }
352 {
return transformCount(); }
354 const char* transformName(
exint i)
const;
356 {
return transformName(i); }
360 exint transformsArraySize()
const;
362 {
return transformsArraySize(); }
364 { transformsArray(data, n,
true); }
367 { setTransformsFromArray(data, n,
370 { transformsArray(data, n,
374 { setTransformsFromArray(data, n,
379 {
return getRig() ? getRig()->channelCount() : 0; }
382 bool computeChannelValues(FloatArrayConstPtr &
values,
383 bool interpolate_samples =
true)
const;
391 {
return myHasCustomChannelValues; }
397 {
return channelCount(); }
404 {
return hasCustomChannelValues(); }
438 {
return numClipLayers(); }
449 void loadDefinition()
const;
456 template <
typename T>
458 template <
typename T>
464 bool computeTransforms(Matrix4ArrayConstPtr &matrices,
466 bool interpolate_samples =
true,
467 bool acquire_xform_lock =
true)
const;
471 bool computeWorldTransformInternal(Matrix4Type &xform,
473 bool interpolate_samples,
474 bool acquire_xform_lock =
true)
const;
478 bool computeLocalTransformInternal(Matrix4Type &xform,
480 bool interpolate_samples,
481 bool acquire_xform_lock =
true)
const;
487 bool world_space)
const;
495 void convertCachedTransforms(
bool world_space)
const;
517 : myDefinition(definition),
518 myTransforms(transforms),
519 myChannelValues(channel_values)
523 DelayLoadData(
const DelayLoadData &
src)
524 : myDefinition(src.myDefinition),
525 myTransforms(src.myTransforms),
526 myChannelValues(src.myChannelValues),
527 myClipNames(src.myClipNames),
528 myClipXformGroupNames(src.myClipXformGroupNames),
529 myCurrentLayerNames(src.myCurrentLayerNames),
530 myCollisionLayerNames(src.myCollisionLayerNames)
535 bool isLoaded()
const
537 return !myDefinition && !myTransforms && !myChannelValues;
540 int64 getMemoryUsage(
bool inclusive)
const;
570 mutable FloatArrayPtr myCachedChannelValues;
571 mutable Matrix4ArrayPtr myCachedTransforms;
576 mutable bool myHasCustomChannelValues;
578 mutable bool myHasCustomXforms;
583 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.
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
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
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