DelayedMatrix3 Class Reference

DelayedMatrix3 Class Reference

#include <control.h>

+ Inheritance diagram for DelayedMatrix3:

Classes

struct  DelayedOp
 
struct  OpQueue
 

Public Types

typedef Matrix3Indirect BaseClass
 

Public Member Functions

 DelayedMatrix3 ()
 
 DelayedMatrix3 (const DelayedMatrix3 &src)
 
void EvalMat ()
 
void EvalMat () const
 
size_t PendingOps () const
 
virtual void InitializeMat ()
 
void Set (const Matrix3 &m)
 
CoreExport Matrix3IndirectClone () const
 
const Matrix3operator() () const
 
void PreTranslate (const Point3 &p)
 
void PreRotateX (float x)
 
void PreRotateY (float y)
 
void PreRotateZ (float z)
 
void PreRotate (const Quat &q)
 
- Public Member Functions inherited from Matrix3Indirect
 Matrix3Indirect ()
 
 Matrix3Indirect (const Matrix3 &m)
 
virtual ~Matrix3Indirect ()
 

Additional Inherited Members

- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
- Protected Attributes inherited from Matrix3Indirect
Matrix3 mat
 

Member Typedef Documentation

Constructor & Destructor Documentation

DelayedMatrix3 ( )
inline
312  : Matrix3Indirect()
313  , mMatInitialized(false)
314  , mOpQueue()
315  {}
Matrix3Indirect()
Definition: control.h:207
DelayedMatrix3 ( const DelayedMatrix3 src)
inline
317  : Matrix3Indirect(src.mat)
318  , mMatInitialized(src.mMatInitialized) {
319  mOpQueue = src.mOpQueue; }
Matrix3 mat
Definition: control.h:268
Matrix3Indirect()
Definition: control.h:207

Member Function Documentation

void EvalMat ( )
inline
321  {
322  if (!mMatInitialized) {
323  InitializeMat();
324  mMatInitialized = true;
325  }
326  while (mOpQueue.QCount() > 0) {
327  DelayedOp& op = mOpQueue.Shift();
328  switch (op.code) {
330  mat.PreTranslate(op.arg.Vector());
331  break;
333  mat.PreRotateX(op.arg.x);
334  break;
336  mat.PreRotateY(op.arg.y);
337  break;
339  mat.PreRotateZ(op.arg.z);
340  break;
342  PreRotateMatrix(mat, op.arg);
343  break;
344  }
345  }
346  return; }
int QCount() const
Definition: control.h:306
void PreTranslate(const Point3 &p)
void PreRotateMatrix(Matrix3 &mat, const Quat &q)
void PreRotateZ(float angle)
Matrix3 mat
Definition: control.h:268
void PreRotateX(float angle)
void PreRotateY(float angle)
DelayedOp & Shift()
Definition: control.h:307
Definition: control.h:280
Definition: control.h:276
virtual void InitializeMat()
Definition: control.h:349
void EvalMat ( ) const
inline
347 { const_cast<DelayedMatrix3*>(this)->EvalMat(); }
void EvalMat()
Definition: control.h:321
Definition: control.h:271
size_t PendingOps ( ) const
inline
348 { return mOpQueue.QCount(); }
int QCount() const
Definition: control.h:306
virtual void InitializeMat ( )
inlinevirtual

Reimplemented in DelayedNodeMat.

349  {
351  mMatInitialized = true; };
Matrix3 mat
Definition: control.h:268
void IdentityMatrix()
void Set ( const Matrix3 m)
inlinevirtual
Remarks
Set the matrix to the specified matrix.
Parameters:
const Matrix3& m

The matrix to set.
Default Implementation:
{ mat = m; }

Reimplemented from Matrix3Indirect.

Reimplemented in DelayedNodeMat.

354  {
355  mat = m;
356  mMatInitialized = true;
357  mOpQueue.Clear(); }
Matrix3 mat
Definition: control.h:268
void Clear()
Definition: control.h:305
CoreExport Matrix3Indirect* Clone ( ) const
virtual
Remarks
Clone the matrix.
Returns
A pointer to a new clone of the matrix.
Default Implementation:
{return new Matrix3Indirect(mat);}

Reimplemented from Matrix3Indirect.

Reimplemented in DelayedNodeMat.

const Matrix3& operator() ( ) const
inlinevirtual
Remarks
Assignment operator.
Default Implementation:
{ return mat; }

Reimplemented from Matrix3Indirect.

359 { EvalMat(); return mat; }
Matrix3 mat
Definition: control.h:268
void EvalMat()
Definition: control.h:321
void PreTranslate ( const Point3 p)
inlinevirtual
Remarks
Pre-translate the matrix by the specified coordinate.
Parameters:
const Point3& p

The coordinate to pre-translate by.
Default Implementation:
{ mat.PreTranslate(p);}

Reimplemented from Matrix3Indirect.

360 { DelayedOp op(p); mOpQueue.Push(op); }
void Push(DelayedOp &op)
Definition: control.h:308
void PreRotateX ( float  x)
inlinevirtual
Remarks
Pre-rotate the X axis by the specified amount.
Parameters:
float x

The amount of rotation.
Default Implementation:
{ mat.PreRotateX(x); }

Reimplemented from Matrix3Indirect.

361 { DelayedOp op(x); mOpQueue.Push(op); }
controller mat max min numsubs x z controller keys x z controller keys x
Definition: generics.inl:211
void Push(DelayedOp &op)
Definition: control.h:308
void PreRotateY ( float  y)
inlinevirtual
Remarks
Pre-rotate the Y axis by the specified amount.
Parameters:
float y

The amount of rotation.
Default Implementation:
{ mat.PreRotateY(y); }

Reimplemented from Matrix3Indirect.

362 { DelayedOp op(0, y); mOpQueue.Push(op); }
void Push(DelayedOp &op)
Definition: control.h:308
void PreRotateZ ( float  z)
inlinevirtual
Remarks
Pre-rotate the Z axis by the specified amount.
Parameters:
float z

The amount of rotation.
Default Implementation:
{ mat.PreRotateZ(z); }

Reimplemented from Matrix3Indirect.

363 { DelayedOp op(0, 0, z); mOpQueue.Push(op); }
void Push(DelayedOp &op)
Definition: control.h:308
controller mat max min numsubs x z controller keys x z controller keys x z
Definition: generics.inl:213
void PreRotate ( const Quat q)
inlinevirtual
Remarks
Pre-rotate the matrix by the specified quaternion.
Parameters:
const Quat& q

The quaternion to pre-rotate by.
Default Implementation:
{PreRotateMatrix(mat,q);}

Reimplemented from Matrix3Indirect.

364 { DelayedOp op(q); mOpQueue.Push(op); }
void Push(DelayedOp &op)
Definition: control.h:308