![]() |
NDEVR
API Documentation
|
A Model which contains logic for dynamically setting the location of an object relative to information that might dynamically change. More...
Public Types | |
| enum | LocationType { e_none , e_location , e_relative_to_model_w_distance_angle , e_same_as_model } |
| Defines how the location of this object is determined. More... | |
| Public Types inherited from Model | |
| enum | DescendedFlags { e_descendent_selected = 0 , e_descendent_focussed = 1 , e_descendent_deletion_blocked = 2 } |
| Flags that propagate upward from descendant models to ancestors, indicating aggregate states of the subtree below this model. More... | |
| enum | InheritedFlags : uint01 { e_inherited_is_visible = 0 , e_inherited_has_no_focus = 1 , e_inherited_is_tree_visible = 2 , e_inherited_not_selected = 3 , e_placholder = 4 , e_inherited_can_delete = 5 , e_inherited_does_not_follow_camera = 6 , e_inherited_does_not_orient_to_camera = 7 , e_inherited_does_not_scale_to_camera = 8 , e_inherited_not_deleted = 9 , e_inherited_not_application_owned = 10 , e_inherited_exportable = 11 } |
| Flags that are recursively inherited from ancestor models down through the hierarchy. More... | |
| enum class | MaterialMode { e_by_parent , e_by_layer , e_custom , e_hidden } |
| Determines how a model resolves its material for rendering. More... | |
| enum class | ModelColorMode { e_direct , e_by_selectable_children , e_by_material_root , e_by_layer } |
| Determines how the model color is resolved for display purposes. More... | |
| enum | ParentMatrixFlags : uint01 { e_ignore_offset = 0 , e_ignore_scale = 1 , e_ignore_rotation = 2 , e_ignore_scale_distortion = 3 , e_use_only_for_offset = 4 , e_orient_to_camera = 5 , e_follow_camera = 6 , e_scale_to_camera = 7 } |
| Flags controlling which components of the parent's transformation matrix are applied to this model. More... | |
| Public Types inherited from DesignInfo | |
| enum | DesignObjectType : uint01 |
Public Member Functions | |
| LocationOperations () | |
| Default constructor. | |
| LocationOperations (const Model &model) | |
| Wraps an existing Model as a LocationOperations object. | |
| bool | activePrismEditable () const |
| Checks whether the currently active prism target is user-editable. | |
| uint04 | activePrismIndex () const |
| Returns the index of the currently active prism target. | |
| Vertex< 3, fltp08 > | activePrismOffset () const |
| Returns the 3D offset of the currently active prism target. | |
| void | autoUpdateLocationType () |
| Automatically determines and sets the LocationType based on current metadata. | |
| Vertex< 3, fltp08 > | calculateFromLocation (const Vertex< 3, fltp08 > &location, const Vector< 3, Angle< fltp08 > > &angle, fltp08 distance, bool is_location_relative) |
| Computes a world-space position from a reference location, angular offset, and distance. | |
| bool | isPrismEditable (uint04 location) const |
| Checks whether the prism at the given index is user-editable. | |
| LocationType | locationType () const |
| Returns the current LocationType describing how this object's position is determined. | |
| uint04 | prismCount () const |
| Returns the total number of prism targets defined on this object. | |
| Vertex< 3, fltp08 > | prismLocation (uint04 index) const |
| Returns the 3D offset for a prism target at the given index. | |
| UUID | referenceID () const |
| Returns the UUID of the primary reference model used for location computation. | |
| UUID | referenceModelA () const |
| Returns the UUID of the primary reference model (alias for referenceID). | |
| Vector< 3, Angle< fltp08 > > | relativeAngle () const |
| Returns the stored angular offset used to compute this object's position relative to its reference model. | |
| fltp08 | relativeDistance () const |
| Returns the stored scalar distance offset from the reference model. | |
| void | setActivePrismIndex (uint04 index) |
| Sets the active prism index and updates the active prism offset and editability accordingly. | |
| void | setLocation (const Vertex< 3, fltp08 > &location) |
| Sets the absolute world-space location of this object, updating both the transform matrix and the stored "location" metadata. | |
| void | setLocationType (const LocationType &type) |
| Sets the LocationType that determines how this object's position is computed. | |
| void | setPrismLocation (uint04 index, const Vertex< 3, fltp08 > &vertex, bool is_editable) |
| Sets the location and editability of a prism target at the given index. | |
| void | setPrismOffset (const Vector< 3, fltp08 > &prism_offset, bool is_editable) |
| Sets the active prism offset and editability. | |
| void | setReferenceDistance (fltp08 distance) |
| Updates the stored distance offset used when computing location relative to a reference model. | |
| void | setReferenceObject (const Model &reference) |
| Sets the reference object by Model, storing its UUID as the location reference. | |
| void | setReferenceObject (const Model &reference, const Vector< 3, Angle< fltp08 > > &angle, fltp08 distance, bool is_location_relative) |
| Sets the reference object by Model with floating-point angle offsets. | |
| void | setReferenceObject (const Model &reference, const Vector< 3, Angle< sint04 > > &angle, fltp08 distance, bool is_location_relative) |
| Sets the reference object by Model with integer-typed angle offsets, which are converted to floating-point angles internally. | |
| void | setReferenceObject (const UUID &reference) |
| Sets the reference object by UUID, storing it as the location reference. | |
| void | setReferenceObject (const UUID &reference, const Vector< 3, Angle< fltp08 > > &angle, fltp08 distance, bool is_location_relative) |
| Sets the reference object by UUID along with angle, distance, and relativity parameters that define the positional offset from the reference. | |
| void | updateLocation (DesignObjectLookup *lookup) |
| Recomputes this object's location based on the current LocationType and reference model state. | |
| Public Member Functions inherited from Model | |
| Model () | |
| Default constructor. Creates an uninitialized Model. | |
| Model (const DesignInfo &obj) | |
| Constructs a Model from an existing DesignInfo descriptor. | |
| Model (DesignObjectBase *base) | |
| Constructs a Model from a design object base, using the next available index. | |
| Model (uint04 index, DesignObjectBase *base) | |
| Constructs a Model at a specific index within the design object base. | |
| void | addChild (Model &child) |
| Adds an existing model as a child of this model. | |
| void | addChild (uint04 child_idx, Model &child) |
| Adds an existing model as a child at a specific index. | |
| void | addChild (uint04 child_index) |
| Adds a child by its database index. | |
| void | addPerVertexColorFromMaterialConstant (UVType constant_index) |
| Adds per-vertex color data derived from a material constant UV channel. | |
| Matrix< fltp08 > | applyTransformToParent (Matrix< fltp08 > mat, const Matrix< fltp08 > &parent_mat) const |
| Applies a transformation matrix to the parent transform, respecting parent matrix flags. | |
| Vector< 3, fltp08 > | calculateAverageDirection (const Matrix< fltp08 > &parent_transform=Constant< Matrix< fltp08 > >::Invalid) const |
| Calculates the average direction vector of descendant linear geometries. | |
| Vector< 2, fltp08 > | calculateHVLength (const Matrix< fltp08 > &parent_transform=Constant< Matrix< fltp08 > >::Invalid) const |
| Calculates horizontal and vertical length components of descendant linear geometries. | |
| void | calculateIndexNeighborList () |
| Calculates the index neighbor list for geometry processing. | |
| fltp08 | calculateLength (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid) const |
| Calculates the total length of all descendant linear geometries. | |
| void | calculateNormals (NormalMode mode, Angle< fltp08 > smoothing_angle) |
| Recalculates normals for all descendant geometries. | |
| void | calculateSmoothTextures (Vector< 3, fltp08 > origin, fltp08 scale) |
| Calculates smooth texture coordinates based on a projection origin and scale. | |
| fltp08 | calculateSurfaceArea (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid) const |
| Calculates the surface area of all descendant mesh geometries. | |
| void | calculateTangentSpace (bool calc_tan, bool calc_bitan) |
| Calculates tangent and/or bitangent vectors for all descendant geometries. | |
| fltp08 | calculateVolume (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid) const |
| Calculates the volume of all descendant mesh geometries. | |
| Vector< 2, fltp08 > | calculateVolumeAndSurfaceArea (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid, const void *lock=nullptr) const |
| Calculates both volume and surface area in a single pass for efficiency. | |
| bool | canExplode () const |
| Checks whether this model can be exploded into its constituent children. | |
| bool | canInteract () const |
| Checks whether this model can be interacted with (visible, not locked, etc.). | |
| Vertex< 3, fltp08 > | centerAlignModel () |
| Centers the model geometry at the origin and returns the offset applied. | |
| void | checkBounds () |
| Validates and recalculates cached bounding boxes if needed. | |
| uint04 | childCount () const |
| Returns the number of direct children this model has. | |
| void | clearChildren () |
| Removes all children from this model without deleting them. | |
| void | clearLayer () |
| Removes the layer assignment from this model. | |
| void | clearMaterial () |
| Removes the material assignment from this model. | |
| void | clearMaterialDescendants () |
| Removes all descendant material assignments without deleting the materials. | |
| void | colorByChannel (Material &mat, const StringView &channel, fltp08 avg=Constant< fltp08 >::Invalid) const |
| Colors geometry vertices by a data channel value from a material. | |
| void | copyFrom (const Model &model, bool deep_copy, bool copy_ids=false, bool recursive=true, bool keep_root_properties=false) |
| Copies data from another model into this model. | |
| void | copyMaterialProperties (const Model &model) |
| Copies material properties from another model to this model. | |
| Model | createChild () |
| Creates a new child model and appends it to this model's child list. | |
| Model | createChild (uint04 child_slot) |
| Creates a new child model at a specific child slot index. | |
| Effect | createChildEffect () |
| Creates a new child effect attached to this model. | |
| Geometry | createChildGeometry () |
| Creates a new child geometry for this model. | |
| Material | createChildMaterial (bool copy_child=false) |
| Creates a new child material for this model. | |
| void | createChildren (uint04 child_size) |
| Creates multiple children at once. | |
| Effect | createSceneEffect () const |
| Creates a new effect in the scene database. | |
| Geometry | createSceneGeometry () const |
| Creates a new geometry in the scene database. | |
| Model | createSceneLayer () const |
| Creates a new layer model in the scene database. | |
| Material | createSceneMaterial () const |
| Creates a new material in the scene database. | |
| Model | createSceneModel () const |
| Creates a new model in the scene database associated with this model. | |
| RGBColor | customModelColor (ModelColorMode mode) const |
| Returns the resolved model color based on the specified color mode. | |
| void | deleteChildren () |
| Deletes all children of this model. | |
| void | deleteModel (bool deletchildren, bool removfrom_parent=true) |
| Deletes this model from the scene. | |
| BitFlag | descendedFlagsNoCache (bool complete_cache_ignore) const |
| Computes descended flags without using the cache. | |
| BitFlag | descendedPersonalFlagsNoCache () const |
| Computes descended personal flags without using the cache. | |
| void | descendentGeometryTypes (Set< GeometryType > &buffer) const |
| Collects all unique geometry types from descendants into the provided set. | |
| Model | directLayer () const |
| Returns the directly assigned layer model. | |
| TranslatedString | displayName () const |
| Returns the translated display name for this model. | |
| TranslatedString | displayNamePath (const StringView &seperator=":") const |
| Returns the full display name path from root to this model. | |
| bool | doesModelPropertyContain (NDPN property, const char *value, bool ignorcase) const |
| Checks whether a model property contains a given C-string substring. | |
| template<class t_type> | |
| bool | doesModelPropertyContain (NDPN property, const StringView &value, bool ignorcase) const |
| Checks whether a model property contains a given substring. | |
| void | ensureTangentSpace (bool ensure_tan, bool ensure_bitan) |
| Ensures that tangent and/or bitangent data exists, calculating if needed. | |
| void | ensureVisibleChildren (uint04 count) |
| Hides children whos child index is greater than size, or creates/shows children if needed such that there is exactly a given number of visible children for this model. | |
| void | eraseModel () |
| Erases this model from the database without removing children. | |
| ModelBuffer | explodeModel () |
| Explodes this model, promoting its children to siblings in the parent. | |
| bool | exportIgnored () const |
| Checks whether this model is excluded from export operations. | |
| Model | findDescendentByName (const StringView &name) const |
| Recursively searches descendants for a model with the given name. | |
| Model | findDescendentByType (const StringView &type) const |
| Recursively searches descendants for a model with the given type. | |
| Time | getAscModifiedTime (bool include_self, bool include_layer=true) const |
| Returns the greatest modified time of this model and all ancestors. | |
| Bounds< 3, fltp08 > | getBounds () const |
| Returns the local bounding box of this model. | |
| Bounds< 3, fltp08 > | getBoundsOfVisible () const |
| Returns the bounding box of all visible descendants. | |
| Model | getChild (uint04 child) const |
| Returns the child model at the given child slot index. | |
| Model | getChild (UUID id) const |
| Returns the child model with the specified UUID. | |
| uint04 | getChildIndex () const |
| Returns this model's index within its parent's child list. | |
| uint04 | getChildIndex (uint04 child) const |
| Returns the database index of the child at the given slot. | |
| Buffer< uint04 > | getChildIndices () const |
| Returns the database indices of all direct children. | |
| uint04 | getChildLayerIndex () const |
| Returns this model's index within its parent's layer child list. | |
| ModelBuffer | getChildren () const |
| Returns a buffer containing all direct children of this model. | |
| void | getChildren (ModelBuffer &children) const |
| Appends all direct children of this model to the provided buffer. | |
| ModelBuffer | getChildrenByName (const StringView &name) const |
| Returns all direct children whose name matches the given string. | |
| ModelBuffer | getChildrenByType (const Buffer< String > &type) const |
| Returns all direct children whose type matches any of the given strings. | |
| ModelBuffer | getChildrenByType (const StringView &type) const |
| Returns all direct children whose type matches the given string. | |
| Buffer< UUID > | getChildrenIDs () const |
| Returns the UUIDs of all direct children. | |
| PrimitiveAlignedBuffer< std::pair< Model, Geometry >, 32 > | getClippingGeometry () const |
| Returns model-geometry pairs used for clipping operations. | |
| Matrix< fltp08 > | getCompleteTransform () const |
| Returns the fully composed local-to-global transform matrix for this model. | |
| ModelBuffer | getDescendants (bool include_deleted=false, bool local_only=false) const |
| Returns all descendant models recursively. | |
| void | getDescendants (ModelBuffer &buffer, bool include_deleted=false, bool local_only=false) const |
| Appends all descendant models recursively to the provided buffer. | |
| ModelBuffer | getDescendantsByName (const StringView &name, uint04 max_count=Constant< uint04 >::Max) const |
| Recursively searches all descendants for models matching the given name. | |
| ModelBuffer | getDescendantsByNameAndType (const StringView &name, const StringView &type, uint04 max_count=Constant< uint04 >::Max) const |
| Recursively searches all descendants for models matching both name and type. | |
| ModelBuffer | getDescendantsByType (const StringView &type, uint04 max_count=Constant< uint04 >::Max) const |
| Recursively searches all descendants for models matching the given type. | |
| Time | getDescModifiedTime (bool includself) const |
| Returns the greatest modified time of this model and all descendants. | |
| uint04 | getDirectLayerIndex () const |
| Returns the database index of the directly assigned layer. | |
| Effect | getEffect (uint04 index=0) const |
| Returns the effect at the specified child index. | |
| EffectBuffer | getEffectChildren () const |
| Returns all direct child effects of this model. | |
| EffectBuffer | getEffectDescendants () const |
| Returns all descendant effects recursively. | |
| uint04 | getEffectIndex (uint04 child_index=0) const |
| Returns the database index of the effect at the given child slot. | |
| Model | getFamilyMember (uint04 index) const |
| Returns a model from the family tree (ancestors + descendants) by flat index. | |
| Geometry | getGeometry () const |
| Returns the geometry attached to this model. | |
| GeometryBuffer | getGeometryDescendants (bool remove_redundant=true, uint04 max_count=Constant< uint04 >::Max) const |
| Recursively collects all descendant geometries. | |
| uint04 | getGeometryIndex () const |
| Returns the database index of the geometry associated with this model. | |
| Model | getLayer () const |
| Returns the layer model assigned to this model (direct or inherited). | |
| Material | getMaterial () const |
| Returns the material assigned to this model. | |
| MaterialBuffer | getMaterialDescendants (bool local_only=false) const |
| Recursively collects all descendant materials. | |
| void | getMaterialDescendants (MaterialBuffer &materials, bool local_only=false) const |
| Appends all descendant materials to the provided buffer. | |
| void | getMaterialDescendants (Set< Material > &materials, bool local_only=false) const |
| Appends all descendant materials to the provided set (deduplicating). | |
| MaterialBuffer | getMaterialDescendantsByName (const StringView &name, uint04 max_count=Constant< uint04 >::Max) const |
| Returns descendant materials filtered by name. | |
| uint04 | getMaterialIdx () const |
| Returns the database index of the material assigned to this model. | |
| MaterialMode | getMaterialMode () const |
| Returns the material mode determining how materials are resolved for this model. | |
| StringView | getModelIcon () const |
| Returns the icon identifier string for this model's type. | |
| uint04 | getNumOfEffects () const |
| Returns the number of effects attached to this model. | |
| Model | getParent () const |
| Returns the parent model of this model. | |
| uint04 | getParentIndex () const |
| Returns the database index of this model's parent. | |
| Matrix< fltp08 > | getParentTransform () const |
| Returns the parent's transformation matrix as seen by this model. | |
| Model | getRoot () const |
| Returns the root ancestor of this model's hierarchy. | |
| Material | getRootMaterial () const |
| Returns the root material resolved through the hierarchy. | |
| Model | getRootMaterialModel () |
| Returns the ancestor model that determines the root material for this model. | |
| Effect | getSceneEffect (UUID id) const |
| Returns a scene effect by its UUID. | |
| EffectBuffer | getSceneEffects () const |
| Returns all effects in the scene database. | |
| GeometryBuffer | getSceneGeometries () const |
| Returns all geometries in the scene database. | |
| Geometry | getSceneGeometry (uint04 index) const |
| Returns a scene geometry by database index. | |
| Geometry | getSceneGeometry (UUID id) const |
| Returns a scene geometry by UUID. | |
| Model | getSceneLayer (UUID id) const |
| Returns a scene layer by its UUID. | |
| ModelBuffer | getSceneLayers (bool include_deleted=false) const |
| Returns all layer models in the scene. | |
| Material | getSceneMaterial (uint04 index) const |
| Returns a scene material by database index. | |
| Material | getSceneMaterial (UUID id) const |
| Returns a scene material by UUID. | |
| MaterialBuffer | getSceneMaterials () const |
| Returns all materials in the scene database. | |
| Model | getSceneModel (UUID id) const |
| Retrieves a scene model by its UUID. | |
| ModelBuffer | getSceneModels (bool include_deleted=false, bool local_only=false) const |
| Returns all models in the scene database. | |
| ModelBuffer | getSceneModelsByName (const StringView &name, uint04 max_count=Constant< uint04 >::Max, bool includdeleted=false) const |
| Returns scene models filtered by name. | |
| ModelBuffer | getSceneModelsByType (const StringView &type, uint04 max_count=Constant< uint04 >::Max, bool includdeleted=false) const |
| Returns scene models filtered by type. | |
| Bounds< 3, fltp08 > | getSelectionBounds () const |
| Returns the selection-specific bounding box in local space. | |
| template<class t_type> | |
| Buffer< t_type > | getTypeChildren (const StringView &type) const |
| Returns children of a specific type, cast to the requested derived type. | |
| template<class t_type> | |
| Buffer< t_type > | getTypeDescendants (const StringView &type) const |
| Recursively searches descendants for models of a specific type, cast to a derived type. | |
| Bounds< 3, fltp08 > | globalBounds () const |
| Returns the global bounding box of this model (including transform). | |
| Vertex< 3, fltp08 > | globalCenterOfRotation () const |
| Returns the center of rotation in global coordinates. | |
| Bounds< 3, fltp08 > | globalSelectionBounds () const |
| Returns the global selection bounding box. | |
| bool | hasChild (uint04 child_index=0U) const |
| Checks whether this model has a child at the given slot. | |
| void | hasDescendants (bool &has_point, bool &has_line, bool &has_mesh, bool only_user_objects) const |
| Checks which types of geometry primitives exist among descendants. | |
| bool | hasDescendent (const Model &model) const |
| Checks whether a given model is a descendant of this model. | |
| bool | hasDescendent (const UUID &id) const |
| Checks whether a model with the given UUID is a descendant of this model. | |
| bool | hasDirectLayer () const |
| Checks whether this model has a directly assigned layer (not inherited). | |
| bool | hasEffect (uint04 index=0) const |
| Checks whether an effect exists at the given child index. | |
| bool | hasFocus () const |
| Checks whether this model currently has focus. | |
| bool | hasGeometryDescendent () const |
| Checks whether any descendant has geometry data. | |
| bool | hasHoles (PrimitiveProperty property) const |
| Checks whether the geometry has holes (missing primitives) for a given property. | |
| bool | hasLayer () const |
| Checks whether this model has a layer (directly or inherited). | |
| bool | hasLayerRootMaterial () const |
| Checks whether a root material exists through the layer hierarchy. | |
| bool | hasLinearDescendent () const |
| Checks whether any descendant has linear (line/polyline) geometry. | |
| bool | hasMaterial () const |
| Checks whether this model has a material assigned. | |
| bool | hasMeshDescendent () const |
| Checks whether any descendant has mesh (triangle) geometry. | |
| bool | hasPointsDescendent () const |
| Checks whether any descendant has point geometry. | |
| bool | hasRootMaterial () const |
| Checks whether a root material can be resolved through the hierarchy. | |
| bool | hasSelectedDescendent () const |
| Checks whether any descendant of this model is selected. | |
| Vector< 32, bool > | inheritedFlags () const |
| Returns the cached inherited flags vector for this model. | |
| Vector< 32, bool > | inheritedFlagsNoCache (bool complete_cache_ignore) const |
| Computes inherited flags without using the cache. | |
| Vector< 32, bool > | inheritedPersonalFlagsNoCache () const |
| Computes inherited personal flags without using the cache. | |
| void | invalidateBounds () |
| Invalidates all cached bounding boxes, forcing recalculation on next access. | |
| void | invalidateGlobalBoundsDesc () |
| Invalidates global bounding boxes for this model and all descendants. | |
| void | invalidateSelectionBounds () |
| Invalidates the cached selection bounding box. | |
| void | invalidateTransformCache () |
| Invalidates the cached transformation matrix, forcing recomputation. | |
| void | invalidateVisibleBounds () |
| Invalidates the cached visible bounding box. | |
| bool | isApplicationOwned () const |
| Checks whether this model is owned by the application (not user-created). | |
| bool | isDeleted () const |
| Checks whether this model has been deleted. | |
| bool | isLayer () const |
| Checks whether this model is a layer definition. | |
| bool | isLocked () const |
| Checks whether this model is locked against editing. | |
| bool | isScene () const |
| Checks whether this model represents a scene root node. | |
| bool | isSelected () const |
| Checks whether this model is currently selected. | |
| bool | isTreeVisible () const |
| Checks whether this model is visible in the model tree view. | |
| template<class t_buffer_type> | |
| bool | isType (const Buffer< t_buffer_type > &types) const |
| Checks whether the model's type matches any type in the given buffer. | |
| bool | isVisible () const |
| Checks whether this model is visible (accounting for inherited visibility). | |
| operator bool () const | |
| Boolean conversion operator. Returns true if this Model references a valid entry. | |
| void | overrideMaterialDescendants (MaterialMode override_desc) |
| Overrides material mode for all descendants. | |
| BitFlag | parentMatrixFlags () const |
| Returns the parent matrix flags for this model. | |
| BitFlag | personalDescendedFlags () const |
| Returns the cached personal descended flags. | |
| Vector< 32, bool > | personalInheritedFlags () const |
| Returns the personal inherited flags from the cache. | |
| void | removeChild (const Model &model) |
| Removes a specific child model from this model's child list. | |
| void | removeDuplicateVertices (fltp08 epsilon, void *lock, InfoPipe *log=nullptr) |
| Removes duplicate vertices from all descendant geometries. | |
| void | removeGeometry () |
| Removes the geometry reference from this model (does not delete the geometry). | |
| void | removeMaterial () |
| Removes the material from this model. | |
| void | restoreModel () |
| Restores a previously deleted model, re-adding it to the scene. | |
| void | restoreModel (Model &parent, uint04 index=Constant< uint04 >::Invalid) |
| Restores a previously deleted model under a specific parent. | |
| void | setChildApplicationConstructed (const StringView &database_name=StringView()) |
| Sets the child database to an application-constructed database by name. | |
| void | setChildApplicationConstructed (DesignObjectBase *base) |
| Sets the child database to use an application-constructed DesignObjectBase. | |
| void | setChildEffectSize (uint04 child_size) |
| Sets the number of child effect slots for this model. | |
| void | setChildIndex (uint04 child, uint04 id) |
| Sets the database index for a specific child slot. | |
| void | setEffectIndex (uint04 material_index, uint04 sub_index=0) |
| Sets the effect database index at a given sub-index. | |
| void | setGeometryApplicationConstructed (const StringView &database_name=StringView()) |
| Sets the geometry database to an application-constructed database by name. | |
| void | setGeometryChild (Geometry &geo) |
| Sets the geometry child of this model to an existing Geometry object. | |
| void | setGeometryIndex (uint04 geo_index) |
| Sets the geometry database index for this model. | |
| void | setIsLayer (bool is_layer) |
| Marks or unmarks this model as a layer definition. | |
| void | setLayer (Model layer) |
| Assigns this model to a specific layer. | |
| void | setMaterial (const Material &material) |
| Assigns a material to this model. | |
| void | setMaterialApplicationConstructed (const StringView &database_name=StringView()) |
| Sets the material database to an application-constructed database by name. | |
| void | setMaterialMode (MaterialMode option) |
| Sets the material mode for this model. | |
| void | setModelTransform (const Matrix< fltp08 > &transform) |
| Sets the model's local transformation matrix, replacing the current one. | |
| bool | setModelVisible (bool is_visible) |
| Sets the visibility of this model. | |
| void | setNormalMode (NormalMode mode, Angle< fltp08 > smoothing_angle, InfoPipe *log) |
| Sets the normal mode and recalculates normals with progress logging. | |
| void | setOrientation (const Vector< 3, Angle< fltp08 > > &new_orientation, const void *lock=nullptr) |
| Sets the orientation of this model using floating-point angles. | |
| void | setOrientation (const Vector< 3, Angle< sint04 > > &new_orientation, const void *lock=nullptr) |
| Sets the orientation of this model using integer-precision angles. | |
| void | setParentMatrixFlag (ParentMatrixFlags flag, bool value) |
| Sets or clears a specific parent matrix flag. | |
| void | setParentMatrixFlags (BitFlag flags) |
| Sets the parent matrix flags controlling which parent transform components to inherit. | |
| void | setSize (const Vector< 3, fltp08 > &size) |
| Sets the model size by scaling its transform to match the desired dimensions. | |
| void | setWindingMode (WindingMode mode) |
| Sets the winding mode for all descendant geometries. | |
| Vector< 3, fltp08 > | size () const |
| Returns the size (extents) of the model's bounding box. | |
| void | swapChildren (uint04 a, uint04 b) |
| Swaps the positions of two children in the child list. | |
| void | updateAscGeometryTime (const Time &time, bool include_self) |
| Updates the geometry-modified timestamp for this model and all ancestors. | |
| void | updateAscTime (const Time &time, bool includself) |
| Updates the modified timestamp for this model and all ancestors. | |
| void | updateDescGeometryTime (const Time &time, bool include_self) |
| Updates the geometry-modified timestamp for this model and all descendants. | |
| void | updateDescTime (const Time &time, bool include_self) |
| Updates the modified timestamp for this model and all descendants. | |
| void | updateFrom (const Model &model, bool check_resources) |
| Updates this model's properties from another model, optionally checking resources. | |
| void | updateGeometryTime (Time time=Time::SystemTime()) |
| Updates the geometry-modified timestamp for this model. | |
| void | updateInheritedFlagsCache (bool force_update_all=false, bool update_personal_flags=false) |
| Recalculates and caches the inherited flags for this model. | |
| void | updateModelTransform (const Matrix< fltp08 > &transform, const void *lock=nullptr) |
| Applies a delta transform to the current model transform. | |
| void | updateModifiedTime (Time time=Time::SystemTime()) |
| Updates the modified timestamp for this model. | |
| void | updateVisibleRecursive (bool is_visible) |
| Recursively updates visibility for this model and all descendants. | |
| void | validate (bool validate_children=true) const |
| Validates this model's internal state for consistency. | |
| uint04 | vertexCount () const |
| Returns the total number of vertices across all descendant geometries. | |
| uint04 | visibleVertexCount () const |
| Returns the total number of visible vertices across all descendant geometries. | |
| Public Member Functions inherited from DesignObject | |
| DesignObject ()=default | |
| Creates an "invalid" design object. | |
| DesignObject (const DesignInfo &info) | |
| Constructs a DesignObject from an existing DesignInfo, sharing the same base and indices. | |
| DesignObject (DesignObjectBase *base) | |
| Creates an new design object within the given DesignObjectBase. | |
| DesignObject (uint04 index, DesignObjectBase *base) | |
| Sets a DesignObject up to be a pointer to an existing object in the database. | |
| JSONNode | activeFilters () const |
| Retrieves the active filters applied to this design object as a JSON structure. | |
| void | appendData (const StringView &data, bool compressed) |
| Appends data to this design object's data storage. | |
| DesignObjectBase & | base () const |
| Returns a reference to the underlying DesignObjectBase database. | |
| void | clearAllMetaData () |
| Removes all metadata entries from this design object. | |
| void | clearMetaData (const StringView &index) |
| Removes a specific metadata entry by key. | |
| void | copyFrom (const DesignObject &object) |
| Copies all properties from the given design object into this one. | |
| uint04 | designIndex () const |
| Returns the design-specific index used to access type-specific properties (e.g., model, geometry, material properties). | |
| bool | doesPropertyBeginWith (NDPO property, const StringView &value, bool ignore_case) const |
| Checks whether a string property's value begins with the given substring. | |
| bool | doesPropertyContain (NDPO property, const StringView &value, bool ignore_case) const |
| Checks whether a string property's value contains the given substring. | |
| File | file () const |
| Returns the file path associated with this design object as a File object. | |
| template<auto t_property> | |
| constexpr decltype(auto) | get () const |
| Retrieves a property value using a compile-time property constant, with the type deduced from PropertySpec. | |
| template<auto t_property, class t_type> | |
| constexpr decltype(auto) | get () const |
| Retrieves a property value using a compile-time property constant, cast to the requested type. | |
| template<class t_type, class t_property_type> | |
| constexpr decltype(auto) | get (t_property_type property) const |
| Retrieves a property value from the database, cast to the requested type. | |
| DesignObject | getDesignParent () const |
| Retrieves the parent design object of this object in the model hierarchy. | |
| StringView | getIcon () const |
| Retrieves the icon identifier string associated with this design object. | |
| template<class t_type> | |
| decltype(auto) | getInheritedProperty (NDPO property) const |
| Retrieves a property value, walking up the parent hierarchy if the property is not set on this object. | |
| Scene | getScene () const |
| Retrieves the Scene that this design object belongs to. | |
| bool | hasMetaData (const StringView &index) const |
| Checks whether a metadata entry exists for the given key. | |
| template<class t_type, class t_design_type> | |
| bool | hasProperty (t_design_type property) const |
| Checks whether a property has a valid (non-default) value. | |
| uint04 | index () const |
| Returns the primary row index of this object within the DesignObjectBase property table. | |
| template<auto t_property> | |
| bool | is (const char *value) const |
| Checks whether a compile-time property matches the given C-string value. | |
| template<auto t_property> | |
| bool | is (const String &value) const |
| Checks whether a compile-time property matches the given String value. | |
| template<auto t_property> | |
| bool | is (const StringView &value) const |
| Checks whether a compile-time property matches the given StringView value. | |
| template<auto t_property, class t_type> | |
| std::enable_if<!ObjectInfo< t_type >::String, bool >::type | is (const t_type &value) const |
| Checks whether a compile-time property matches a non-string value using equality comparison. | |
| template<class t_property_type> | |
| bool | is (t_property_type property, const char *value) const |
| Checks whether a string property matches the given C-string value. | |
| template<class t_property_type> | |
| bool | is (t_property_type property, const String &value) const |
| Checks whether a string property matches the given String value. | |
| template<class t_property_type> | |
| bool | is (t_property_type property, const StringView &value) const |
| Checks whether a string property matches the given StringView value. | |
| template<class t_property_type, class t_type> | |
| std::enable_if<!ObjectInfo< t_type >::String, bool >::type | is (t_property_type property, const t_type &value) const |
| Checks whether a non-string property matches the given value using equality comparison. | |
| bool | isDesignType (DesignObjectType mode) const |
| Checks whether this object has the specified design type flag set. | |
| bool | isDesignType (uint04 mode) const |
| Checks whether this object has the specified design type flag set, using a raw integer value. | |
| bool | isValid () const |
| Checks whether this design object has a valid index into the database. | |
| const JSONNode & | metaData () const |
| Retrieves the entire metadata tree for this design object. | |
| const JSONNode & | metaData (const StringView &index) const |
| Retrieves a specific metadata entry by key. | |
| void | offsetDesign (const Vector< 3, fltp08 > &offset) |
| Translates this design object by the given offset vector. | |
| operator bool () const | |
| Bool conversion operator. | |
| bool | operator!= (const DesignObject &object) const |
| Checks inequality with another DesignObject. | |
| bool | operator< (const DesignObject &object) const |
| Less-than comparison for ordering DesignObjects (e.g., for sorted containers). | |
| bool | operator== (const DesignObject &object) const |
| Checks equality with another DesignObject by comparing base pointers and indices. | |
| bool | operator> (const DesignObject &object) const |
| Greater-than comparison for ordering DesignObjects (e.g., for sorted containers). | |
| Table & | propertyTable () |
| Returns a mutable reference to the property table that stores this object's properties. | |
| const Table & | propertyTable () const |
| Returns a const reference to the property table that stores this object's properties. | |
| void | removeMetaData (const StringView &index, const void *lock_ptr=nullptr) |
| Removes a metadata entry by key, with optional write lock support. | |
| void | scale (Vector< 3, fltp08 > scale, Vertex< 3, fltp08 > center_of_scale, const Matrix< fltp08 > &transform) |
| Scales this design object's geometry by the given scale factors around a center point, applying an additional transform. | |
| void | scale (Vector< 3, fltp08 > scale, Vertex< 3, fltp08 > center_of_scale=Constant< Vertex< 3, fltp08 > >::Invalid) |
| Scales this design object's geometry and transform by the given scale factors around a center point. | |
| template<auto t_property, class t_type> | |
| void | set (const t_type &value) |
| Sets a property value in the database using a compile-time property constant. | |
| template<class t_type, class t_property_type> | |
| void | set (t_property_type property, const t_type &value) |
| Sets a property value in the database. | |
| void | setActiveFilters (const JSONNode &node) |
| Sets the active filters on this design object from a JSON structure. | |
| void | setDesignType (DesignObjectType mode, bool is_type) |
| Sets or clears a design type flag on this object. | |
| void | setMetaData (const JSONNode &node) |
| Replaces the entire metadata tree with the given JSON node. | |
| void | setMetaData (const StringView &index, const bool &data) |
| Sets a metadata entry at the given key to a boolean value. | |
| void | setMetaData (const StringView &index, const fltp08 &data) |
| Sets a metadata entry at the given key to a 64-bit floating point value. | |
| void | setMetaData (const StringView &index, const JSONNode &node) |
| Sets a metadata entry at the given key to the specified JSON node value. | |
| void | setMetaData (const StringView &index, const String &data) |
| Sets a metadata entry at the given key to a String value. | |
| void | setMetaData (const StringView &index, const StringView &data) |
| Sets a metadata entry at the given key to a StringView value. | |
| void | setMetaData (const StringView &index, const uint01 &data) |
| Sets a metadata entry at the given key to a uint01 value. | |
| void | setMetaData (const StringView &index, const uint04 &data) |
| Sets a metadata entry at the given key to a uint04 value. | |
| template<auto t_property, class t_type> | |
| bool | update (const t_type &value, const void *lock=nullptr) |
| Updates a property using a compile-time property constant, only if the new value differs. | |
| template<class t_type, class t_property_type> | |
| bool | update (t_property_type property, const t_type &value, const void *lock=nullptr) |
| Updates a property only if the new value differs from the current value. | |
| void | updateCreatedTime () |
| Sets the creation time stamp for this design object to the current system time. | |
| void | updateDesignModifiedTime (Time time=Time::SystemTime()) |
| Updates the modified time stamp for this design object. | |
| void | updateDesignTransform (const Matrix< fltp08 > &transform, const void *lock=nullptr) |
| Updates the transform of this design object if it differs from the current value. | |
| bool | updateDesignVisible (bool is_visible, const void *lock=nullptr) |
| Updates the spatial visibility of this design object if it differs from the current value. | |
| void | updateMetaData (const StringView &index, const bool &data, const void *lock_ptr=nullptr) |
| Updates a metadata entry only if the new value differs from the current value. | |
| void | updateMetaData (const StringView &index, const fltp08 &data, const void *lock_ptr=nullptr) |
| Updates a metadata entry only if the new value differs from the current value. | |
| void | updateMetaData (const StringView &index, const String &data, const void *lock_ptr=nullptr) |
| Updates a metadata entry only if the new value differs from the current value. | |
| void | updateMetaData (const StringView &index, const StringView &data, const void *lock_ptr=nullptr) |
| Updates a metadata entry only if the new value differs from the current value. | |
| bool | validateDesignObject () const |
| Validates the internal state of this design object, ensuring indices and base pointer are consistent. | |
Static Public Member Functions | |
| static bool | HasDependency (const Model &object, const Model &potential_dependecy, const Buffer< Model > &models) |
| Checks whether a model has a location dependency on another model by walking the reference chain, using a provided buffer of models for resolution instead of DesignObjectLookup. | |
| static bool | HasDependency (const Model &object, const Model &potential_dependecy, DesignObjectLookup *lookup) |
| Checks whether a model has a location dependency on another model by walking the reference chain. | |
| Static Public Member Functions inherited from Model | |
| static ModelBuffer | ReduceToRoots (const ModelBuffer &children, const std::function< bool(const Model &, const Set< Model > &)> &filter) |
| Reduces a collection of models to only root-level models (removing any that are descendants of others in the set), filtered by a user-provided predicate. | |
| Static Public Member Functions inherited from DesignObject | |
| static constexpr StringView | FilePathDesignNameVariable () |
| Returns the placeholder variable string used in file paths to represent the design name. | |
Protected Member Functions | |
| Vertex< 3, fltp08 > | calculateFromReference (const Model &reference, const Vector< 3, Angle< fltp08 > > &angle, fltp08 distance, bool is_location_relative, const void *lock=nullptr) |
| Computes a world-space position from a reference Model's transform, angular offset, and distance. | |
| Protected Member Functions inherited from Model | |
| DesignObjectBase * | childBase () const |
| Returns the DesignObjectBase used for child model storage. | |
| ColumnT< uint04 > & | childToParentReference () const |
| Returns the column mapping child indices to parent indices. | |
| DesignObjectBase * | geometryBase () const |
| Returns the DesignObjectBase used for geometry storage. | |
| DesignObjectBase * | materialBase () const |
| Returns the DesignObjectBase used for material storage. | |
| DesignObjectBase * | parentBase () const |
| Returns the DesignObjectBase used for parent model storage. | |
| ColumnT< Buffer< uint04 > > & | parentToChildReference () const |
| Returns the column mapping parent indices to child index lists. | |
| Protected Member Functions inherited from DesignObject | |
| template<class t_type> | |
| void | _setProperty (NDPO property, const t_type &value) |
| Low-level property setter that directly writes to the design properties table without triggering side effects such as transform or visibility updates. | |
| void | initDesignObject () |
| Initializes default property values for this design object after construction. | |
| Protected Member Functions inherited from DesignInfo | |
| DesignInfo (DesignObjectBase *base) | |
| Creates an new design object within the given DesignObjectBase. | |
| DesignInfo (uint04 index, DesignObjectBase *base) | |
| Sets a DesignObject up to be a pointer to an existing object in the database. | |
| void | _setDesignVisible (bool is_visible) |
| Sets the spatial visibility of this design object and propagates the change through the design hierarchy. | |
| void | _setTransform (const Matrix< fltp08 > &transform) |
| Sets the 4x4 transform matrix for this design object and propagates the change through the design hierarchy. | |
Additional Inherited Members | |
| Protected Attributes inherited from DesignInfo | |
| DesignObjectBase * | m_base = nullptr |
| Pointer to the owning DesignObjectBase property database. | |
| uint04 | m_design_index = Constant<uint04>::Invalid |
| Index of the parent design that owns this object. | |
| uint04 | m_index = Constant<uint04>::Invalid |
| Row index of this object within the property database. | |
A Model which contains logic for dynamically setting the location of an object relative to information that might dynamically change.
Definition at line 13 of file LocationOperations.h.
Defines how the location of this object is determined.
Definition at line 19 of file LocationOperations.h.
| LocationOperations::LocationOperations | ( | ) |
|
explicit |
Wraps an existing Model as a LocationOperations object.
| [in] | model | The Model to wrap. |
References Model::Model().
| bool LocationOperations::activePrismEditable | ( | ) | const |
Checks whether the currently active prism target is user-editable.
| uint04 LocationOperations::activePrismIndex | ( | ) | const |
Returns the index of the currently active prism target.
Returns the 3D offset of the currently active prism target.
| void LocationOperations::autoUpdateLocationType | ( | ) |
Automatically determines and sets the LocationType based on current metadata.
| Vertex< 3, fltp08 > LocationOperations::calculateFromLocation | ( | const Vertex< 3, fltp08 > & | location, |
| const Vector< 3, Angle< fltp08 > > & | angle, | ||
| fltp08 | distance, | ||
| bool | is_location_relative ) |
Computes a world-space position from a reference location, angular offset, and distance.
When is_location_relative is false, the angle rotation is applied as a global offset from the reference location. When true, the rotation and distance define the position in rotated space without adding the reference location.
| [in] | location | The reference 3D position. |
| [in] | angle | The 3D angular offset. |
| [in] | distance | The scalar distance along the rotated X axis. |
| [in] | is_location_relative | Whether to compute in relative (true) or absolute offset (false) mode. |
|
protected |
Computes a world-space position from a reference Model's transform, angular offset, and distance.
Accounts for the reference model's prism offset if present. Uses a read lock to safely access the reference transform.
| [in] | reference | The reference Model. |
| [in] | angle | The 3D angular offset. |
| [in] | distance | The scalar distance along the rotated X axis. |
| [in] | is_location_relative | Whether to compute in relative or absolute offset mode. |
| [in] | lock | Optional read lock pointer for thread-safe access to the reference. |
References Model::Model().
|
static |
Checks whether a model has a location dependency on another model by walking the reference chain, using a provided buffer of models for resolution instead of DesignObjectLookup.
| [in] | object | The model to check. |
| [in] | potential_dependecy | The model to search for in the dependency chain. |
| [in] | models | The buffer of models used for UUID resolution. |
References Model::Model().
|
static |
Checks whether a model has a location dependency on another model by walking the reference chain.
Detects circular dependencies and stops traversal if found.
| [in] | object | The model to check. |
| [in] | potential_dependecy | The model to search for in the dependency chain. |
| [in] | lookup | The DesignObjectLookup used to resolve models by UUID. |
References Model::Model().
| bool LocationOperations::isPrismEditable | ( | uint04 | location | ) | const |
Checks whether the prism at the given index is user-editable.
| [in] | location | The zero-based prism index. |
| LocationType LocationOperations::locationType | ( | ) | const |
Returns the current LocationType describing how this object's position is determined.
| uint04 LocationOperations::prismCount | ( | ) | const |
Returns the total number of prism targets defined on this object.
Returns the 3D offset for a prism target at the given index.
| [in] | index | The zero-based prism index. |
References DesignObject::index().
| UUID LocationOperations::referenceID | ( | ) | const |
| UUID LocationOperations::referenceModelA | ( | ) | const |
Returns the stored angular offset used to compute this object's position relative to its reference model.
| fltp08 LocationOperations::relativeDistance | ( | ) | const |
Returns the stored scalar distance offset from the reference model.
| void LocationOperations::setActivePrismIndex | ( | uint04 | index | ) |
Sets the active prism index and updates the active prism offset and editability accordingly.
If the index is invalid, resets the prism offset to zero.
| [in] | index | The zero-based prism index to activate. |
References DesignObject::index().
Sets the absolute world-space location of this object, updating both the transform matrix and the stored "location" metadata.
| [in] | location | The 3D position to assign. |
| void LocationOperations::setLocationType | ( | const LocationType & | type | ) |
Sets the LocationType that determines how this object's position is computed.
| [in] | type | The LocationType to assign. |
| void LocationOperations::setPrismLocation | ( | uint04 | index, |
| const Vertex< 3, fltp08 > & | vertex, | ||
| bool | is_editable ) |
Sets the location and editability of a prism target at the given index.
Expands the prism count if needed, and updates the active prism offset if this index is active.
| [in] | index | The zero-based prism index. |
| [in] | vertex | The 3D offset for the prism. |
| [in] | is_editable | Whether the prism should be user-editable. |
References DesignObject::index().
| void LocationOperations::setPrismOffset | ( | const Vector< 3, fltp08 > & | prism_offset, |
| bool | is_editable ) |
Sets the active prism offset and editability.
If the offset changes, adjusts the transforms of all descendant Scan models to account for the new prism position.
| [in] | prism_offset | The 3D prism offset vector. |
| [in] | is_editable | Whether the prism should be user-editable. |
| void LocationOperations::setReferenceDistance | ( | fltp08 | distance | ) |
Updates the stored distance offset used when computing location relative to a reference model.
| [in] | distance | The new distance offset. |
| void LocationOperations::setReferenceObject | ( | const Model & | reference | ) |
Sets the reference object by Model, storing its UUID as the location reference.
| [in] | reference | The Model to use as a location reference. |
References Model::Model().
| void LocationOperations::setReferenceObject | ( | const Model & | reference, |
| const Vector< 3, Angle< fltp08 > > & | angle, | ||
| fltp08 | distance, | ||
| bool | is_location_relative ) |
Sets the reference object by Model with floating-point angle offsets.
| [in] | reference | The reference Model. |
| [in] | angle | The 3D angular offset. |
| [in] | distance | The scalar distance offset. |
| [in] | is_location_relative | Whether the offset is in local or global space. |
References Model::Model().
| void LocationOperations::setReferenceObject | ( | const Model & | reference, |
| const Vector< 3, Angle< sint04 > > & | angle, | ||
| fltp08 | distance, | ||
| bool | is_location_relative ) |
Sets the reference object by Model with integer-typed angle offsets, which are converted to floating-point angles internally.
| [in] | reference | The reference Model. |
| [in] | angle | The 3D angular offset using integer-based angles. |
| [in] | distance | The scalar distance offset. |
| [in] | is_location_relative | Whether the offset is in local or global space. |
References Model::Model().
| void LocationOperations::setReferenceObject | ( | const UUID & | reference | ) |
| void LocationOperations::setReferenceObject | ( | const UUID & | reference, |
| const Vector< 3, Angle< fltp08 > > & | angle, | ||
| fltp08 | distance, | ||
| bool | is_location_relative ) |
Sets the reference object by UUID along with angle, distance, and relativity parameters that define the positional offset from the reference.
| [in] | reference | The UUID of the reference model. |
| [in] | angle | The 3D angular offset from the reference. |
| [in] | distance | The scalar distance offset from the reference. |
| [in] | is_location_relative | Whether the offset is applied in the reference model's local coordinate space (true) or as a global rotation from the reference position (false). |
| void LocationOperations::updateLocation | ( | DesignObjectLookup * | lookup | ) |
Recomputes this object's location based on the current LocationType and reference model state.
For e_same_as_model, copies the reference position. For e_relative_to_model_w_distance_angle, applies the stored angle and distance offset from the reference. Does nothing for e_location or e_none.
| [in] | lookup | The DesignObjectLookup used to resolve reference models by UUID. |