GL Studio C++ Runtime API
Gls3DCable Class Reference

#include <gls_3d_cable.h>

Inheritance diagram for Gls3DCable:
Group DisplayObject AttributeChangedNotifier WeakReferenceableMixin WeakReferenceable

Public Types

enum  
 
enum  
 
- Public Types inherited from DisplayObject
enum  AvailableAttributesEnum
 

Public Member Functions

 Gls3DCable (bool generateInstance=false)
 
virtual ~Gls3DCable ()
 
virtual void GetResources (std::ostream &outstr, GlsResourceFilter *filter)
 
virtual DistiAttributeBaseResource (const char *name)
 
virtual void SetAvailableAttributes (unsigned int value)
 
virtual DisplayObjectCloneObject (bool generateNames=false)
 
virtual void CopyProperties (DisplayObject *src)
 
virtual InterfaceListTypeGetCppInterfaceDescription (InterfaceListType *addToThisList=NULL)
 
virtual void GetCppInterfaceDescriptionFree (InterfaceListType *array)
 
virtual void PreDraw (const OpenGLMatrices &parentMatrices, Culler &culler)
 
virtual void Draw (void)
 
virtual void Calculate (double time)
 
virtual DisplayObjecthandle (DisplayEvent *ev)
 
virtual void SetValue (int spec, va_list &args)
 
virtual bool Hit (float x, float y, float z, float scale, const Vector &directionVector, Vector *collisionPoint)
 
virtual DisplayObjectPick3D (const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &parentDrawn)
 
virtual void CalculateTextureCoordinates (void)
 
virtual void LineWidth (float width)
 
virtual float LineWidth (void)
 
virtual void LineStipplePattern (int pattern)
 
virtual int LineStipplePattern (void)
 
virtual void LineStippleMultiplier (int mult)
 
virtual int LineStippleMultiplier (void)
 
virtual int PolygonMode (void)
 
virtual void PolygonMode (int mode)
 
virtual void PolygonEnd (const int mode)
 
virtual int PolygonEnd (void)
 
virtual void Shading (const int mode)
 
virtual int Shading (void)
 
virtual void DepthTest (unsigned char mode)
 
virtual int DepthTest (void)
 
virtual void AntiAlias (bool mode)
 
virtual bool AntiAlias (void)
 
virtual void AlphaMode (int mode)
 
virtual int AlphaMode (void)
 
virtual void CullBackFace (const bool mode)
 
virtual bool CullBackFace (void)
 
virtual bool LightingEnabled ()
 
virtual void LightingEnabled (bool lighting)
 
virtual void SetBlendColor (const GlsColor &color)
 
virtual GlsColor GetBlendColor (void)
 
virtual void SetColor (const GlsColor &color)
 
virtual GlsColor GetColor (void)
 
virtual void SetFillColor (const GlsColor &color)
 
virtual GlsColor GetFillColor (void)
 
virtual void TextureRepeat (const int rep)
 
virtual bool TextureRepeat (void)
 
virtual void TextureMappingTechnique (const int map)
 
virtual int TextureMappingTechnique (void)
 
virtual void TextureMinificationFilter (const int filter)
 
virtual int TextureMinificationFilter (void)
 
virtual void TextureMagnificationFilter (const int filter)
 
virtual int TextureMagnificationFilter (void)
 
void Flexibility (const float &value)
 
float Flexibility ()
 
void NumberOfSegments (const unsigned int &value)
 
unsigned int NumberOfSegments ()
 
void NumberOfSides (const unsigned int &value)
 
unsigned int NumberOfSides ()
 
void Radius (const float &value)
 
float Radius ()
 
void Length (const float &value)
 
float Length ()
 
void CollisionStyle (const int &value)
 
int CollisionStyle ()
 
void SlackPct (unsigned int section, double pct)
 
double SlackPct (unsigned int section)
 
unsigned int SlackSectionCount () const
 
void ForceCableRecalc ()
 
void Gravity (const bool &value)
 
bool Gravity ()
 
- Public Member Functions inherited from Group
DisplayObjectFindByName (const char *name)
 
virtual DisplayObjectFindByNameSameFrame (const char *name)
 
DisplayObjectFindByName (DisplayObject *obj)
 
DisplayObjectFindByQualifiedName (const char *name)
 
DisplayObjectFindNonRecursive (DisplayObject *obj)
 
DisplayObjectArrayObjects ()
 
const DisplayObjectArrayObjects () const
 
DisplayObjectItem (unsigned int index)
 
bool PerformGroupCullCheck (void) const
 
void PerformGroupCullCheck (bool mode)
 
bool CullTestChildren (void) const
 
void CullTestChildren (bool mode)
 
unsigned int Count (void) const
 
DisplayObjectPtr operator[] (unsigned int index)
 
const DisplayObjectoperator[] (unsigned int index) const
 
DisplayObjectFirstObject ()
 
DisplayObjectLastObject (void)
 
bool IsEmpty () const
 
int Position (const DisplayObject *obj) const
 
 Group (int generateInstance=0)
 
 Group (const Group &group, bool generateNames)
 
void InitialGroupCount (unsigned int cnt)
 
virtual ~Group ()
 
virtual void DeleteAllChildren ()
 
virtual void CopyGeometry (DisplayObject *src) override
 
virtual void Parent (DisplayFrame *par) override
 
void SetPainter (GlsPainter *painter) override
 
virtual void Location (const Vertex &v) override
 
virtual void Location (float x, float y, float z) override
 
virtual void Translate (float x, float y, float z) override
 
virtual void Translate (float transAmount[]) override
 
virtual void TranslateVertices (float x, float y, float z) override
 
virtual void GetExtents (float &x, float &y, float &z, float &x1, float &y1, float &z1) override
 
virtual void GetTransformedExtents (Vector &min, Vector &max, const GlsMatrixType &matrix, bool resetMinMax=true) override
 
virtual void Rotate (const Vector &orig, float angle, const Vector &axis) override
 
void Scale (float scale_x, float scale_y, float scale_z, Vertex *anchor=NULL, int handle=0) override
 
virtual void InsertObject (DisplayObject *obj, bool reparent=true, bool recalculateBoundingbox=true, int loc=-1)
 
virtual bool DeleteObject (DisplayObject *obj, bool recalculateBoundingbox=true)
 
virtual void ReorderObject (unsigned int oldIndex, unsigned int newIndex)
 
virtual void PushObject (DisplayObject *obj)
 
void DeleteVertexAt (unsigned) override
 
void InsertVertexAt (unsigned) override
 
virtual void SetGroupLocation (const Vertex &v)
 
CompatabilityListItemFirst ()
 
CompatabilityListItemLast ()
 
- Public Member Functions inherited from DisplayObject
 DisplayObject (float x, float y, float z)
 
 DisplayObject (const DisplayObject &object, const bool generateNames)
 
virtual ~DisplayObject (void)
 
void Destroy ()
 
void ApplyTextureSettings (int textureIndex=-1)
 
DistiAttribDictAttributes ()
 
void GetBlendColor (unsigned char color[])
 
void GetBlendColor (unsigned char &r, unsigned char &g, unsigned char &b, unsigned char &a)
 
void SetBlendColor (unsigned char color[])
 
void SetBlendColor (unsigned char r, unsigned char g, unsigned char b, unsigned char a)
 
bool BlinkedOff (void)
 
virtual bool Blinking (void)
 
virtual void Blinking (const bool blink)
 
virtual float BlinkRate (void)
 
virtual void BlinkRate (const float rate)
 
const VectorBoundingVolumeCenter () const
 
void BoundingVolumeCenter (const Vector &center)
 
bool BoundingVolumeHit (const Vector &start, const Vector &direction)
 
float BoundingVolumeRadius () const
 
void BoundingVolumeRadius (float radius)
 
void CalculateCollisionPoint (const Vector &pickLoc, const Vector &directionVector, Vector *collisionPoint)
 
virtual void CalculateParentBoundingBox (void)
 
bool GetTexturePointTransformationMatrix (GlsMatrixType &world2tex)
 
CallbackMethodCallerBaseCallbackCaller () const
 
void CallbackCaller (CallbackMethodCallerBase *cb)
 
virtual void GetCenter (Vector &center)
 
void GetColor (unsigned char c4[])
 
void GetColor (unsigned char &r, unsigned char &g, unsigned char &b, unsigned char &a)
 
void SetColor (unsigned char c4[])
 
void SetColor (unsigned char r, unsigned char g, unsigned char b, unsigned char a)
 
virtual void CopyHierarchyProperties (DisplayObject *src, bool copyName)
 
bool Culled () const
 
bool CullTest (const GlsMatrixType *matrix, const Culler &culler)
 
GlsMatrixTypeDcsMatrix ()
 
void DcsMatrix (const GlsMatrixType &matrix)
 
virtual void DeleteVertexAt (unsigned int index)
 
virtual void DeleteVertex (unsigned int indexAfter) final
 
const GlsMatrixTypeDrawMatrix ()
 
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 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 DynamicTranslate (float amount, int axis, bool relative=false)
 
virtual float DynamicTranslation (int axis)
 
virtual Vector DynamicTranslation ()
 
DisplayObjectEditor * Editor ()
 
const DisplayObjectEditor * Editor () const
 
void Editor (DisplayObjectEditor *editor)
 
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[])
 
void SetFillColor (unsigned char r, unsigned char g, unsigned char b, unsigned char a)
 
void SetFillColor (unsigned char c4[])
 
virtual void FinishObject ()
 
virtual void GenerateInstanceName (void)
 
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 (void)
 
void InstanceName (const char *name)
 
virtual const VertexLocation (void) const
 
virtual void GetLocation (Vertex &v)
 
virtual void GetLocation (float &x, float &y, float &z)
 
float X (void) const
 
float Y (void) const
 
float Z (void) 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)
 
GlsMatrixTypeModelMatrix ()
 
bool NeedCalculate ()
 
VectorNormals ()
 
virtual void SetNormals (unsigned int nPoints, Vector *vertices)
 
void VaSetNormals (unsigned int nPoints,...)
 
unsigned int NumberOfVertices () const
 
virtual float ObjectDepth (void)
 
virtual float ObjectHeight (void)
 
virtual float ObjectWidth (void)
 
virtual void SetOrigin (const Vertex &vert)
 
DisplayFrameParent (void) const
 
virtual void ParentGroup (Group *group)
 
GroupParentGroup (void) const
 
unsigned char Pickable ()
 
virtual void Pickable (unsigned char pick)
 
GlsMatrixTypeProjMatrix ()
 
virtual void ReallocateVertices (unsigned int numVertices, bool initializeNew, bool copyOld)
 
virtual float RelativeAngle (const float x, const float y)
 
void RestoreAlpha (void)
 
void RestoreAntiAlias (void)
 
void RestoreLighting (void)
 
void RestoreLineStyle (void)
 
const VertexRotationPoint () 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)
 
void SaveMatrices ()
 
void Set (int spec,...)
 
bool SetupAlpha (void)
 
bool SetupAntiAlias (void)
 
void SetupDepthTest (void)
 
void SetupLighting (void)
 
bool SetupLineStyle (void)
 
void SetupPolyDrawStyle (void)
 
void SetupShading (void)
 
bool SetupTexture (void)
 
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,...)
 
VectorTextureCoordinates (void)
 
VectorGetTextureCoordinates (void)
 
virtual int TextureIndex (void)
 
virtual void TextureIndex (int textureIndex)
 
virtual VectorGetTexturePoints (void)
 
virtual void UpdateBoundingVolume (void)
 
void * UserData (void) const
 
void UserData (void *data)
 
virtual void SetVertexColor (unsigned int vertex, unsigned char CurrentFillColor[])
 
virtual VertexVertices ()
 
virtual void SetVertices (unsigned int nPoints, Vertex *vertices)
 
void VaSetVertices (unsigned int nPoints,...)
 
int * ViewMatrix ()
 
bool Visible (void) const
 
bool Visibility (void) const
 
virtual void Visibility (const bool vis)
 
virtual Vector WorldRotationPoint (void)
 
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)
 
virtual bool GetPlaneVectorPoints (Vertex &p1, Vertex &p2, Vertex &p3, Vertex &planeVector)
 
void NotifyAttributeChanged (const AttributeName &name) override
 
virtual GlsPainterGetPainter ()
 
void InvalidatePainter ()
 
virtual bool IsVisibleInScene (const DisplayObject *obj=NULL) const
 
- Public Member Functions inherited from AttributeChangedNotifier
virtual ~AttributeChangedNotifier ()
 
- Public Member Functions inherited from WeakReferenceableMixin
void AddWeakReference (WeakReference *weakRef) override
 
void NotifyWeakReferenceDestroyed (WeakReference *ref) override
 

Protected Attributes

float _flexibility
 
unsigned int _numberOfSegments
 
unsigned int _numberOfSides
 
float _radius
 
float _length
 
bool _needCableRecalc
 
bool _needTubeGeneration
 
bool _inCableRecalc
 
GLPolygon _line
 
GLTriMesh _mesh
 
std::vector< Vector_endPointPos
 
std::vector< GlsMatrixAffineD_endPointOri
 
DynamicDoubleArray _sectionSlackPct
 
GlsMatrixAffineD _cableDcs
 
ECollisionStyle _collisionStyle
 
- Protected Attributes inherited from DisplayObject
int _alphaMode
 
bool _antiAlias
 
bool _attributesAdded
 
bool _blinking
 
float _blinkRate
 
GlsColor _color
 
bool _cullBackFace
 
GlsMatrixType _dcsMatrix
 
unsigned char _depthTest
 
GlsMatrixType_drawMatrix
 
unsigned char _lineStippleMultiplier
 
unsigned short _lineStipplePattern
 
float _lineWidth
 
Vertex _location
 
GlsMatrixType_modelMatrix
 
Vector_normals
 
unsigned int _nTex_vertices
 
unsigned int _nVertices
 
unsigned char _polygonEnd
 
unsigned char _polygonMode
 
int _polygonOffset
 
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
 
- Protected Attributes inherited from WeakReferenceableMixin
DynamicArray< WeakReference * > * _weakRefs
 

Additional Inherited Members

- Static Public Member Functions inherited from DisplayObject
static void UseManualBlinkElapsedTime (bool useManualTime)
 
static void SetManualBlinkElapsedTime (double elapsedTime)
 
- Protected Member Functions inherited from Group
virtual void AddAvailableAttributes (unsigned int availableAttributes)
 
virtual void GrowBoundingBox (DisplayObject *obj)
 
- 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 AllocateModelMatrix ()
 
bool ApplyDynamicRotation (void)
 
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 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)
 
int GetApplicableTextureIndex ()
 
int GetApplicableTextureRepeat ()
 
- Protected Member Functions inherited from WeakReferenceableMixin
 WeakReferenceableMixin (void)
 
virtual ~WeakReferenceableMixin ()
 

Detailed Description

Runtime implementation of a Gls3DCable. The Gls3DCable is a cable mesh between two or more endpoint objects. The user controls the length, the flexibility, the diameter, the smoothness (segments and sides), and the droop of the cable.

Member Enumeration Documentation

anonymous enum

Segement limits

anonymous enum

Sides limits

Constructor & Destructor Documentation

Gls3DCable ( bool  generateInstance = false)

Create a new Gls3DCable.

Parameters
generateInstanceWhether or not to generate an instance name for this inputdevice
virtual ~Gls3DCable ( )
virtual

Destructs a Gls3DCable object

Member Function Documentation

virtual void AlphaMode ( int  mode)
virtual

Set the alpha mode state for this object

Parameters
modewhich alpha mode to use when drawing
See also
AlphaMode_e

Reimplemented from Group.

virtual int AlphaMode ( void  )
virtual

Get the alpha mode for this object

Returns
Whether or not alpha testing or blending is enabled when drawing
See also
AlphaMode_e

Reimplemented from Group.

virtual void AntiAlias ( bool  alias)
virtual

Set the anti aliasing state for this object

Parameters
aliasWhether or not to perform anti aliasing

Reimplemented from Group.

virtual bool AntiAlias ( void  )
virtual

Get the anti aliasing state this object

Returns
Whether or not this object will be drawn antialiased

Reimplemented from Group.

virtual void Calculate ( double  time)
virtual

Call the Calculate method for all children

Parameters
timeThe current time

Reimplemented from Group.

virtual void CalculateTextureCoordinates ( void  )
virtual

Recalculates the texture coordinates for the object based on the TexturePoints.

Reimplemented from Group.

virtual DisplayObject* CloneObject ( bool  generateNames = false)
virtual

Copy+Create operation in one method. In derived classes, this method will create a new instance of the derived class and then copy the object into the new instance. The cut,copy,paste and undo operations use this method.

Parameters
generateNamesWhether or not to generate new names for cloned objects
Returns
A new object, identical to the original, except for the instance name

Reimplemented from Group.

void CollisionStyle ( const int &  value)

Sets the CollisionStyle.

Parameters
valueThe collision mode for the cable. COLLISIONSTYLE_NONE will disable all collision detection and therefore any cable deformation caused thereby. COLLISIONSTYLE_FAST will check for collisions with other objects in the scene, but will only move / orient the cable midpoint such that it appears as though the cable is laying flat on a single surface.

Check if USE_COLLISIONSTYLE_SLOW is defined before using Slow.

int CollisionStyle ( )

Gets the Collision Style

Returns
The current Collision Style
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
srcThe object to copy properties from

Reimplemented from Group.

virtual void CullBackFace ( const bool  val)
virtual

Sets if back faces should be removed

Parameters
valTrue if back faces should be removed

Reimplemented from Group.

virtual bool CullBackFace ( void  )
virtual

Returns if back faces should be removed

Returns
True if backfaces are removed

Reimplemented from Group.

virtual void DepthTest ( unsigned char  zbuf)
virtual

Set the z buffering state for this object

Parameters
zbufWhether or not to perform z buffering

Reimplemented from Group.

virtual int DepthTest ( void  )
virtual

Get the z buffering state for this object

Returns
Whether or not this object will be draw Z buffered

Reimplemented from Group.

virtual void Draw ( void  )
virtual

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

Reimplemented from Group.

void Flexibility ( const float &  value)

Sets flexibility.

Parameters
valueControls how stiff the cable is. The value should be in the range of 0 to 1, inclusive. 0 is very inflexible, while 1 is very flexible.
Precondition
value must be in the range of 0 to 1
Postcondition
None
float Flexibility ( )

Gets flexibility.

Returns
How stiff the cable is.
void ForceCableRecalc ( )

Sometimes an outside source may need to recalculate the cable, such as when the scene changes and the cable may not be colliding with another object in the scene.

Precondition
None
Postcondition
None
virtual GlsColor GetBlendColor ( void  )
virtual

Gets the texture blend color for the object

Returns
Returns the current texture blend color.

Reimplemented from Group.

virtual GlsColor GetColor ( void  )
virtual

Gets the color for the object outline

Returns
The outline color

Reimplemented from Group.

virtual InterfaceListType* GetCppInterfaceDescription ( InterfaceListType addToThisList = NULL)
virtual

Get the details of the Cpp Interface The actual interface is exposed in compiled code.

Parameters
addToThisListIf not NULL this list will be added to then returned. If NULL a new list will be created.
Returns
A templated list. The caller must call the corresponding free method to safely free the memory.

Reimplemented from Group.

virtual void GetCppInterfaceDescriptionFree ( InterfaceListType array)
virtual

Frees the memory allocated by a previous call to GetCppInterfaceDescription

Parameters
arrayMemory allocated by a previous call to GetCppInterfaceDescription

Reimplemented from Group.

virtual GlsColor GetFillColor ( void  )
virtual

Gets the fill color of the object

Returns
The fill color

Reimplemented from Group.

virtual void GetResources ( std::ostream &  outstr,
GlsResourceFilter filter 
)
virtual

Writes the resources (attributes) of this object to the specified stream. The output of this method can be controlled by the GlsResourceFilter. Note that if filter->NamesOnly() is false (the default), then only resources that can return a value will appear in the list.

See also
GlsResourceFilter
DistiAttributeProperty
Parameters
outstrThe stream to write to
filterThe filter to determine what to write

Reimplemented from Group.

void Gravity ( const bool &  value)

Wether or not to simulate gavity on the cable.

Precondition
None
Postcondition
None
bool Gravity ( )
inline

Returns wether or not gavity is simulated on the cable.

Returns
Returns wether or not gavity is simulated on the cable
Precondition
none
Postcondition
none
virtual DisplayObject* handle ( DisplayEvent ev)
virtual

Handles an event that is sent to the object.

Parameters
evThe event to send to the object
Returns
Which object handled the event

Reimplemented from DisplayObject.

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

Determines if the indicated x,y,z point is inside the object. This is used by the editor to determine which object a user clicked on. It is also used in the generated code to send mouse events to the graphical objects for processing

Parameters
xX coordinate of mouse click
yY coordinate of mouse click
zZ coordinate of mouse click
scaleThe scale factor of the window
directionVectorThe direction of the pick vector. Vector(0.0f, 0.0f, 1.0f) is for picking in the XY plane
collisionPointReturns the collision point
Returns
boolean indicating if the object was hit by the mouse

Reimplemented from Group.

void Length ( const float &  value)

Sets the Length of the cable. when not under duress (the cable will stretch when the end-points are moved too far from each other).

Parameters
valueThe approximate length of the cable in logical units
Precondition
value must be 0.0 to MAX_FLT
Postcondition
None
float Length ( )

Gets the Length of the cable.

Returns
The length of the cable in logical units
virtual bool LightingEnabled ( )
virtual

Gets the lighting state

Reimplemented from Group.

virtual void LightingEnabled ( bool  lighting)
virtual

Sets the lighting state

Reimplemented from Group.

virtual void LineStippleMultiplier ( int  mult)
virtual

Set the line stipple multiplier for this object

Parameters
multThe new line stipple pattern

Reimplemented from Group.

virtual int LineStippleMultiplier ( void  )
virtual

Get the line stipple multiplier for this object

Returns
The line stipple multiplier for this object

Reimplemented from Group.

virtual void LineStipplePattern ( int  pattern)
virtual

Set the line stipple pattern for this object

Parameters
patternThe new line stipple pattern

Reimplemented from Group.

virtual int LineStipplePattern ( void  )
virtual

Get the line stipple pattern for this object

Returns
The line stipple pattern for this object

Reimplemented from Group.

virtual void LineWidth ( float  width)
virtual

Sets the width of lines in the object.

Parameters
widthThe new line width of the object in logical units

Reimplemented from Group.

virtual float LineWidth ( void  )
virtual

Gets the width of lines in the object.

Returns
The line width of the object in logical units

Reimplemented from Group.

void NumberOfSegments ( const unsigned int &  value)

Sets Number of Segements.

Parameters
valueThe number of cylindrical segments that will traverse the entire length of the cable. A cable with one section (that is, with only two control objects) would be a straight cylinder connecting two points, incapable of bending. The higher this number, the smoother your cable will appear.
Precondition
value must be in the range MIN_SEGEMENTS to MAX_SEGEMENTS
Postcondition
none
unsigned int NumberOfSegments ( )

Gets the Number of Segements.

Returns
The Number of Segments
void NumberOfSides ( const unsigned int &  value)

Sets the Number Of Sides.

Parameters
valueThe number of sides the cable "tube" will have. The more sides, the smoother the cable will appear. A value of two will produce a ribbon-like cable. A value of one will render only a line.
Precondition
value must be in the range of 1 to 100 inclusive.
Postcondition
None
unsigned int NumberOfSides ( )

Gets the Number of Sides.

Returns
The number of sides
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
winLocDevice coordinates for the mouse click. Z value should be set to 0 to ensure pick ray starts at near clip plane.
logicalCoordsThe start of the pick ray in logical coordinates. Should be calculated from the winLoc using this->WindowToLogical(winLoc, logicalCoords, &directionVector).
scaleCurrent window scale. Affects picking radius of outlines. Initial value should typically be 1.0.
directionVectorThe direction of the pick ray in logical coordinates. Should be calculated from the winLoc using this->WindowToLogical(winLoc, logicalCoords, &directionVector).
collisionWinLocReturns where the pick vector intersects the object that is hit in device coordinates.
drawnMatricesThe 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 Group.

virtual void PolygonEnd ( const int  end)
virtual

Sets the polygon end mode (Open or Closed) for the polygon

Parameters
endEnumeration indicating open or closed mode
See also
PolygonClose_e

Reimplemented from Group.

virtual int PolygonEnd ( void  )
virtual

Gets the polygon end mode (Open or Closed) for the polygon

Returns
Enumeration indicating open or closed mode
See also
PolygonClose_e

Reimplemented from Group.

virtual int PolygonMode ( void  )
virtual

Gets the polygon drawing mode for this object

Returns
The polygon drawing mode for this object
See also
PolygonMode_e

Reimplemented from Group.

virtual void PolygonMode ( int  mode)
virtual

Sets the polygon drawing mode for this object

Parameters
modeThe new polygon drawing mode for this object
See also
PolygonMode_e

Reimplemented from Group.

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

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

Parameters
currentCurrent matrices inherited from parent
cullerObject that possibly marks this object for culling

Reimplemented from Group.

void Radius ( const float &  value)

Sets the Radius of the cable in logical units

Parameters
valueThe radius in logical units.
Precondition
value must be plus/minus MAX_FLT
Postcondition
none
float Radius ( )

Gets the Radius of the cable

Returns
The radius in logical units
virtual DistiAttributeBase& Resource ( const char *  name)
virtual

Gets a reference to the specified attribute for reading and writing. This reference can be streamed into and out of variables. For Example: someObject->Resource("Visible") >> someBool; someBool << someObject->Resource("Visible");

Reimplemented from DisplayObject.

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
valueA bitfield specifying which types of attributes to make available.
See also
AvailableAttributesEnum

Reimplemented from Group.

virtual void SetBlendColor ( const GlsColor color)
virtual

Sets the texture blend color for the object

Parameters
colorA GlsColor

Reimplemented from Group.

virtual void SetColor ( const GlsColor color)
virtual

Sets the RGBA color for the object outline

Parameters
colorThe new color

Reimplemented from Group.

virtual void SetFillColor ( const GlsColor color)
virtual

Sets the RGBA color for filling the object

Parameters
colorThe new RGBA fill color (0-255 range) for the object

Reimplemented from Group.

virtual void SetValue ( int  spec,
va_list &  args 
)
virtual

Sets an attribute of this object using variable arguments

Parameters
specA GLS_Initializer tag
argsA variable argument list

Reimplemented from DisplayObject.

virtual void Shading ( const int  shading)
virtual

Sets the polygon shading mode (Flat or gouraud) for the polygon

Parameters
shadingEnumeration indicating shading mode
See also
ShadingType_e

Reimplemented from Group.

virtual int Shading ( void  )
virtual

Gets the polygon shading mode (Flat or gouraud) for the polygon

Returns
Enumeration indicating shading mode
See also
ShadingType_e

Reimplemented from Group.

void SlackPct ( unsigned int  section,
double  pct 
)

Sets the Slack Percentage

Parameters
sectionWhich section of the cable, 0 based
pctThe percent of the slace (0.0 -> 1.0) This will adjust the slack percentage in the cable for the section, the caller must ensure that all percents sum up to 1.0.
Precondition
section must be < _sectionSlackPct.Count(), and pct must be 0.0-1.0
Postcondition
Slack percentage will not change if preconditions are not met.
double SlackPct ( unsigned int  section)

Gets the Slack Percentage for a particular section

Parameters
sectionThe section of interest.
Returns
The slack percentage for the specified section.
Precondition
section must be < _sectionSlackPct.Count()
Postcondition
if preconditions are not met 0.0 is returned
unsigned int SlackSectionCount ( ) const

How many Slack Sections are there? Can be used with SlackPct() to get set Slack Sections.

Returns
Return the number of Slack Sections, 0 to N
Precondition
none
Postcondition
none
virtual void TextureMagnificationFilter ( const int  filter)
virtual

Sets the texture magnification filter for this object

Parameters
filterThe new texture magnification filter for this object
See also
TextureFilter_e

Reimplemented from Group.

virtual int TextureMagnificationFilter ( void  )
virtual

Gets the texture magnification filter for this object

Returns
The texture magnification filter for this object
See also
TextureFilter_e

Reimplemented from Group.

virtual void TextureMappingTechnique ( const int  map)
virtual

Sets the texturing mapping mode for this object

Parameters
mapThe new texture mapping mode for this object
See also
TextureMap_e

Reimplemented from Group.

virtual int TextureMappingTechnique ( void  )
virtual

Gets the texturing mapping mode for this object

Returns
The texture mapping mode for this object
See also
TextureMap_e

Reimplemented from Group.

virtual void TextureMinificationFilter ( const int  filter)
virtual

Sets the texture minification filter for this object

Parameters
filterThe new texture minification filter for this object
See also
TextureFilter_e

Reimplemented from Group.

virtual int TextureMinificationFilter ( void  )
virtual

Gets the texture minification filter for this object

Returns
The texture minification filter for this object
See also
TextureFilter_e

Reimplemented from Group.

virtual void TextureRepeat ( const int  rep)
virtual

Sets the texturing repeat mode for this object

Parameters
repThe new texture repeat mode for this object (boolean)

Reimplemented from Group.

virtual bool TextureRepeat ( void  )
virtual

Gets the texturing repeat mode for this object

Returns
The texture repeat mode for this object

Reimplemented from DisplayObject.

Member Data Documentation

GlsMatrixAffineD _cableDcs
protected

Store the DCS Rotation matrix used to calculate the mesh object. The Z is the direction of gravity, so this will effect the slack in the cable. Compare this old DCS with the current to determine if we need to recalculate the mesh.

ECollisionStyle _collisionStyle
protected

The collision type.

std::vector<GlsMatrixAffineD> _endPointOri
protected

Stores the dcs orientations of all of the "EndPoint" objects for ease of use in future calculations. Also used to check if any of the orientations have changed. Endpoints, can be in the middle section of the cable, by "endpoints" it is meant the ends of the sections.

std::vector<Vector> _endPointPos
protected

Stores the locations of all of the "EndPoint" objects for ease of use in future calculations. Also used to check if any of the positions have changed. Endpoints, can be in the middle section of the cable, by "endpoints" it is meant the ends of the sections.

float _flexibility
protected

How flexibile is the cable, more flexibility gives a more rounded cable This has a range of 0 to 1, 0 is inflexible, 1 is flexible.

bool _inCableRecalc
protected

Prevents "Hit()" from being called from within RecalculateCable()

float _length
protected

The requested length of the cable, the cable may be longer, if needed to reach between the end points. A zero length cable can be used to "hide" the cable, while leaving the end points intact. Units are in logical units. This has a range of zero to FLT_MAX.

GLPolygon _line
protected

The _lineVerts are stored in the _line object. The _line object is used for drawing if sides == 1.

GLTriMesh _mesh
protected

The Mesh Verts, Normals, and TexCoords are stored in this object. The _mesh object is used for drawing when sides > 1.

bool _needCableRecalc
protected

Does RecalculateCable () need to be called next frame?

bool _needTubeGeneration
protected

Does TubeGeneration () need to be called next frame?

unsigned int _numberOfSegments
protected

The number of pieces that the entire cable has, the more segements the more smooth a cable will appear, e.g., 1 segment gives you a straight line, two gives you a 'V', etc. This has a range of MIN_SEGEMENTS to MAX_SEGEMENTS

unsigned int _numberOfSides
protected

How many sides does the cable have. 1 is a wire 2 is a ribbon cable, 3 a triangle, 4 a sqaure, etc. the more sides the closer to a circle you get. This has a range of MIN_NUMBER_OF_SIDES to MAX_NUMBER_OF_SIDES.

float _radius
protected

The Radius of the cable. Units are in pixels. This has a range of plus/minus FLT_MAX

DynamicDoubleArray _sectionSlackPct
protected

The percentage of slack that each cable segment has (starts out equally divided)... but the User can set the percentages. This has a range of >= 0 and <= 1. The total of all sections should add to 1.


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