| GL Studio C++ Runtime API

Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
GlsGeometryResourceMesh Class Referenceabstract

`#include <gls_geometry_resource_mesh.h>`

Inheritance diagram for GlsGeometryResourceMesh:

## Public Types
typedef DisplayObject | _BaseClass
| Deprecated typedef for the base class.
typedef DisplayObject | BaseClass
| Typedef for the base class.
Public Types inherited from DisplayObject
enum | AvailableAttributesEnum { GLS_ATTRIBUTES_BASIC = 1 , GLS_ATTRIBUTES_DYNAMIC = 2 , GLS_ATTRIBUTES_APPEARANCE = 4 , GLS_ATTRIBUTES_GEOMETRY = 8 , GLS_ATTRIBUTES_SPECIALIZED = 16 , GLS_ATTRIBUTES_ALL = ~0 , GLS_ATTRIBUTES_NONE = 0 }

## Public Member Functions
| GlsGeometryResourceMesh ()
| GlsGeometryResourceMesh (const GlsGeometryResourceMesh &that, const bool generateNames)
| ~GlsGeometryResourceMesh ()
virtual void | OnGeometryResourceChanged () DISTI_METHOD_OVERRIDE
| Callback method to be called by this observer. More...
virtual void | SetAvailableAttributes (unsigned int value) DISTI_METHOD_OVERRIDE
virtual void | CopyProperties (DisplayObject *src) DISTI_METHOD_OVERRIDE
virtual void | CopyGeometry (DisplayObject *src) DISTI_METHOD_OVERRIDE
virtual void | UpdateBoundingVolume () DISTI_METHOD_OVERRIDE
virtual void | PreDraw (const OpenGLMatrices &parentMatrices, Culler &culler) DISTI_METHOD_OVERRIDE
virtual void | Draw () DISTI_METHOD_OVERRIDE
virtual void | GetTransformedExtents (Vector &min, Vector &max, const GlsMatrixType &matrix, bool resetMinMax=true) DISTI_METHOD_OVERRIDE
virtual void | GetExtents (float &minx, float &miny, float &minz, float &maxx, float &maxy, float &maxz) DISTI_METHOD_OVERRIDE
virtual DisplayObject * | Pick3D (const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &drawnMatrices) DISTI_METHOD_OVERRIDE
virtual bool | Hit (float x, float y, float z, float scale, const Vector &directionVector, Vector *collisionPoint) DISTI_METHOD_OVERRIDE
virtual void | Scale (float px, float py, float pz, Vertex *anchor, int handleBar=0) DISTI_METHOD_OVERRIDE
virtual void | Rotate (const Vector &orig, float angle, const Vector &axis) DISTI_METHOD_OVERRIDE
virtual void | TranslateVertices (float x, float y, float z) DISTI_METHOD_OVERRIDE
virtual int | TextureIndex () DISTI_METHOD_OVERRIDE
virtual void | TextureIndex (int index) DISTI_METHOD_OVERRIDE
virtual bool | SetupTexture ()
virtual void | MaterialIndex (unsigned int index)
virtual int | MaterialIndex () DISTI_METHOD_OVERRIDE
virtual void | MaterialIndices (DynamicArray< int > indices) DISTI_METHOD_OVERRIDE
virtual DynamicArray< int > & | MaterialIndices () DISTI_METHOD_OVERRIDE
void | SetGeometryTransform (const GlsMatrixType &value)
void | SetGeometryTransform (const double *matrix)
const GlsMatrixType & | GetGeometryTransform ()
unsigned int | NumIndexBuffers ()
unsigned int | NumIndexBufferEffects ()
bool | ReorderAtWill ()
void | ReorderAtWill (bool reorderAtWill)
virtual void | ResizeIndexBufferEffectsArray (unsigned int newSize)
GlsRenderEffect * | GetIndexBufferEffect (unsigned int bufferNum)
void | SetIndexBufferEffect (unsigned int bufferNum, GlsRenderEffect *newEffect)
virtual GlsGeometryResource * | GetRenderMesh ()=0
virtual void | SetFromGloData (GlsGloFileAttribute &data) DISTI_METHOD_OVERRIDE
Public Member Functions inherited from DisplayObject
| DisplayObject (float x, float y, float z)
| DisplayObject (const DisplayObject &object, const bool generateNames)
virtual | ~DisplayObject ()
void | Destroy ()
virtual void | SetAvailableAttributes (unsigned int value)
virtual void | AlphaMode (int mode)
virtual int | AlphaMode ()
virtual bool | AntiAlias ()
virtual void | AntiAlias (bool alias)
void | ApplyTextureSettings (int textureIndex=-1)
DistiAttribDict & | Attributes ()
const DistiAttribDict & | Attributes () const
virtual void | SetBlendColor (const GlsColor &color)
void | GetBlendColor (unsigned char color[])
void | GetBlendColor (unsigned char &r, unsigned char &g, unsigned char &b, unsigned char &a)
virtual GlsColor | GetBlendColor ()
void | SetBlendColor (unsigned char color[])
void | SetBlendColor (unsigned char r, unsigned char g, unsigned char b, unsigned char a)
virtual bool | BlinkedOff ()
virtual bool | Blinking ()
virtual void | Blinking (const bool blink)
virtual float | BlinkRate ()
virtual void | BlinkRate (const float rate)
const Vector & | BoundingVolumeCenter () const
void | BoundingVolumeCenter (const Vector &center)
bool | BoundingVolumeHit (const Vector &start, const Vector &direction)
float | BoundingVolumeRadius () const
void | BoundingVolumeRadius (float radius)
virtual void | Calculate (double time)
void | CalculateCollisionPoint (const Vector &pickLoc, const Vector &directionVector, Vector *collisionPoint)
virtual void | CalculateParentBoundingBox ()
virtual void | CalculateTextureCoordinates ()
bool | GetTexturePointTransformationMatrix (GlsMatrixType &world2tex)
CallbackMethodCallerBase * | CallbackCaller () const
void | CallbackCaller (CallbackMethodCallerBase *cb)
virtual void | GetCenter (Vector &center)
virtual DisplayObject * | CloneObject (bool generateNames=false)=0
virtual GlsColor | GetColor ()
void | GetColor (unsigned char c4[])
void | GetColor (unsigned char &r, unsigned char &g, unsigned char &b, unsigned char &a)
virtual void | SetColor (const GlsColor &color)
void | SetColor (unsigned char c4[])
void | SetColor (unsigned char r, unsigned char g, unsigned char b, unsigned char a)
virtual void | CopyGeometry (DisplayObject *src)
virtual void | CopyHierarchyProperties (DisplayObject *src, bool copyName)
virtual void | CopyProperties (DisplayObject *src)
virtual void | CullBackFace (const bool val)
virtual bool | CullBackFace ()
bool | Culled () const
void | Culled (bool val)
bool | CullTest (const GlsMatrixType *matrix, const Culler &culler)
GlsMatrixType & | DcsMatrix ()
GlsMatrixType | DcsMatrix () const
void | DcsMatrix (const GlsMatrixType &matrix)
virtual void | DeleteVertexAt (unsigned int index)
virtual void | DeleteVertex (unsigned int indexAfter) final
virtual int | DepthTest ()
virtual void | DepthTest (unsigned char zbuf)
virtual void | Draw ()=0
const GlsMatrixType * | DrawMatrix ()
bool | NeedCalcDrawMatrix ()
void | DynamicRotate (float angle, int axis)
void | DynamicRotate (const Vector &v)
void | DynamicRotate (float angle[])
virtual void | DynamicRotate (float x, float y, float z)
virtual void | DynamicRotateRelative (float angle, int axis)
virtual float | DynamicRotation (int axis)
virtual Vector | DynamicRotation ()
virtual Vector | DynamicScale ()
virtual void | DynamicScale (float x, float y, float z)
void | DynamicScale (const Vector &scale)
virtual void | DynamicTranslate (float x, float y, float z, bool relative=false)
void | DynamicTranslate (const Vertex &amount, bool relative)
void | DynamicTranslate (const Vector &amount)
virtual void | DynamicTranslateAxis (float amount, int axis, bool relative)
virtual float | DynamicTranslation (int axis)
virtual Vector | DynamicTranslation ()
DisplayObjectEditor * | Editor ()
const DisplayObjectEditor * | Editor () const
void | Editor (DisplayObjectEditor *editor)
virtual void | GetExtents (float &x, float &y, float &z, float &x1, float &y1, float &z1)
void | GetExtentsDCS (Vector &min, Vector &max)
void | GetFillColor (unsigned char &r, unsigned char &g, unsigned char &b, unsigned char &a)
void | GetFillColor (unsigned char c4[])
virtual GlsColor | GetFillColor ()
void | SetFillColor (unsigned char r, unsigned char g, unsigned char b, unsigned char a)
void | SetFillColor (unsigned char c4[])
virtual void | SetFillColor (const GlsColor &color)
virtual void | FinishObject ()
virtual void | GenerateInstanceName ()
virtual DisplayObject * | handle (DisplayEvent *ev)
virtual bool | Hit (float x, float y, float z, float scale, const Vector &directionVector, Vector *collisionPoint)
virtual bool | HitUtil (float x, float y, float z, float scale, Vertex *vertices, unsigned int vertex_cnt, const Vector &directionVector, Vector *collisionPoint)
virtual void | InsertVertexAt (unsigned int index)
virtual void | InsertVertex (unsigned int indexAfter) final
char * | InstanceName ()
const char * | InstanceName () const
void | InstanceName (const char *name)
virtual bool | LightingEnabled ()
virtual void | LightingEnabled (bool lighting)
virtual int | LineStippleMultiplier ()
virtual void | LineStippleMultiplier (int mult)
virtual int | LineStipplePattern ()
virtual void | LineStipplePattern (int pattern)
virtual float | LineWidth ()
virtual void | LineWidth (float width)
virtual const Vertex & | Location () const
virtual void | Location (const Vertex &v)
virtual void | Location (float x, float y, float z)
virtual void | GetLocation (Vertex &v)
virtual void | GetLocation (float &x, float &y, float &z)
float | X () const
float | Y () const
float | Z () const
void | X (const float x)
void | Y (const float y)
void | Z (const float z)
virtual int | MaterialIndex ()
virtual void | MaterialIndex (int index)
virtual DynamicArray< int > & | MaterialIndices ()
virtual void | MaterialIndices (DynamicArray< int > indices)
GlsMatrixType * | ModelMatrix ()
bool | NeedCalculate ()
Vector * | Normals ()
virtual void | SetNormals (unsigned int nPoints, Vector *vertices)
void | VaSetNormals (unsigned int nPoints,...)
unsigned int | NumberOfVertices () const
virtual float | ObjectDepth ()
virtual float | ObjectHeight ()
virtual float | ObjectWidth ()
virtual void | SetOrigin (const Vertex &vert)
virtual void | Parent (DisplayFrame *par)
DisplayFrame * | Parent () const
virtual void | ParentGroup (Group *group)
Group * | ParentGroup () const
virtual DisplayObject * | Pick3D (const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &drawnMatrices)
unsigned char | Pickable ()
virtual void | Pickable (unsigned char pick)
virtual int | PolygonEnd ()
virtual void | PolygonEnd (const int end)
virtual int | PolygonMode ()
virtual void | PolygonMode (int mode)
virtual void | PreDraw (const OpenGLMatrices &current, Culler &culler)
GlsMatrixType * | ProjMatrix ()
virtual void | ReallocateVertices (unsigned int numVertices, bool initializeNew, bool copyOld)
virtual float | RelativeAngle (const float x, const float y)
virtual DistiAttributeBase & | Resource (const char *name)
virtual void | GetResources (std::ostream &outstr, GlsResourceFilter *filter=NULL)
const Vertex & | RotationPoint () const
virtual void | RotationPoint (const Vertex &v)
virtual void | RotationPoint (float x, float y, float z)
virtual void | GetRotationPoint (Vertex &v)
virtual void | Rotate (float angle, int axis=Z_AXIS)
virtual void | Rotate (const Vector &origin, float angle, int axis=Z_AXIS)
virtual void | Rotate (const Vector &orig, float angle, const Vector &axis)
void | SaveMatrices ()
virtual void | Scale (float px, float py, float pz, Vertex *anchor, int handleBar=0)
void | Set (int spec,...)
bool | SetupAlpha ()
void | SetupDepthTest ()
void | SetupLighting ()
bool | SetupLineStyle ()
bool | SetupTexture ()
virtual int | Shading ()
virtual void | Shading (const int shading)
virtual void | GetTransformedExtents (Vector &min, Vector &max, const GlsMatrixType &matrix, bool resetMinMax=true)
virtual void | SetTexCoords (unsigned int nPoints, Vector *new_tex_coord, bool isVectorArray=true)
void | SetTexCoords (unsigned int nPoints, Vertex *new_tex_coord)
void | VaSetTexCoords (unsigned int nPoints,...)
Vector * | TextureCoordinates ()
Vector * | GetTextureCoordinates ()
virtual int | TextureIndex ()
virtual void | TextureIndex (int textureIndex)
virtual Vector * | GetTexturePoints ()
virtual bool | TextureRepeat ()
virtual void | TextureRepeat (const int rep)
virtual int | TextureMappingTechnique ()
virtual void | TextureMappingTechnique (const int map)
virtual int | TextureMagnificationFilter ()
virtual void | TextureMagnificationFilter (const int filter)
virtual int | TextureMinificationFilter ()
virtual void | TextureMinificationFilter (const int filter)
virtual void | Translate (float tr[])
virtual void | Translate (float x, float y, float z)
virtual void | TranslateVertices (float x, float y, float z)
virtual void | UpdateBoundingVolume ()
void * | UserData () const
void | UserData (void *data)
virtual void | SetVertexColor (unsigned int vertex, unsigned char CurrentFillColor[])
virtual Vertex * | Vertices ()
virtual void | SetVertices (unsigned int nPoints, Vertex *vertices)
void | VaSetVertices (unsigned int nPoints,...)
int * | ViewMatrix ()
bool | Visible () const
bool | Visibility () const
virtual void | Visibility (const bool vis)
virtual Vector | WorldRotationPoint ()
virtual void | WorldRotationPoint (const Vector &vert)
virtual Vertex | WorldVertex (unsigned int i)
virtual void | WorldVertex (unsigned int i, const Vertex &vert)
bool | LogicalToWindow (const Vector &logical, Vector &winLoc, const OpenGLMatrices &alternateMatrices=OpenGLMatrices())
bool | WindowToLogical (const Vector &winLoc, Vector &logical, Vector *directionVector=NULL, const OpenGLMatrices &alternateMatrices=OpenGLMatrices())
void | LogicalToDCS (Vector logicalPoint, Vector &objectLocal, const Vector *directionVector, const Vector &planeNormal=Vector(0, 0, 1), const Vector &planePoint=Vector(), const GlsMatrixType *dcsMatrix=NULL)
void | DCSToLogical (Vector dcsPoint, Vector &logicalPoint, const GlsMatrixType *dcsMatrix=NULL)
bool | Create (GlsGloFile &dataStream, Group *parent)
void | GeometryRefresh ()
| Invalidates the painter and refreshes the geometry on the next paint cycle.
virtual bool | GetPlaneVectorPoints (Vertex &p1, Vertex &p2, Vertex &p3, Vertex &planeVector)
void | NotifyAttributeChanged (const AttributeName &name) override
virtual void | SetPainter (GlsPainter *painter)
virtual GlsPainter * | GetPainter ()
void | InvalidatePainter ()
virtual bool | IsVisibleInScene (const DisplayObject *obj=NULL) const
Public Member Functions inherited from AttributeChangedNotifier
virtual void | NotifyAttributeChanged (const AttributeName &name)=0
virtual | ~AttributeChangedNotifier ()
Public Member Functions inherited from WeakReferenceableMixin
void | AddWeakReference (WeakReference *weakRef) override
void | NotifyWeakReferenceDestroyed (WeakReference *ref) override
virtual void | AddWeakReference (WeakReference *weakRef)=0
virtual void | NotifyWeakReferenceDestroyed (WeakReference *weakReference)=0
virtual void | OnGeometryResourceChanged ()=0
| Callback method to be called by this observer. More...

## Protected Types
typedef DynamicArray< GlsRenderEffect * > | IndexBufferEffectArrayT
| Typedef for a list of effects (shaders).

## Protected Member Functions
void | DrawIndexBuffers (GlsGeometryResource *renderMesh)
void | SetupDefaultEffect ()
void | CleanupDefaultEffect ()
void | DrawGeometry ()
bool | SetGloIndexBufferEffect (GlsGloFileAttribute &data)
GlsGeometry_Generic * | LoadGloGeometryResourceData (GlsGloFileAttribute &data)
Protected Member Functions inherited from DisplayObject
virtual void | VaListSetVertices (unsigned int nPoints, va_list args)
virtual void | VaListSetNormals (unsigned int nPoints, va_list args)
virtual void | VaListSetTexCoords (unsigned int nPoints, va_list args)
void | ApplyTextureMinMagSettings ()
| Updates the state manager's texture minification and magnification filter based on this display's configuration.
void | ApplyTextureEnvModeSettings ()
| Updates the state manager's texture environment based on this object configuration.
bool | SetupTextureIsNeeded ()
virtual int | ColorMaterialMode ()
void | AllocateModelMatrix ()
bool | ApplyDynamicRotation ()
virtual void | CalcDrawMatrix ()
void | CalcDrawMatrixIfExists ()
virtual void | CalculateMatrices (const OpenGLMatrices &newMatrices)
bool | InsideVertexExtents (float x, float y, unsigned int nVerts, Vertex *verts, float tolerance)
void | LastDrawMatrixLocation (const Vertex &loc)
const Vertex & | LastDrawMatrixLocation ()
void | NeedCalculate (bool val)
void | PickSetup (float x, float y, float z, Vertex *vertices, unsigned int vertex_cnt, const Vector &directionVector)
void | PickCleanup (Vertex *vertices, unsigned int vertex_cnt)
virtual void | SetFromGloData (GlsGloFileAttribute &data)
virtual void | SetValue (int spec, va_list &args)
int | GetApplicableTextureIndex ()
int | GetApplicableTextureRepeat ()
Protected Member Functions inherited from WeakReferenceableMixin
| WeakReferenceableMixin ()
virtual | ~WeakReferenceableMixin ()

## Protected Attributes
GlsMatrixType | _geometryTransform
| Transformation matrix to be applied to all geometry in this mesh.
DynamicArray< int > | _newMaterialIndices
| Intermediate data storage to make the setting of new material indices through the Faces simpler.
bool | _reorderAtWill
| Determines whether or not the draw order of this mesh can be modified to increase performance.
IndexBufferEffectArrayT | _indexBufferEffects
| The effect to use for each index buffer.
Protected Attributes inherited from DisplayObject
bool | _geometryRefresh
| Whether or not the geometry (VBOs etc.) needs to be updated on the GPU.
int | _alphaMode
bool | _antiAlias
bool | _attributesAdded
bool | _blinking
float | _blinkRate
bool | _isBlinkedOff
| Stores whether the object is presently blinked on or off.
GlsColor | _color
bool | _cullBackFace
GlsMatrixType | _dcsMatrix
unsigned char | _depthTest
GlsMatrixType * | _drawMatrix
bool | _needCalcDrawMatrix
| True if CalcDrawMatrix() needs to be called on this object.
unsigned char | _lineStippleMultiplier
unsigned short | _lineStipplePattern
float | _lineWidth
Vertex | _location
DynamicArray< int > | _materialIndices
| List of materials associated with this object.
GlsMatrixType * | _modelMatrix
Vector * | _normals
unsigned int | _nTex_vertices
unsigned int | _nVertices
unsigned char | _polygonEnd
unsigned char | _polygonMode
GlsMatrixType * | _projMatrix
unsigned char | _shading
Vector * | _texCoord
GlsColor | _textureBlendColor
int | _textureIndex
unsigned char | _textureMagFilter
unsigned char | _textureMinFilter
unsigned char | _textureMap
Vector | _texturePoints [4]
unsigned char | _textureRepeat
void * | _userData
Vertex * | _vertices
int * | _viewMatrix
bool | _visible
IGlsStateManager * | _stateManager
| The state manager that interfaces with OpenGL and maintains its render state.
Protected Attributes inherited from WeakReferenceableMixin
DynamicArray< WeakReference * > * | _weakRefs

## Friends
class | GlsGeometryResourceMeshEditor

## Additional Inherited Members
Static Public Member Functions inherited from DisplayObject
static void | UseManualBlinkElapsedTime (bool useManualTime)
static void | SetManualBlinkElapsedTime (double elapsedTime)

## Detailed Description

This is an abstrace base class for objects that use a GlsGeometryResource for rendering (e.g. GlsAdvancedMesh) This class implements Draw / Pick routines that use a RenderMesh provided by the derived classes. The appearance of the mesh is affected by the IndexBufferEffectsArray. This class also implements Translate, Rotate, and Scale through a GeometryTransform matrix.

## Constructor & Destructor Documentation

## ◆ GlsGeometryResourceMesh() [1/2]

GlsGeometryResourceMesh | ( |  | ) |

Create a new GlsGeometryResourceMesh

## ◆ GlsGeometryResourceMesh() [2/2]

GlsGeometryResourceMesh | ( | const GlsGeometryResourceMesh & | that,
|  | const bool | generateNames
| ) |  |

Create a copy of a GlsGeometryResourceMesh

Parameters

  that | The GlsGeometryResourceMesh to copy from
  generateNames | Whether or not to generate a new instance name for the copy

## ◆ ~GlsGeometryResourceMesh()

~GlsGeometryResourceMesh | ( |  | ) |

GlsGeometryResourceMesh destructor

## Member Function Documentation

## ◆ CleanupDefaultEffect()

void CleanupDefaultEffect | ( |  | ) |
| protected

Resets the shader program state after mesh drawing.

Note
  Not normally called by users.

## ◆ CopyGeometry()

virtual void CopyGeometry | ( | DisplayObject * | src | ) |
| virtual

Copies the geometry information from one object to another. Used by the undo mechanism to allow user to undo a geometry change.

Parameters

  src | The object to copy geometry from

Reimplemented from DisplayObject.

Reimplemented in GlsAdvancedMesh, and GlsSerialMorphMesh.

## ◆ CopyProperties()

virtual void CopyProperties | ( | DisplayObject * | src | ) |
| virtual

Copies the attributes except for geometry attributes from one object to another. Used by the undo mechanism to undo most attribute change operations.

Parameters

  src | The object to copy properties from

Reimplemented from DisplayObject.

Reimplemented in GlsAdvancedMesh, and GlsSerialMorphMesh.

## ◆ Draw()

virtual void Draw | ( |  | ) |
| virtual

Draws this object on the current display frame (_parent member). Pure virtual method

Implements DisplayObject.

## ◆ DrawGeometry()

void DrawGeometry | ( |  | ) |
| protected

Draw all underlying mesh objects, used by internal draw code.

Note
  Not normally called by users.

## ◆ DrawIndexBuffers()

void DrawIndexBuffers | ( | GlsGeometryResource * | renderMesh | ) |
| protected

Draw the given mesh object, used by internal draw code.

Note
  Not normally called by users.

Parameters

  renderMesh | The mesh to draw.

## ◆ GetExtents()

virtual void GetExtents | ( | float & | x,
|  | float & | y,
|  | float & | z,
|  | float & | x1,
|  | float & | y1,
|  | float & | z1
| ) |  |
| virtual

Figure out the static extents for the object. Used by the editor as part of the pick operation and for figuring out the size of groups.

Parameters

  x | Gets the minimum x extent
  y | Gets the minimum y extent
  z | Gets the minimum z extent
  x1 | Gets the maximum x extent
  y1 | Gets the maximum y extent
  z1 | Gets the maximum z extent

Reimplemented from DisplayObject.

## ◆ GetGeometryTransform()

const GlsMatrixType & GetGeometryTransform | ( |  | ) |
| inline

Returns
  The matrix that is applied before the geometry resource is drawn. Lifetime is guaranteed to coincide with the GlsGeometryResourceMesh's lifetime.

## ◆ GetIndexBufferEffect()

GlsRenderEffect * GetIndexBufferEffect | ( | unsigned int | bufferNum | ) |
| inline

Access the GlsRenderEffect that is used to render the specified index buffer (may be NULL)

Parameters

  bufferNum | The IndexBuffer to get the effect for. Must be between 0 and NumIndexBuffers().

Returns
  Pointer to the index buffer effect used when rendering the specified GlsGeometryResource IndexBuffer

## ◆ GetRenderMesh()

virtual GlsGeometryResource * GetRenderMesh | ( |  | ) |
| pure virtual

Implemented by the derived class.

Returns
  The mesh that should be rendered / picked.

Implemented in GlsAdvancedMesh, and GlsSerialMorphMesh.

## ◆ GetTransformedExtents()

virtual void GetTransformedExtents | ( | Vector & | min,
|  | Vector & | max,
|  | const GlsMatrixType & | matrix,
|  | bool | resetMinMax = `true`
| ) |  |
| virtual

Determines the static extents of the geometry projected to the XY plane of an arbirary coordinate system.

Parameters

  min | Returns the minimum values found in the traversal
  max | Returns the maximum values found in the traversal
  matrix | Transformation matrix from logical coordinates to the coordinate system to determine the extents in.
  resetMinMax | Normally not specified by user. Should be true for the initial call.

Reimplemented from DisplayObject.

## ◆ Hit()

virtual bool Hit | ( | float | x,
|  | float | y,
|  | float | z,
|  | float | scale,
|  | const Vector & | directionVector,
|  | Vector * | collisionPoint
| ) |  |
| virtual

Determines if the object is hit by a pick ray starting at (x,y,z) and pointing towards directionVector in object logical coordinate system. If Pickable() == PICK_BEST it will return the closest point that was hit, otherwise it returns the first point that was hit. This method should not pick points behind the viewer.

Parameters

  x | X coordinate of pick ray start in logical coordinates.
  y | Y coordinate of pick ray start in logical coordinates.
  z | Z coordinate of pick ray start in logical coordinates.
  scale | The scale factor of the window. Affects picking of outlines. Standard value is 1.0.
  directionVector | The direction of the pick ray.
  collisionPoint | If this method returns true, this Vector will contain the location that was hit in logical coordinates.

Returns
  boolean indicating if the object was hit by the pick ray.

Reimplemented from DisplayObject.

## ◆ LoadGloGeometryResourceData()

GlsGeometry_Generic * LoadGloGeometryResourceData | ( | GlsGloFileAttribute & | data | ) |
| protected

Reads in the given file data to create and initialize the geometry data such as its vertices, normals, and bounding volume.

Parameters

  data | File that contains binary data about this object's geometry.

Returns
  The resulting geometry resource that has its vertices, normals, colors, and bounding volume initialized. Returns null if there's an error.

## ◆ MaterialIndex() [1/2]

virtual int MaterialIndex | ( |  | ) |
| virtual

Override base class since a mesh can have multiple materials.

Returns
  The first index in the _materialIndices array.

Reimplemented from DisplayObject.

## ◆ MaterialIndex() [2/2]

virtual void MaterialIndex | ( | unsigned int | index | ) |
| virtual

Override base class since a mesh can have multiple materials.

Parameters

  index | The material index to set.

## ◆ MaterialIndices() [1/2]

virtual DynamicArray< int > & MaterialIndices | ( |  | ) |
| virtual

Returns
  A list of material indices.

Reimplemented from DisplayObject.

## ◆ MaterialIndices() [2/2]

virtual void MaterialIndices | ( | DynamicArray< int > | indices | ) |
| virtual

Set the _materialIndices array for this object.

Parameters

  indices | The new indices to set.

Reimplemented from DisplayObject.

## ◆ NumIndexBufferEffects()

unsigned int NumIndexBufferEffects | ( |  | ) |
| inline

Returns
  The size of the IndexBufferEffects array

## ◆ NumIndexBuffers()

unsigned int NumIndexBuffers | ( |  | ) |
| inline

Returns
  The number of IndexBuffers in the current render mesh

## ◆ OnGeometryResourceChanged()

virtual void OnGeometryResourceChanged | ( |  | ) |
| inline virtual

Callback method to be called by this observer.

Implements GlsGeometryResource::Observer.

## ◆ Pick3D()

virtual DisplayObject * Pick3D | ( | const Vector & | winLoc,
|  | const Vector & | logicalCoords,
|  | float | scale,
|  | const Vector & | directionVector,
|  | Vector & | collisionWinLoc,
|  | const OpenGLMatrices & | drawnMatrices
| ) |  |
| virtual

Attempts to pick an object in 3D and accounting for dynamic rotations and translations of this object or parent objects. It also looks at the pickable status and attempts to return the "Best" pick if that is what is desired.

Note: This method will pick objects in the scene based on a pick ray starting at winLoc and pointing into the screen. It will not pick objects behind the depth specified by winLoc.z. Typically winLoc.z should be set to 0 to ensure that the pick ray starts at near clip plane.

Parameters

  winLoc | Device coordinates for the mouse click. Z value should be set to 0 to ensure pick ray starts at near clip plane.
  logicalCoords | The start of the pick ray in logical coordinates. Should be calculated from the winLoc using this->WindowToLogical(winLoc, logicalCoords, &directionVector).
  scale | Current window scale. Affects picking radius of outlines. Initial value should typically be 1.0.
  directionVector | The direction of the pick ray in logical coordinates. Should be calculated from the winLoc using this->WindowToLogical(winLoc, logicalCoords, &directionVector).
  collisionWinLoc | Returns where the pick vector intersects the object that is hit in device coordinates.
  drawnMatrices | The matrices used to draw the object, including matrices set by parents that may have dynamically rotated, translated or scaled this object. Initial value should typically be a default OpenGLMatrices() object.

Returns
  The object that was hit, or NULL if no object hit

Reimplemented from DisplayObject.

## ◆ PreDraw()

virtual void PreDraw | ( | const OpenGLMatrices & | current,
|  | Culler & | culler
| ) |  |
| virtual

Traverses the hierarchy calculating the _modelMatrix, _projMatrix, _viewMatrix as needed.

Parameters

  current | Current matrices inherited from parent
  culler | Object that possibly marks this object for culling

Reimplemented from DisplayObject.

Reimplemented in GlsAdvancedMesh, and GlsSerialMorphMesh.

## ◆ ReorderAtWill() [1/2]

bool ReorderAtWill | ( |  | ) |
| inline

Returns
  Whether or not the draw order of the mesh can be modified for performance.

## ◆ ReorderAtWill() [2/2]

void ReorderAtWill | ( | bool | reorderAtWill | ) |
| inline

Sets whether or not the draw order of the mesh can be modified for performance.

Parameters

  reorderAtWill | The new reorder flag.

## ◆ ResizeIndexBufferEffectsArray()

virtual void ResizeIndexBufferEffectsArray | ( | unsigned int | newSize | ) |
| virtual

Set the size of the IndexBufferEffects array. This will release any effects that are no longer referenced.

Parameters

  newSize | The new number of effects to set.

## ◆ Rotate()

virtual void Rotate | ( | const Vector & | orig,
|  | float | angle,
|  | const Vector & | axis
| ) |  |
| virtual

Rotates the object (around the specified axis) by the angle indicated, at the point specified. Recalculates the vertex data.

Parameters

  orig | The point to rotate around
  angle | The angle to rotate by, in degrees
  axis | The arbitrary axis to rotate the object around

Reimplemented from DisplayObject.

## ◆ Scale()

virtual void Scale | ( | float | px,
|  | float | py,
|  | float | pz,
|  | Vertex * | anchor,
|  | int | handleBar = `0`
| ) |  |
| virtual

Scales the object, either the handleBar, or the Anchor is used to translate the object, not both. Anchor takes presidence, if it is set HandleBar is ignored. The footprint is different from the 2D scale so the compiler can destinguish the two.

Parameters

  px | Value of the percentage of scale in x-axis
  py | Value of the percentage of scale in y-axis
  pz | Value of the percentage of scale in z-axis
  anchor | Anchor from which to scale object relative to
  handleBar | Vertex that is being dragged

Reimplemented from DisplayObject.

## ◆ SetAvailableAttributes()

virtual void SetAvailableAttributes | ( | unsigned int | value | ) |
| virtual

Specifies which attributes are available for the object. Currently the available attributes cannot be changed after they have been set. (Only the first call has an effect.)

Parameters

  value | A bitfield specifying which types of attributes to make available.

See also
  AvailableAttributesEnum

Reimplemented from DisplayObject.

Reimplemented in GlsAdvancedMesh, and GlsSerialMorphMesh.

## ◆ SetFromGloData()

virtual void SetFromGloData | ( | GlsGloFileAttribute & | data | ) |
| virtual

Set a single attribute from the GLO file.

Parameters

  data | The attribute to set and its associated data.

Reimplemented from DisplayObject.

Reimplemented in GlsAdvancedMesh, and GlsSerialMorphMesh.

## ◆ SetGeometryTransform() [1/2]

void SetGeometryTransform | ( | const double * | matrix | ) |

Set the matrix that is applied before the geometry resource is drawn.

Parameters

  matrix | Array of 16 doubles that make up the new transform matrix.

## ◆ SetGeometryTransform() [2/2]

void SetGeometryTransform | ( | const GlsMatrixType & | value | ) |

Set the matrix that is applied before the geometry resource is drawn.

Parameters

  value | The transform value to set.

## ◆ SetGloIndexBufferEffect()

bool SetGloIndexBufferEffect | ( | GlsGloFileAttribute & | data | ) |
| protected

Creates or updates an effect where the effect's properties apply based on what the data provides. Used by SetFromGloData.

Parameters

  data | File that contains binary data about the buffer effect.

Returns
  True if it successfully applied the index buffer effect. Returns false on error.

## ◆ SetIndexBufferEffect()

void SetIndexBufferEffect | ( | unsigned int | bufferNum,
|  | GlsRenderEffect * | newEffect
| ) |  |
| inline

Set the GlsRenderEffect to use when rendering the given index buffer. If this value is NULL, the geometry will be rendered with a default effect. Note: the GlsGeometryResourceMesh will increment the reference count on the new effect and release any effect that was previously referenced.

Parameters

  bufferNum | The IndexBuffer to get the effect for. Should be between 0 and NumIndexBuffers().
  newEffect | [out] Pointer to the index buffer effect to use when rendering the specified GlsGeometryResource IndexBuffer.

## ◆ SetupDefaultEffect()

void SetupDefaultEffect | ( |  | ) |
| protected

Sets up the default shader program for mesh drawing.

Note
  Not normally called by users.

## ◆ SetupTexture()

virtual bool SetupTexture | ( |  | ) |
| virtual

Override base class since a mesh can have multiple textures.

Returns
  Whether or not the OpenGL state changed.

## ◆ TextureIndex() [1/2]

virtual int TextureIndex | ( |  | ) |
| virtual

Override base class since a mesh can have multiple textures.

Returns
  -2 if multiple textures applied to object, -1 if no texture otherwise if all faces use same texture, returns the texture index that is shared by the faces.

Reimplemented from DisplayObject.

## ◆ TextureIndex() [2/2]

virtual void TextureIndex | ( | int | textureIndex | ) |
| virtual

Sets the texture index to be used when drawing the object.

Parameters

  textureIndex | The texture index to use. -1 indicates that no texture will be drawn.

Reimplemented from DisplayObject.

## ◆ TranslateVertices()

virtual void TranslateVertices | ( | float | x,
|  | float | y,
|  | float | z
| ) |  |
| virtual

Moves the object's vertices by the amount indicated. Does not change _location.

Parameters

  x | X amount to translate by
  y | Y amount to translate by
  z | Z amount to translate by

Reimplemented from DisplayObject.

## ◆ UpdateBoundingVolume()

virtual void UpdateBoundingVolume | ( |  | ) |
| virtual

Updates the bounding volume of this object This method should be called if the vertices change for picking and culling to work correctly. This will only update this object. If PerformGroupCullCheck is enabled for one of the objects parents, you may also need to call CalculateParentBoundingBox() to update all of the objects parents.

Reimplemented from DisplayObject.

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

- gls_geometry_resource_mesh.h