#ifndef _PROTO_TESTOBJECT_HPP_ #define _PROTO_TESTOBJECT_HPP_ #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif #ifndef _COMMON_BITMAP_HPP_ #include #endif #ifndef _ENGINE_VECTOR3D_HPP_ #include #endif #ifndef _ENGINE_TEXTURE_HPP_ #include #endif #ifndef _PROTO_PUREOBJECT_HPP_ #include #endif class TestObject : public PureObject { public: TestObject(void); TestObject(const Vector3D &vector3D,UINT id=0); virtual ~TestObject(); Point3D &operator[](unsigned short index); void setVector(const Vector3D &vector3D); const Vector3D &getVector(void)const; const Vector3D &getInitVector(void)const; void setTexture(SmartPointer &textureBitmap,bool ownIt=false); const SmartPointer &getTexture(void)const; virtual void rotate(const PureAngle &pureAngle,RotationMatrix::Orientation orientation); virtual void translate(const Point &uvPoint,TranslationMatrix::Orientation orientation); virtual void map(SmartPointer &displayBitmap); virtual void normalize(void); virtual bool isInView(SmartPointer &displayBitmap); private: TestObject(const TestObject &someTestObject); TestObject &operator=(const TestObject &someTestObject); SmartPointer mTextureBitmap; Vector3D mVector3D; Vector3D mInitVector3D; }; inline TestObject::TestObject(void) { } inline TestObject::TestObject(const Vector3D &vector3D,UINT id) : PureObject(id), mVector3D(vector3D), mInitVector3D(vector3D) { } inline TestObject::TestObject(const TestObject &someTestObject) { // private implementation *this=someTestObject; } inline TestObject::~TestObject() { } inline Point3D &TestObject::operator[](unsigned short index) { return mVector3D[index]; } inline TestObject &TestObject::operator=(const TestObject &someTestObject) { mVector3D=someTestObject.mVector3D; mTextureBitmap=someTestObject.mTextureBitmap; setState(someTestObject.getState()); setID(someTestObject.getID()); return *this; } inline void TestObject::setVector(const Vector3D &vector3D) { mVector3D=vector3D; } inline const Vector3D &TestObject::getVector(void)const { return mVector3D; } inline const Vector3D &TestObject::getInitVector(void)const { return mInitVector3D; } inline void TestObject::setTexture(SmartPointer &textureBitmap,bool ownIt) { mTextureBitmap=textureBitmap; if(ownIt)mTextureBitmap.disposition(PointerDisposition::Delete); } inline const SmartPointer &TestObject::getTexture(void)const { return mTextureBitmap; } // virtuals inline void TestObject::map(SmartPointer &displayBitmap) { Texture textureMapper(mVector3D,*mTextureBitmap,*displayBitmap); textureMapper.mapTexture(); // displayBitmap->line(displayBitmap->cameraPoint(),Point3D(0,0,0),128); } inline void TestObject::rotate(const PureAngle &pureAngle,RotationMatrix::Orientation orientation) { #if 0 RotationMatrix rotationMatrix; rotationMatrix.orientation(orientation); rotationMatrix.angle(pureAngle); rotationMatrix.evaluate(mVector3D[0]); rotationMatrix.evaluate(mVector3D[1]); rotationMatrix.evaluate(mVector3D[2]); rotationMatrix.evaluate(mVector3D[3]); #endif } inline void TestObject::translate(const Point &uvPoint,TranslationMatrix::Orientation orientation) { TranslationMatrix translationMatrix; translationMatrix.orientation(orientation); translationMatrix.uvPoint(uvPoint); translationMatrix.evaluate(mVector3D[0]); translationMatrix.evaluate(mVector3D[1]); translationMatrix.evaluate(mVector3D[2]); translationMatrix.evaluate(mVector3D[3]); } inline void TestObject::normalize(void) { mVector3D.normalize(); } inline bool TestObject::isInView(SmartPointer &displayBitmap) { return displayBitmap->isInView(mVector3D); } #endif