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
314  : Matrix3Indirect()
315  , mMatInitialized(false)
316  , mOpQueue()
317  {}
Matrix3Indirect()
Definition: control.h:209
DelayedMatrix3 ( const DelayedMatrix3 src)
inline
319  : Matrix3Indirect(src.mat)
320  , mMatInitialized(src.mMatInitialized) {
321  mOpQueue = src.mOpQueue; }
Matrix3 mat
Definition: control.h:270
Matrix3Indirect()
Definition: control.h:209

Member Function Documentation

void EvalMat ( )
inline
323  {
324  if (!mMatInitialized) {
325  InitializeMat();
326  mMatInitialized = true;
327  }
328  while (mOpQueue.QCount() > 0) {
329  DelayedOp& op = mOpQueue.Shift();
330  switch (op.code) {
332  mat.PreTranslate(op.arg.Vector());
333  break;
335  mat.PreRotateX(op.arg.x);
336  break;
338  mat.PreRotateY(op.arg.y);
339  break;
341  mat.PreRotateZ(op.arg.z);
342  break;
344  PreRotateMatrix(mat, op.arg);
345  break;
346  }
347  }
348  return; }
int QCount() const
Definition: control.h:308
void PreTranslate(const Point3 &p)
void PreRotateMatrix(Matrix3 &mat, const Quat &q)
void PreRotateZ(float angle)
Matrix3 mat
Definition: control.h:270
void PreRotateX(float angle)
void PreRotateY(float angle)
DelayedOp & Shift()
Definition: control.h:309
Definition: control.h:282
Definition: control.h:278
virtual void InitializeMat()
Definition: control.h:351
void EvalMat ( ) const
inline
349 { const_cast<DelayedMatrix3*>(this)->EvalMat(); }
void EvalMat()
Definition: control.h:323
Definition: control.h:273
size_t PendingOps ( ) const
inline
350 { return mOpQueue.QCount(); }
int QCount() const
Definition: control.h:308
virtual void InitializeMat ( )
inlinevirtual

Reimplemented in DelayedNodeMat.

351  {
353  mMatInitialized = true; };
Matrix3 mat
Definition: control.h:270
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.

356  {
357  mat = m;
358  mMatInitialized = true;
359  mOpQueue.Clear(); }
Matrix3 mat
Definition: control.h:270
void Clear()
Definition: control.h:307
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.

361 { EvalMat(); return mat; }
Matrix3 mat
Definition: control.h:270
void EvalMat()
Definition: control.h:323
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.

362 { DelayedOp op(p); mOpQueue.Push(op); }
void Push(DelayedOp &op)
Definition: control.h:310
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.

363 { 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:310
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.

364 { DelayedOp op(0, y); mOpQueue.Push(op); }
void Push(DelayedOp &op)
Definition: control.h:310
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.

365 { DelayedOp op(0, 0, z); mOpQueue.Push(op); }
void Push(DelayedOp &op)
Definition: control.h:310
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.

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