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...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 
- Protected Attributes inherited from Matrix3Indirect
Matrix3 mat
 

Member Typedef Documentation

Constructor & Destructor Documentation

DelayedMatrix3 ( )
inline
325  : Matrix3Indirect()
326  , mMatInitialized(false)
327  , mOpQueue()
328  {}
Matrix3Indirect()
Definition: control.h:220
DelayedMatrix3 ( const DelayedMatrix3 src)
inline
330  : Matrix3Indirect(src.mat)
331  , mMatInitialized(src.mMatInitialized) {
332  mOpQueue = src.mOpQueue; }
Matrix3 mat
Definition: control.h:281
Matrix3Indirect()
Definition: control.h:220

Member Function Documentation

void EvalMat ( )
inline
334  {
335  if (!mMatInitialized) {
336  InitializeMat();
337  mMatInitialized = true;
338  }
339  while (mOpQueue.QCount() > 0) {
340  DelayedOp& op = mOpQueue.Shift();
341  switch (op.code) {
343  mat.PreTranslate(op.arg.Vector());
344  break;
346  mat.PreRotateX(op.arg.x);
347  break;
349  mat.PreRotateY(op.arg.y);
350  break;
352  mat.PreRotateZ(op.arg.z);
353  break;
355  PreRotateMatrix(mat, op.arg);
356  break;
357  }
358  }
359  return; }
int QCount() const
Definition: control.h:319
void PreTranslate(const Point3 &p)
void PreRotateMatrix(Matrix3 &mat, const Quat &q)
void PreRotateZ(float angle)
Matrix3 mat
Definition: control.h:281
void PreRotateX(float angle)
void PreRotateY(float angle)
DelayedOp & Shift()
Definition: control.h:320
Definition: control.h:293
Definition: control.h:289
virtual void InitializeMat()
Definition: control.h:362
void EvalMat ( ) const
inline
360 { const_cast<DelayedMatrix3*>(this)->EvalMat(); }
void EvalMat()
Definition: control.h:334
Definition: control.h:284
size_t PendingOps ( ) const
inline
361 { return mOpQueue.QCount(); }
int QCount() const
Definition: control.h:319
virtual void InitializeMat ( )
inlinevirtual

Reimplemented in DelayedNodeMat.

362  {
364  mMatInitialized = true; };
Matrix3 mat
Definition: control.h:281
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.

367  {
368  mat = m;
369  mMatInitialized = true;
370  mOpQueue.Clear(); }
Matrix3 mat
Definition: control.h:281
void Clear()
Definition: control.h:318
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.

372 { EvalMat(); return mat; }
Matrix3 mat
Definition: control.h:281
void EvalMat()
Definition: control.h:334
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.

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

374 { 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:321
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.

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

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

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