#include <control.h>
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 Matrix3Indirect * | Clone () const |
const Matrix3 & | operator() () const |
void | PreTranslate (const Point3 &p) |
void | PreRotateX (float x) |
void | PreRotateY (float y) |
void | PreRotateZ (float z) |
void | PreRotate (const Quat &q) |
DelayedMatrix3 | ( | ) | [inline] |
: Matrix3Indirect() , mMatInitialized(false) , mOpQueue() {}
DelayedMatrix3 | ( | const DelayedMatrix3 & | src | ) | [inline] |
: Matrix3Indirect(src.mat) , mMatInitialized(src.mMatInitialized) { mOpQueue = src.mOpQueue; }
void EvalMat | ( | ) | [inline] |
{ if (!mMatInitialized) { InitializeMat(); mMatInitialized = true; } while (mOpQueue.QCount() > 0) { DelayedOp& op = mOpQueue.Shift(); switch (op.code) { case DelayedOp::kPreTrans: mat.PreTranslate(op.arg.Vector()); break; case DelayedOp::kPreRotateX: mat.PreRotateX(op.arg.x); break; case DelayedOp::kPreRotateY: mat.PreRotateY(op.arg.y); break; case DelayedOp::kPreRotateZ: mat.PreRotateZ(op.arg.z); break; case DelayedOp::kPreRotate: PreRotateMatrix(mat, op.arg); break; } } return; }
void EvalMat | ( | ) | const [inline] |
{ const_cast<DelayedMatrix3*>(this)->EvalMat(); }
size_t PendingOps | ( | ) | const [inline] |
{ return mOpQueue.QCount(); }
virtual void InitializeMat | ( | ) | [inline, virtual] |
Reimplemented in DelayedNodeMat.
{ mat.IdentityMatrix(); mMatInitialized = true; };
void Set | ( | const Matrix3 & | m | ) | [inline, virtual] |
Reimplemented from Matrix3Indirect.
Reimplemented in DelayedNodeMat.
CoreExport Matrix3Indirect* Clone | ( | ) | const [virtual] |
Reimplemented from Matrix3Indirect.
Reimplemented in DelayedNodeMat.
const Matrix3& operator() | ( | ) | const [inline, virtual] |
Reimplemented from Matrix3Indirect.
void PreTranslate | ( | const Point3 & | p | ) | [inline, virtual] |
Reimplemented from Matrix3Indirect.
{ DelayedOp op(p); mOpQueue.Push(op); }
void PreRotateX | ( | float | x | ) | [inline, virtual] |
Reimplemented from Matrix3Indirect.
{ DelayedOp op(x); mOpQueue.Push(op); }
void PreRotateY | ( | float | y | ) | [inline, virtual] |
Reimplemented from Matrix3Indirect.
{ DelayedOp op(0, y); mOpQueue.Push(op); }
void PreRotateZ | ( | float | z | ) | [inline, virtual] |
Reimplemented from Matrix3Indirect.
{ DelayedOp op(0, 0, z); mOpQueue.Push(op); }
void PreRotate | ( | const Quat & | q | ) | [inline, virtual] |
Reimplemented from Matrix3Indirect.
{ DelayedOp op(q); mOpQueue.Push(op); }