# I3DShObject Struct Reference
[Shell Interfaces]

Inheritance diagram for I3DShObject:

List of all members.

## Public Member Functions
virtual MCCOMErr MCCOMAPI | SetName (const TMCString &name)=0
virtual MCCOMErr MCCOMAPI | GetName (TMCString &name)=0
virtual uint32 MCCOMAPI | GetInstancesCount ()=0
virtual void MCCOMAPI | GetInstanceArray (TMCCountedPtrArray< I3DShInstance > &instances)=0
virtual void MCCOMAPI | GetInstanceArray (TMCCountedPtrArray< I3DShTreeElement > &instances)=0
virtual uint32 MCCOMAPI | GetUVSpaceCount ()=0
virtual MCCOMErr MCCOMAPI | GetUVSpace (uint32 uvSpaceID, UVSpaceInfo *uvSpaceInfo)=0
virtual boolean MCCOMAPI | CanRenameUVSpace ()=0
virtual MCCOMErr MCCOMAPI | RenameUVSpace (uint32 uvSpaceID, const TMCString &name)=0
virtual void MCCOMAPI | GetScene (I3DShScene **scene)=0
virtual boolean MCCOMAPI | IsInfiniteObject ()=0
virtual void MCCOMAPI | GetBoundingBox (TBBox3D &bbox, boolean rendering=true)=0
virtual void MCCOMAPI | GetFacetBoundingBox (TBBox3D &bbox, const TMatrix33 &mappingTransform, void *listener, uint32 matrixChangedPhase)=0
virtual MCCOMErr MCCOMAPI | Clone (I3DShObject **clone, ECloneMode cloneMode) const =0
virtual int32 MCCOMAPI | GetEditor ()=0
virtual int32 MCCOMAPI | GetObjectID ()=0
virtual boolean MCCOMAPI | IsExcludedFromTripleBuffer ()=0
virtual void MCCOMAPI | GetPreviewObject (I3DShMasterShader *masterShader, I3DShObject **object, I3DShTreeElement **previewTree, I3DShTreeElement **additionnalChildInstance)=0
virtual int32 MCCOMAPI | GetAllInstancesCount ()=0
virtual I3DShInstance *MCCOMAPI | GetInstanceByIndex (uint32 inIndex)=0
virtual I3DShScene *MCCOMAPI | GetSceneNoAddRef ()=0
| Returns the scene that contains this object.
virtual I3DShMaster *MCCOMAPI | GetThisMaster ()=0
virtual MCCOMErr MCCOMAPI | GetApproximateBoundingBox (TBBox3D &bbox)=0
| Returns an approximation of the bounding box.
virtual boolean MCCOMAPI | ShouldDeleteWithInstance (I3DShInstance *inInstance)=0
virtual boolean MCCOMAPI | IsReferencedByThisSubTree (I3DShTreeElement *subTree, I3DShScene *scene)=0

## Detailed Description

I3DShObject stores the geometry of the objects (master objects) in a scene.

Master Objects are kept in a list in the scene (the Objects List), and can be instanciated as many times as needed in a scene.

There are two types of Master Objects: Primitives and Master Groups. See I3DShPrimitive and I3DMasterGroup.

Other supported interfaces:

- I3DShMaster
- ISelectableObject

## Member Function Documentation

virtual boolean MCCOMAPI I3DShObject::CanRenameUVSpace | ( |  | ) | `[pure virtual]`

Returns true if the primitive can rename uv spaces (ie. implements RenameUVSpace()).

virtual MCCOMErr MCCOMAPI I3DShObject::Clone | ( | I3DShObject ** | clone,
|  | ECloneMode | cloneMode |
| ) |  |  | const`[pure virtual]`

Creates a copy of the object.

Parameters:

  | clone | A pointer to the new copy of the object.
  | cloneMode | The clone mode (see ECloneMode)

virtual int32 MCCOMAPI I3DShObject::GetAllInstancesCount | ( |  | ) | `[pure virtual]`

Returns the total number of instances of this master object NOTE: Some instances may not be in the same scene than the master object... (Use this and GetInstanceByIndex when you need to avoid the memory allocation(s) caused by GetInstanceArray)

virtual MCCOMErr MCCOMAPI I3DShObject::GetApproximateBoundingBox | ( | TBBox3D & | bbox | ) | `[pure virtual]`

Returns an approximation of the bounding box.

virtual void MCCOMAPI I3DShObject::GetBoundingBox | ( | TBBox3D & | bbox,
|  | boolean | rendering = `true` |
| ) |  |  | `[pure virtual]`

Gets the bounding box of the object (in local coordinates)

Parameters:

  | bbox | A struct where the result is stored.
  | rendering | Need a bbox for rendering (more precise)

virtual int32 MCCOMAPI I3DShObject::GetEditor | ( |  | ) | `[pure virtual]`

Returns the class ID of the Editor (i.e. the module) capable of editing this object in the Modeling room

virtual void MCCOMAPI I3DShObject::GetFacetBoundingBox | ( | TBBox3D & | bbox,
|  | const TMatrix33 & | mappingTransform,
|  | void * | listener,
|  | uint32 | matrixChangedPhase |
| ) |  |  | `[pure virtual]`

The bounding box calculated here fit exactly the facets of the object in a given direction. The FacetBounding boxes are cached inside the Object because it can take a long time to calculate. We added a listener here to accelerate the Get. So we don't have to compare mappingTransform (TMatrix33) in the look-up table. A last hit is provide inside the GetFacetBoundingBox method to make the Get on same listener very fast. Each time the BoudingBox of the object changed , the list is flushed.

Parameters:

  | bbox | The bounding box that is returned.
  | mappingTransform | The transform of the bounding box
  | listener | A listener
  | matrixChangedPhase | Each time you ask with a new mappingTransform, increment the matrixChangedPhase.

virtual void MCCOMAPI I3DShObject::GetInstanceArray | ( | TMCCountedPtrArray< I3DShTreeElement > & | instances | ) | `[pure virtual]`

Returns an array of all the instances that points to that class.

Parameters:

  | instances | An array of instances.

virtual void MCCOMAPI I3DShObject::GetInstanceArray | ( | TMCCountedPtrArray< I3DShInstance > & | instances | ) | `[pure virtual]`

Builds the array of all the instances of this object. The array should be empty when the function is called.

Parameters:

  | instances | An array to store the list of instances.

virtual I3DShInstance* MCCOMAPI I3DShObject::GetInstanceByIndex | ( | uint32 | inIndex | ) | `[pure virtual]`

Returns the inIndex(th) instance of this master object. NOTE: Some instances may not be in the same scene than the master object... (Use this and GetAllInstancesCount when you need to avoid the memory allocation(s) caused by GetInstanceArray)

virtual uint32 MCCOMAPI I3DShObject::GetInstancesCount | ( |  | ) | `[pure virtual]`

Returns the number of instances of this object. Exact same call as I3DShMaster::GetInstancesCount

virtual MCCOMErr MCCOMAPI I3DShObject::GetName | ( | TMCString & | name | ) | `[pure virtual]`

Returns the name of the master object.

Parameters:

  | name | The name of the master object.

virtual int32 MCCOMAPI I3DShObject::GetObjectID | ( |  | ) | `[pure virtual]`

Returns the ID of the object. In the case of a Primitive, it will be its Class ID. For a Master Group, it is 'sc '

virtual void MCCOMAPI I3DShObject::GetPreviewObject | ( | I3DShMasterShader * | masterShader,
|  | I3DShObject ** | object,
|  | I3DShTreeElement ** | previewTree,
|  | I3DShTreeElement ** | additionnalChildInstance |
| ) |  |  | `[pure virtual]`

Return the Master object to preview if different from main one. Return NULL if it is the same,

Parameters:

  | masterShader | the master shader being previewed
  | object | the object to use to preview the shader
  | previewTree | a tree to set the transform of the preview object (only the transform will be used)
  | additionnalChild | the master object can also add an instance that will be used for the preview as well, puting it as child of the previewed object

virtual void MCCOMAPI I3DShObject::GetScene | ( | I3DShScene ** | scene | ) | `[pure virtual]`

Returns the scene that contains this object.

Parameters:

  | scene | A pointer to the scene.

virtual I3DShScene* MCCOMAPI I3DShObject::GetSceneNoAddRef | ( |  | ) | `[pure virtual]`

Returns the scene that contains this object.

virtual I3DShMaster* MCCOMAPI I3DShObject::GetThisMaster | ( |  | ) | `[pure virtual]`

Returns the I3DShMaster interface.

virtual MCCOMErr MCCOMAPI I3DShObject::GetUVSpace | ( | uint32 | uvSpaceID,
|  | UVSpaceInfo * | uvSpaceInfo |
| ) |  |  | `[pure virtual]`

Gets information on a specific UV Space

Parameters:

  | uvSpaceID | The index (0 based) of the shading domaine (= uv space).
  | uvSpaceInfo | A pointer to a struct that will contain the definition of the shading domain.

virtual uint32 MCCOMAPI I3DShObject::GetUVSpaceCount | ( |  | ) | `[pure virtual]`

Return the number of UV spaces for this object. If 0 is returned only projection mapping can be performed on the object

virtual boolean MCCOMAPI I3DShObject::IsExcludedFromTripleBuffer | ( |  | ) | `[pure virtual]`

Returns true if its instances should be excluded from the triple buffer (eg used for skinning)

virtual boolean MCCOMAPI I3DShObject::IsInfiniteObject | ( |  | ) | `[pure virtual]`

Returns TRUE if the object is infinite (like the infinite plane)

virtual boolean MCCOMAPI I3DShObject::IsReferencedByThisSubTree | ( | I3DShTreeElement * | subTree,
|  | I3DShScene * | scene |
| ) |  |  | `[pure virtual]`

Return true if the given sub tree keeps a reference to that master object

Parameters:

  | subTree | The sub tree that might reference that master object
  | scene | The scene that contains that sub tree.

virtual MCCOMErr MCCOMAPI I3DShObject::RenameUVSpace | ( | uint32 | uvSpaceID,
|  | const TMCString & | name |
| ) |  |  | `[pure virtual]`

Rename a particular uvSpace (= shading domain).

Parameters:

  | uvSpaceID | The ID of the uvspace (0 based index)
  | name | The new name of the uvspace.

virtual MCCOMErr MCCOMAPI I3DShObject::SetName | ( | const TMCString & | name | ) | `[pure virtual]`

Sets the name of a master object. Note that you should not call this method once the object is inserted in a scene because it does not garantee the unicity of the name. If you want to change the name of a Master Object once it is inserted in a scene, you should call: I3DShScene::Rename3DObject().

Parameters:

  | name | The new name of the master object.

virtual boolean MCCOMAPI I3DShObject::ShouldDeleteWithInstance | ( | I3DShInstance * | inInstance | ) | `[pure virtual]`

Tells if the master should be deleted when the user deletes the given instance

Parameters:

  | inInstance | The instance that is being deleted

The documentation for this struct was generated from the following file:

- I3dShObject.h