OSDN Git Service

fix CMakeList.txt for windows
[moflib/moflib.git] / saisei-1.0 / rpg / rpg / TestScene.cpp
index 6ebb8dc..588dc86 100644 (file)
-#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