-#include "TestScene.hpp"\r
-#include "mof/GraphicsDevice.hpp"\r
-#include <vector>\r
-#include "mof/VertexBuffer.hpp"\r
-#include "mof/AmbientLight.hpp"\r
-#include "mof/MaterialBuilder.hpp"\r
-#include "mof/Material.hpp"\r
-#include "mof/Camera.hpp"\r
-#include "mof/Texture.hpp"\r
-#include "mof/MeshBuilder.hpp"\r
-#include "mof/Graphics3D.hpp"\r
-#include "mof/EventScheduler.hpp"\r
-#include "mof/EventCondition.hpp"\r
-#include "mof/Board.hpp"\r
-#include "mof/Font.hpp"\r
-#include "mof/streams.hpp"\r
-#include "CharacterBoard.hpp"\r
-#include <vector>\r
-#include <boost/bind.hpp>\r
-#include <math.h>\r
-#include "mof/Finalizer.hpp"\r
-#include "mof/utilities.hpp"\r
-\r
-namespace \r
-{\r
-\r
- mof::AmbientLight* m_pLight;\r
- mof::Camera* m_pCamera;\r
- std::shared_ptr<mof::Texture> m_pTexture;\r
- std::vector<::CharacterBoard*> m_modelList;\r
- mof::Graphics3D* m_pBox;\r
- mof::EventScheduler* m_pScheduler;\r
- mof::Manipulator<mof::Color4f>::Handler m_backgroundColor;\r
- mof::FrameNumber m_backgroundColorFrame;\r
- mof::tstring m_part;\r
-};\r
-\r
-\r
-\r
- \r
-namespace TestScene\r
-{\r
-\r
- void begin(){\r
- std::vector<mof::Manipulator<mof::Matrix3D>::Handler> handlerList;\r
- \r
- {\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[4];\r
- keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 25 , mof::Vector3D( mof::deg2rad(-90) , 0 , 0));\r
- keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 50 , mof::Vector3D( mof::deg2rad(-80) , 0 , 0));\r
- keyFrames[2] = std::pair<mof::FrameNumber , mof::Vector3D>( 75 , mof::Vector3D( mof::deg2rad(-25) , 0 , 0));\r
- keyFrames[3] = std::pair<mof::FrameNumber , mof::Vector3D>( 100 , mof::Vector3D( mof::deg2rad(0) , 0 , 0));\r
- mof::Manipulator<mof::Matrix3D>::Handler handler(new mof::Rotation3D(keyFrames[0] , mof::lastOf(keyFrames)));\r
- handlerList.push_back(handler);\r
- }\r
- {\r
- mof::Manipulator<mof::Matrix3D>::Handler handler(\r
- mof::makeConstantHandler(mof::Matrix3D::createTranslation(mof::Vector3D(0 , 0 , -4.5f)))\r
- );\r
- handlerList.push_back(handler);\r
- }\r
- {\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[3];\r
- keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D( 0 , mof::deg2rad(70) , 0));\r
- keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 130 , mof::Vector3D( 0 , mof::deg2rad(360) , 0));\r
- mof::Manipulator<mof::Matrix3D>::Handler handler(new mof::Rotation3D(keyFrames[0] , mof::lastOf(keyFrames)));\r
- handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Loop<mof::Matrix3D>(handler , 200));\r
- handlerList.push_back(handler);\r
- }\r
- \r
- int size = handlerList.size();\r
- handlerList.resize(size + 1);\r
-\r
- mof::tstring title[] = { _T("\82R") , _T("\94N") , _T("\91O") , _T("\82É") , _T("\8dÁ") , _T("\90Ü") , _T("\82µ") ,\r
- _T("\82½") , _T("\82q") , _T("\82o") , _T("\82f") , _T("\8aJ") , _T("\94") , _T("\82ð") , _T("\8dÄ") , _T("\8aJ") ,\r
- _T("\82µ") , _T("\82Ä") , _T("\82Ý") , _T("\82é") };\r
-\r
- for(int i = 0 ; i < 20 ; i++)\r
- {\r
- m_modelList.push_back(new ::CharacterBoard( title[i]));\r
- {\r
- mof::Manipulator<mof::Matrix3D>::Handler handler(\r
- mof::makeConstantHandler(mof::Matrix3D::createRotation(mof::Vector3D(0 , mof::deg2rad(-360.0f/20 * i) , 0)))\r
- );\r
- handlerList.at(size) = handler;\r
- }\r
- mof::Manipulator<mof::Matrix3D>::Handler handler(mof::makeCascadeHandler<mof::Matrix3D >(handlerList.front() , handlerList.back()));\r
- m_modelList.at(i)->setWorldMatrix(handler);\r
- }\r
-\r
- \r
- {\r
- mof::MeshBuilder meshBuilder( "model/demo/box.x");\r
- m_pBox = meshBuilder.construct();\r
- handlerList.clear();\r
- \r
- {\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[2];\r
- keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D( 0 , 0 , 0));\r
- keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 130 , mof::Vector3D( mof::deg2rad(360) , mof::deg2rad(360) , mof::deg2rad(360)));\r
- mof::Manipulator<mof::Matrix3D>::Handler handler(new mof::Rotation3D(keyFrames[0] , keyFrames[1]));\r
- handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Loop<mof::Matrix3D>(handler , 130));\r
- handlerList.push_back(handler);\r
- }\r
- mof::Manipulator<mof::Matrix3D>::Handler handler(mof::makeCascadeHandler<mof::Matrix3D >(handlerList.front() , handlerList.back()));\r
- m_pBox->setWorldMatrix(handler);\r
- }\r
-\r
- {\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[2];\r
- keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , 10.5f , -5));\r
- keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 130 , mof::Vector3D(0 , 1.5f , -10 ));\r
- mof::Manipulator<mof::Vector3D>::Handler handler(mof::makeKeyFrameAnimationHandler<mof::Vector3D>(keyFrames[0] , keyFrames[1]));\r
- m_pCamera->setEye(handler);\r
- }\r
- \r
- }\r
- \r
- void showTitle(){\r
- std::vector<mof::Manipulator<mof::Matrix3D>::Handler> handlerList;\r
- mof::Manipulator<mof::Matrix3D>::Handler handler;\r
- for(unsigned int i = 0 ; i < m_modelList.size() ; ++i){\r
- handlerList.clear();\r
- mof::Matrix3D matrix = m_modelList.at(i)->getWorldMatrix();\r
-\r
- {\r
- mof::Vector3D a = mof::Vector3D(1 , 0 , 0) * matrix;\r
- float rad = static_cast<float>(atan2( -a.x , -a.z));\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 20 , mof::Vector3D(0 , 0 , 0) ) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 50 , mof::Vector3D(0 , -rad , 0))\r
- };\r
- handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Rotation3D(keyFrames[0] , keyFrames[1]));\r
- handlerList.push_back(handler);\r
- }\r
- \r
- {\r
- handler = mof::makeConstantHandler(matrix);\r
- handlerList.push_back(handler);\r
- }\r
- \r
- \r
- {\r
- float y = (i > 7) ? -1.0f : 0;\r
- float x = (i > 7) ? i - 8.0f : i;\r
- mof::Vector3D position(1.0f * x - 20 , y , -5);\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , 0 , 0) ) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 50 , position - m_modelList.at(i)->getPosition())\r
- };\r
- handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Translation3D(keyFrames[0] , keyFrames[1]));\r
- handlerList.push_back(handler);\r
- }\r
- handler = mof::Manipulator<mof::Matrix3D>::Handler(\r
- mof::makeCascadeHandler<mof::Matrix3D , mof::Multiply<mof::Matrix3D>>(handlerList.front() , handlerList.back())\r
- );\r
- m_modelList.at(i)->setWorldMatrix(handler);\r
- m_modelList.at(i)->setFinishColor(70 , 20);\r
- m_modelList.at(i)->setFrameNumber(0);\r
- }\r
- \r
- \r
-\r
- {\r
- mof::Vector3D eye = m_pCamera->getEye();\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 0 , eye) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 20 , eye) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 60 , mof::Vector3D(-16 , 1.0f , eye.z + 1)) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 70 , mof::Vector3D(-14 , -0.5f , eye.z - 8 ))\r
- };\r
- mof::Manipulator<mof::Vector3D>::Handler handler(mof::makeKeyFrameAnimationHandler<mof::Vector3D>(keyFrames[0] , keyFrames[3]));\r
- m_pCamera->setEye(handler);\r
- }\r
- \r
- {\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , 0 , 0)) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 20 , mof::Vector3D(0 , 0 , 0)) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 60 , mof::Vector3D(-14 , 0.0f , 0 ))\r
- };\r
- mof::Manipulator<mof::Vector3D>::Handler handler(mof::makeKeyFrameAnimationHandler<mof::Vector3D>(keyFrames[0] , keyFrames[2]));\r
- m_pCamera->setCenter(handler);\r
- }\r
- m_pCamera->setFrameNumber(0);\r
-\r
- {\r
- std::pair<mof::FrameNumber , mof::Color4f> keyFrames[] = {\r
- std::pair<mof::FrameNumber , mof::Color4f>( 70 , mof::Color4f(mof::createColor(0 , 20 , 55)) ) ,\r
- std::pair<mof::FrameNumber , mof::Color4f>( 90 , mof::Color4f(mof::createColor(255 , 255 , 255)) )\r
- };\r
- m_backgroundColor = mof::Manipulator<mof::Color4f>::Handler(mof::makeKeyFrameAnimationHandler<mof::Color4f>(keyFrames[0] , keyFrames[1]));\r
- m_backgroundColorFrame = 0;\r
- }\r
- }\r
-\r
- void addPart(){\r
- std::vector<mof::Manipulator<mof::Matrix3D>::Handler> handlerList;\r
- mof::Manipulator<mof::Matrix3D>::Handler handler;\r
- {\r
- \r
- handlerList.clear();\r
- std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , mof::deg2rad(270) , 0) ) ,\r
- std::pair<mof::FrameNumber , mof::Vector3D>( 40 , mof::Vector3D(0 , mof::deg2rad(360) , 0))\r
- };\r
- handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Rotation3D(keyFrames[0] , keyFrames[1]));\r
- handlerList.push_back(handler);\r
-\r
- handler = mof::makeConstantHandler(mof::Matrix3D::createScaling(mof::Vector3D(4 , 1 , 1)));\r
- handlerList.push_back(handler);\r
- handler = mof::makeConstantHandler(mof::Matrix3D::createTranslation(mof::Vector3D(-10 , -2 , -5)));\r
- handlerList.push_back(handler);\r
- handler = mof::Manipulator<mof::Matrix3D>::Handler(\r
- mof::makeCascadeHandler<mof::Matrix3D , mof::Multiply<mof::Matrix3D>>(handlerList.front() , handlerList.back()));\r
- ::CharacterBoard* pPartBoard = new ::CharacterBoard( m_part);\r
- pPartBoard->setWorldMatrix(handler);\r
- pPartBoard->setPartColor(0 , 1);\r
- m_modelList.push_back(pPartBoard);\r
- }\r
- }\r
-\r
-\r
-\r
-\r
-\r
-\r
-void initialize( )\r
-{\r
- m_pLight = NULL;\r
- m_pCamera = NULL;\r
- m_pBox = NULL;\r
- m_pScheduler = NULL;\r
- m_backgroundColorFrame = 0;\r
- m_part = _T("part9");\r
- \r
- \r
-\r
- mof::GraphicsDevice::lightEnable(true);\r
- m_pLight = new mof::AmbientLight( mof::Color4f(mof::createColor(255 , 255 , 255)));\r
-\r
- m_pCamera = new mof::Camera(mof::Vector3D(0 , 0.5f , -10) , mof::Vector3D(0 , 0 , 0) , mof::Vector3D(0 , 1 , 0));\r
- m_backgroundColor = \r
- mof::Manipulator<mof::Color4f>::Handler(mof::makeConstantHandler(mof::Color4f(mof::createColor(0 , 20 , 55))));\r
-\r
- m_pScheduler = new mof::EventScheduler();\r
- m_pScheduler->addEvent( 125 , &::TestScene::showTitle );\r
- m_pScheduler->addEvent( 125+70 , &::TestScene::addPart );\r
- begin();\r
-\r
- \r
-}\r
-\r
-\r
-void finalize(){\r
- for(std::vector<::CharacterBoard*>::iterator itr = m_modelList.begin() ;\r
- itr != m_modelList.end() ;\r
- ++itr ){\r
- delete *itr;\r
- }\r
- delete m_pCamera;\r
- delete m_pBox;\r
- delete m_pScheduler;\r
- delete m_pLight;\r
- }\r
-\r
-\r
-\r
-\r
-void update(){\r
- for(std::vector<::CharacterBoard*>::iterator itr = m_modelList.begin() ;\r
- itr != m_modelList.end() ;\r
- ++itr ){\r
- (*itr)->update();\r
- }\r
- m_pBox->update();\r
- m_pScheduler->update();\r
- m_pCamera->update();\r
- m_backgroundColorFrame++;\r
-}\r
-\r
-\r
-\r
-void draw()\r
-{\r
- //m_pGraphics->setZBuffer(false);\r
- mof::GraphicsDevice::setViewTransform(m_pCamera->getViewMatrix());\r
- mof::GraphicsDevice::clearRenderTarget(m_backgroundColor->value(m_backgroundColorFrame).toColorCode());\r
- mof::GraphicsDevice::clearZBuffer();\r
- mof::GraphicsDevice::setAlphaBlendingMode(mof::GraphicsDevice::BLENDING_MODE_ALPHA);\r
- \r
- //m_pBox->draw();\r
- mof::GraphicsDevice::lightEnable(false);\r
- std::list<mof::Board*> boardList;\r
-\r
- for(std::vector<::CharacterBoard*>::iterator itr = m_modelList.begin() ;\r
- itr != m_modelList.end() ;\r
- ++itr ){\r
- (*itr)->append(boardList);\r
- }\r
-\r
- for(std::list<mof::Board*>::iterator itr = boardList.begin() ;\r
- itr != boardList.end() ;\r
- ++itr ){\r
- (*itr)->draw();\r
- }\r
-\r
-}\r
-\r
-} // namespace TestScene\r
+#include "TestScene.hpp"
+#include "mof/GraphicsDevice.hpp"
+#include <vector>
+#include "mof/VertexBuffer.hpp"
+#include "mof/AmbientLight.hpp"
+#include "mof/MaterialBuilder.hpp"
+#include "mof/Material.hpp"
+#include "mof/Camera.hpp"
+#include "mof/Texture.hpp"
+#include "mof/MeshBuilder.hpp"
+#include "mof/Graphics3D.hpp"
+#include "mof/EventScheduler.hpp"
+#include "mof/EventCondition.hpp"
+#include "mof/Board.hpp"
+#include "mof/Font.hpp"
+#include "mof/streams.hpp"
+#include "CharacterBoard.hpp"
+#include <vector>
+#include <boost/bind.hpp>
+#include <math.h>
+#include "mof/Finalizer.hpp"
+#include "mof/utilities.hpp"
+
+namespace
+{
+
+ mof::AmbientLight* m_pLight;
+ mof::Camera* m_pCamera;
+ std::shared_ptr<mof::Texture> m_pTexture;
+ std::vector<::CharacterBoard*> m_modelList;
+ mof::Graphics3D* m_pBox;
+ mof::EventScheduler* m_pScheduler;
+ mof::Manipulator<mof::Color4f>::Handler m_backgroundColor;
+ mof::FrameNumber m_backgroundColorFrame;
+ mof::tstring m_part;
+};
+
+
+
+
+namespace TestScene
+{
+
+ void begin(){
+ std::vector<mof::Manipulator<mof::Matrix3D>::Handler> handlerList;
+
+ {
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[4];
+ keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 25 , mof::Vector3D( mof::deg2rad(-90) , 0 , 0));
+ keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 50 , mof::Vector3D( mof::deg2rad(-80) , 0 , 0));
+ keyFrames[2] = std::pair<mof::FrameNumber , mof::Vector3D>( 75 , mof::Vector3D( mof::deg2rad(-25) , 0 , 0));
+ keyFrames[3] = std::pair<mof::FrameNumber , mof::Vector3D>( 100 , mof::Vector3D( mof::deg2rad(0) , 0 , 0));
+ mof::Manipulator<mof::Matrix3D>::Handler handler(new mof::Rotation3D(keyFrames[0] , mof::lastOf(keyFrames)));
+ handlerList.push_back(handler);
+ }
+ {
+ mof::Manipulator<mof::Matrix3D>::Handler handler(
+ mof::makeConstantHandler(mof::Matrix3D::createTranslation(mof::Vector3D(0 , 0 , -4.5f)))
+ );
+ handlerList.push_back(handler);
+ }
+ {
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[3];
+ keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D( 0 , mof::deg2rad(70) , 0));
+ keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 130 , mof::Vector3D( 0 , mof::deg2rad(360) , 0));
+ mof::Manipulator<mof::Matrix3D>::Handler handler(new mof::Rotation3D(keyFrames[0] , mof::lastOf(keyFrames)));
+ handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Loop<mof::Matrix3D>(handler , 200));
+ handlerList.push_back(handler);
+ }
+
+ int size = handlerList.size();
+ handlerList.resize(size + 1);
+
+ mof::tstring title[] = { _T("\82R") , _T("\94N") , _T("\91O") , _T("\82É") , _T("\8dÁ") , _T("\90Ü") , _T("\82µ") ,
+ _T("\82½") , _T("\82q") , _T("\82o") , _T("\82f") , _T("\8aJ") , _T("\94") , _T("\82ð") , _T("\8dÄ") , _T("\8aJ") ,
+ _T("\82µ") , _T("\82Ä") , _T("\82Ý") , _T("\82é") };
+
+ for(int i = 0 ; i < 20 ; i++)
+ {
+ m_modelList.push_back(new ::CharacterBoard( title[i]));
+ {
+ mof::Manipulator<mof::Matrix3D>::Handler handler(
+ mof::makeConstantHandler(mof::Matrix3D::createRotation(mof::Vector3D(0 , mof::deg2rad(-360.0f/20 * i) , 0)))
+ );
+ handlerList.at(size) = handler;
+ }
+ mof::Manipulator<mof::Matrix3D>::Handler handler(mof::makeCascadeHandler<mof::Matrix3D >(handlerList.front() , handlerList.back()));
+ m_modelList.at(i)->setWorldMatrix(handler);
+ }
+
+
+ {
+ mof::MeshBuilder meshBuilder( "model/demo/box.x");
+ m_pBox = meshBuilder.construct();
+ handlerList.clear();
+
+ {
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[2];
+ keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D( 0 , 0 , 0));
+ keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 130 , mof::Vector3D( mof::deg2rad(360) , mof::deg2rad(360) , mof::deg2rad(360)));
+ mof::Manipulator<mof::Matrix3D>::Handler handler(new mof::Rotation3D(keyFrames[0] , keyFrames[1]));
+ handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Loop<mof::Matrix3D>(handler , 130));
+ handlerList.push_back(handler);
+ }
+ mof::Manipulator<mof::Matrix3D>::Handler handler(mof::makeCascadeHandler<mof::Matrix3D >(handlerList.front() , handlerList.back()));
+ m_pBox->setWorldMatrix(handler);
+ }
+
+ {
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[2];
+ keyFrames[0] = std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , 10.5f , -5));
+ keyFrames[1] = std::pair<mof::FrameNumber , mof::Vector3D>( 130 , mof::Vector3D(0 , 1.5f , -10 ));
+ mof::Manipulator<mof::Vector3D>::Handler handler(mof::makeKeyFrameAnimationHandler<mof::Vector3D>(keyFrames[0] , keyFrames[1]));
+ m_pCamera->setEye(handler);
+ }
+
+ }
+
+ void showTitle(){
+ std::vector<mof::Manipulator<mof::Matrix3D>::Handler> handlerList;
+ mof::Manipulator<mof::Matrix3D>::Handler handler;
+ for(unsigned int i = 0 ; i < m_modelList.size() ; ++i){
+ handlerList.clear();
+ mof::Matrix3D matrix = m_modelList.at(i)->getWorldMatrix();
+
+ {
+ mof::Vector3D a = mof::Vector3D(1 , 0 , 0) * matrix;
+ float rad = static_cast<float>(atan2( -a.x , -a.z));
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {
+ std::pair<mof::FrameNumber , mof::Vector3D>( 20 , mof::Vector3D(0 , 0 , 0) ) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 50 , mof::Vector3D(0 , -rad , 0))
+ };
+ handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Rotation3D(keyFrames[0] , keyFrames[1]));
+ handlerList.push_back(handler);
+ }
+
+ {
+ handler = mof::makeConstantHandler(matrix);
+ handlerList.push_back(handler);
+ }
+
+
+ {
+ float y = (i > 7) ? -1.0f : 0;
+ float x = (i > 7) ? i - 8.0f : i;
+ mof::Vector3D position(1.0f * x - 20 , y , -5);
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {
+ std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , 0 , 0) ) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 50 , position - m_modelList.at(i)->getPosition())
+ };
+ handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Translation3D(keyFrames[0] , keyFrames[1]));
+ handlerList.push_back(handler);
+ }
+ handler = mof::Manipulator<mof::Matrix3D>::Handler(
+ mof::makeCascadeHandler<mof::Matrix3D , mof::Multiply<mof::Matrix3D>>(handlerList.front() , handlerList.back())
+ );
+ m_modelList.at(i)->setWorldMatrix(handler);
+ m_modelList.at(i)->setFinishColor(70 , 20);
+ m_modelList.at(i)->setFrameNumber(0);
+ }
+
+
+
+ {
+ mof::Vector3D eye = m_pCamera->getEye();
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {
+ std::pair<mof::FrameNumber , mof::Vector3D>( 0 , eye) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 20 , eye) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 60 , mof::Vector3D(-16 , 1.0f , eye.z + 1)) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 70 , mof::Vector3D(-14 , -0.5f , eye.z - 8 ))
+ };
+ mof::Manipulator<mof::Vector3D>::Handler handler(mof::makeKeyFrameAnimationHandler<mof::Vector3D>(keyFrames[0] , keyFrames[3]));
+ m_pCamera->setEye(handler);
+ }
+
+ {
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {
+ std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , 0 , 0)) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 20 , mof::Vector3D(0 , 0 , 0)) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 60 , mof::Vector3D(-14 , 0.0f , 0 ))
+ };
+ mof::Manipulator<mof::Vector3D>::Handler handler(mof::makeKeyFrameAnimationHandler<mof::Vector3D>(keyFrames[0] , keyFrames[2]));
+ m_pCamera->setCenter(handler);
+ }
+ m_pCamera->setFrameNumber(0);
+
+ {
+ std::pair<mof::FrameNumber , mof::Color4f> keyFrames[] = {
+ std::pair<mof::FrameNumber , mof::Color4f>( 70 , mof::Color4f(mof::createColor(0 , 20 , 55)) ) ,
+ std::pair<mof::FrameNumber , mof::Color4f>( 90 , mof::Color4f(mof::createColor(255 , 255 , 255)) )
+ };
+ m_backgroundColor = mof::Manipulator<mof::Color4f>::Handler(mof::makeKeyFrameAnimationHandler<mof::Color4f>(keyFrames[0] , keyFrames[1]));
+ m_backgroundColorFrame = 0;
+ }
+ }
+
+ void addPart(){
+ std::vector<mof::Manipulator<mof::Matrix3D>::Handler> handlerList;
+ mof::Manipulator<mof::Matrix3D>::Handler handler;
+ {
+
+ handlerList.clear();
+ std::pair<mof::FrameNumber , mof::Vector3D> keyFrames[] = {
+ std::pair<mof::FrameNumber , mof::Vector3D>( 0 , mof::Vector3D(0 , mof::deg2rad(270) , 0) ) ,
+ std::pair<mof::FrameNumber , mof::Vector3D>( 40 , mof::Vector3D(0 , mof::deg2rad(360) , 0))
+ };
+ handler = mof::Manipulator<mof::Matrix3D>::Handler(new mof::Rotation3D(keyFrames[0] , keyFrames[1]));
+ handlerList.push_back(handler);
+
+ handler = mof::makeConstantHandler(mof::Matrix3D::createScaling(mof::Vector3D(4 , 1 , 1)));
+ handlerList.push_back(handler);
+ handler = mof::makeConstantHandler(mof::Matrix3D::createTranslation(mof::Vector3D(-10 , -2 , -5)));
+ handlerList.push_back(handler);
+ handler = mof::Manipulator<mof::Matrix3D>::Handler(
+ mof::makeCascadeHandler<mof::Matrix3D , mof::Multiply<mof::Matrix3D>>(handlerList.front() , handlerList.back()));
+ ::CharacterBoard* pPartBoard = new ::CharacterBoard( m_part);
+ pPartBoard->setWorldMatrix(handler);
+ pPartBoard->setPartColor(0 , 1);
+ m_modelList.push_back(pPartBoard);
+ }
+ }
+
+
+
+
+
+
+void initialize( )
+{
+ m_pLight = NULL;
+ m_pCamera = NULL;
+ m_pBox = NULL;
+ m_pScheduler = NULL;
+ m_backgroundColorFrame = 0;
+ m_part = _T("part9");
+
+
+
+ mof::GraphicsDevice::lightEnable(true);
+ m_pLight = new mof::AmbientLight( mof::Color4f(mof::createColor(255 , 255 , 255)));
+
+ m_pCamera = new mof::Camera(mof::Vector3D(0 , 0.5f , -10) , mof::Vector3D(0 , 0 , 0) , mof::Vector3D(0 , 1 , 0));
+ m_backgroundColor =
+ mof::Manipulator<mof::Color4f>::Handler(mof::makeConstantHandler(mof::Color4f(mof::createColor(0 , 20 , 55))));
+
+ m_pScheduler = new mof::EventScheduler();
+ m_pScheduler->addEvent( 125 , &::TestScene::showTitle );
+ m_pScheduler->addEvent( 125+70 , &::TestScene::addPart );
+ begin();
+
+
+}
+
+
+void finalize(){
+ for(std::vector<::CharacterBoard*>::iterator itr = m_modelList.begin() ;
+ itr != m_modelList.end() ;
+ ++itr ){
+ delete *itr;
+ }
+ delete m_pCamera;
+ delete m_pBox;
+ delete m_pScheduler;
+ delete m_pLight;
+ }
+
+
+
+
+void update(){
+ for(std::vector<::CharacterBoard*>::iterator itr = m_modelList.begin() ;
+ itr != m_modelList.end() ;
+ ++itr ){
+ (*itr)->update();
+ }
+ m_pBox->update();
+ m_pScheduler->update();
+ m_pCamera->update();
+ m_backgroundColorFrame++;
+}
+
+
+
+void draw()
+{
+ //m_pGraphics->setZBuffer(false);
+ mof::GraphicsDevice::setViewTransform(m_pCamera->getViewMatrix());
+ mof::GraphicsDevice::clearRenderTarget(m_backgroundColor->value(m_backgroundColorFrame).toColorCode());
+ mof::GraphicsDevice::clearZBuffer();
+ mof::GraphicsDevice::setAlphaBlendingMode(mof::GraphicsDevice::BLENDING_MODE_ALPHA);
+
+ //m_pBox->draw();
+ mof::GraphicsDevice::lightEnable(false);
+ std::list<mof::Board*> boardList;
+
+ for(std::vector<::CharacterBoard*>::iterator itr = m_modelList.begin() ;
+ itr != m_modelList.end() ;
+ ++itr ){
+ (*itr)->append(boardList);
+ }
+
+ for(std::list<mof::Board*>::iterator itr = boardList.begin() ;
+ itr != boardList.end() ;
+ ++itr ){
+ (*itr)->draw();
+ }
+
+}
+
+} // namespace TestScene