annotate src/GameManager.cpp @ 12:d45a95c697c3

add GiantrobClassfile.
author tokumoritaichirou@w-133-13-243-110.cc.u-ryukyu.ac.jp
date Wed, 03 Feb 2010 18:33:08 +0900
parents 5727d511a13a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
1 /*
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
2 * GameManager.cpp
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
3 * Martial
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
4 *
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
5 * Created by ryoma on 10/01/23.
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
6 * Copyright 2010 琉球大学. All rights reserved.
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
7 *
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
8 */
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
9
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
10 #include "GameManager.h"
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
11
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
12 /**
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
13 ここはサブクラスにまかせたい。
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
14 */
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
15
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
16 GameManager::GameManager() {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
17 //movableObjectList = new std::list<MovableObject*>();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
18 /* グラフィックスとジョイスティックを初期化 */
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
19 puts("SDL_INIT_JOYSTICK.. ");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
20 if (SDL_Init(SDL_INIT_JOYSTICK) < 0) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
21 fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
22 exit(0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
23 } else {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
24 puts("success!!");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
25 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
26
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
27 int i;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
28 printf("%d joysticks found.\n",SDL_NumJoysticks());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
29 printf("their names are:\n");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
30 for(i=0; i<SDL_NumJoysticks(); i++)
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
31 printf("%d = %s\n",i,SDL_JoystickName(i));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
32
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
33 root = new osg::Group();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
34 collisionDetector = new CollisionDetector();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
35 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
36
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
37 void GameManager::addMovableObject(MovableObject* mob) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
38 movableObjectList.push_back(mob);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
39 return;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
40 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
41
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
42 void GameManager::initStage() {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
43 osg::Geode* clothGeode = new osg::Geode();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
44 osg::Geometry* clothGeometry = new osg::Geometry();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
45 clothGeode->addDrawable(clothGeometry);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
46 //root->addChild(clothGeode);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
47
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
48 float clen;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
49 clen = 100.0;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
50 osg::Vec3Array* clothVertices = new osg::Vec3Array;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
51 clothVertices->push_back (osg::Vec3( clen, clen, 0.0));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
52 clothVertices->push_back (osg::Vec3( clen, -clen, 0.0));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
53 clothVertices->push_back (osg::Vec3( -clen, -clen, 0.0));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
54 clothVertices->push_back (osg::Vec3( -clen, clen, 0.0));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
55 clothGeometry->setVertexArray(clothVertices);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
56
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
57 osg::DrawElementsUInt* cloth =
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
58 new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
59 cloth->push_back(3);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
60 cloth->push_back(2);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
61 cloth->push_back(1);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
62 cloth->push_back(0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
63 clothGeometry->addPrimitiveSet(cloth);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
64
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
65 osg::Texture2D* clothTexture = new osg::Texture2D;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
66 clothTexture->setDataVariance(osg::Object::DYNAMIC);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
67 osg::Image* clothImage = osgDB::readImageFile("Cell 23.rgb");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
68 if (!clothImage) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
69 printf("Error!!");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
70 return;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
71 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
72 clothTexture->setImage(clothImage);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
73 osg::StateSet* stateOne = new osg::StateSet();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
74 stateOne->setTextureAttributeAndModes(0,clothTexture,osg::StateAttribute::ON);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
75 clothGeometry->setStateSet(stateOne);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
76 osg::AutoTransform* fieldForm = new osg::AutoTransform();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
77 fieldForm->addChild(clothGeode);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
78 fieldForm->setPosition(osg::Vec3(0,0,-5));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
79 root->addChild(fieldForm);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
80 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
81
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
82 void GameManager::gameStart() {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
83 puts("entory gameStart");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
84
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
85 osg::Timer_t sTick, eTick;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
86 osgViewer::CompositeViewer viewer;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
87
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
88 puts("Initialize Stage...");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
89 sTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
90
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
91 initStage();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
92
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
93 eTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
94 printf("ok.. (%.6f msec)\n",osg::Timer::instance()->delta_s(sTick, eTick)*1000.0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
95
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
96 puts("Create Avatar..");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
97
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
98 sTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
99 Robot* roboObj1 = new Robot("robo1");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
100
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
101 roboObj1->setPos(osg::Vec3(10,0,0));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
102 roboObj1->setDefaultDirection(osg::Vec3(0.0, 0.0, 90.0)); //物体のデフォルトの向き
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
103 root->addChild(roboObj1->getForm());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
104 movableObjectList.push_back(roboObj1);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
105 collisionDetector->addCollisionObject(roboObj1);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
106
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
107 eTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
108 printf("%s: created.. (%.6f msec)\n",roboObj1->getName(), osg::Timer::instance()->delta_s(sTick, eTick)*1000.0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
109
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
110 sTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
111
12
d45a95c697c3 add GiantrobClassfile.
tokumoritaichirou@w-133-13-243-110.cc.u-ryukyu.ac.jp
parents: 10
diff changeset
112 Giantarm* movObj = new Giantarm("robo2");
10
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
113 //movObj->setPos(osg::Vec3(-10,0,0));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
114 movObj->setDefaultDirection(osg::Vec3(0.0, 0.0, 90));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
115 movObj->setAvatarDirection(-1);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
116 root->addChild(movObj->getForm());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
117 movableObjectList.push_back(movObj);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
118 collisionDetector->addCollisionObject(movObj);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
119
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
120 eTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
121 printf("%s: created.. (%.6f msec)\n",movObj->getName(), osg::Timer::instance()->delta_s(sTick, eTick)*1000.0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
122
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
123 puts("Initialize Window");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
124 sTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
125
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
126 osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
127 if (!wsi) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
128 osg::notify(osg::NOTICE) << "Error, no WindowSystemInterface available, cannot create windows."<<std::endl;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
129 return;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
130 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
131
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
132 unsigned int width, height;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
133 wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, height);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
134
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
135 osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
136 traits->x = 100;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
137 traits->y = 100;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
138 traits->width = Martial::CONFIG::WINDOW_WIDTH;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
139 traits->height = Martial::CONFIG::WINDOW_HEIGHT;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
140 traits->windowDecoration = true;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
141 traits->doubleBuffer = true;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
142 traits->sharedContext = 0;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
143
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
144 osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
145 if (gc.valid()) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
146 osg::notify(osg::INFO)<<" GraphicsWindow has been created successfully."<<std::endl;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
147
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
148 // need to ensure that the window is cleared make sure that the complete window is set the correct colour
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
149 // rather than just the parts of the window that are under the camera's viewports
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
150 gc->setClearColor(osg::Vec4f(0.2f,0.2f,0.6f,1.0f));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
151 gc->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
152 } else {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
153 osg::notify(osg::NOTICE)<<" GraphicsWindow has not been created successfully."<<std::endl;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
154 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
155
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
156 eTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
157 printf("ok.. (%.6f msec)\n", osg::Timer::instance()->delta_s(sTick, eTick)*1000.0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
158
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
159 puts("Initialize View");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
160 eTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
161
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
162 EyePoint* globalEyePoint = new GlobalEyePoint();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
163 globalEyePoint->setTarget(roboObj1);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
164 globalEyePoint->setTarget(movObj);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
165
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
166 //ここは後で書き直す -> <Playerの中でsetOwnerする>
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
167 PlayerEyePoint* playerEyePoint = new PlayerEyePoint(roboObj1);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
168 playerEyePoint->setOwner(roboObj1);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
169
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
170 addMovableObject(globalEyePoint);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
171 addMovableObject(playerEyePoint);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
172
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
173 Player* player1 = new Player("Player1", roboObj1, playerEyePoint);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
174
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
175 SDL_Joystick *joy = SDL_JoystickOpen(0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
176 KeyboardEventHandler* keh = new KeyboardEventHandler();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
177
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
178 bool canUseJoy = (joy != NULL && SDL_JoystickNumHats(joy));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
179 canUseJoy = false; // joypad動かないので保留
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
180
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
181 if (canUseJoy) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
182 player1->registerJOY(joy);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
183 } else {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
184 player1->registerKEH(keh);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
185 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
186
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
187 // view one
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
188 {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
189 osgViewer::View* view = new osgViewer::View;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
190 viewer.addView(view);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
191
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
192 view->setSceneData(root);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
193 view->getCamera()->setViewport(new osg::Viewport(0,0, traits->width, traits->height));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
194 view->getCamera()->setGraphicsContext(gc.get());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
195 view->setCameraManipulator(globalEyePoint->getManpulator());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
196
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
197 // add the state manipulator
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
198 osg::ref_ptr<osgGA::StateSetManipulator> statesetManipulator = new osgGA::StateSetManipulator;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
199 statesetManipulator->setStateSet(view->getCamera()->getOrCreateStateSet());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
200 view->addEventHandler(keh);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
201 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
202
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
203 // view two
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
204 {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
205 osgViewer::View* view = new osgViewer::View;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
206 viewer.addView(view);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
207 view->setSceneData(root);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
208 view->getCamera()->setViewport(new osg::Viewport(0, traits->height/3*2, traits->width/3, traits->height/3));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
209 view->getCamera()->setGraphicsContext(gc.get());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
210 view->setCameraManipulator(playerEyePoint->getManpulator());
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
211 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
212
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
213 viewer.realize();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
214 //viewer.addEventHandler(keh);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
215
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
216 eTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
217 printf("ok.. (%.6f msec)\n", osg::Timer::instance()->delta_s(sTick, eTick)*1000.0);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
218
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
219 osg::Timer_t startFrameTick, moveFrameTick, renderFrameTick;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
220 std::list<MovableObject*>::iterator mobIter;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
221
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
222 const int SAMPLE_RATE = Martial::CONFIG::FRAME_RATE/2;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
223 int frame;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
224 float frameAverageTime, renderAvarageTime, moveAverageTime, frameTime;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
225 frame = frameAverageTime = renderAvarageTime = moveAverageTime = 0;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
226
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
227 puts("[Game Main Loop]");
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
228
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
229 //メインループ
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
230 while (!viewer.done()) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
231 startFrameTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
232
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
233 player1->frame();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
234
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
235 //SceneGraphの走査 -> 座標計算, 衝突判定
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
236 //衝突処理はcheckCollision内部で行なう?(未実装)
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
237 for(mobIter = movableObjectList.begin(); mobIter != movableObjectList.end(); ++mobIter) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
238 (*mobIter)->frame();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
239 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
240
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
241 //衝突判定 - CollisionDetector にまかせる
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
242 collisionDetector->frame();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
243
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
244 //描画 ここで一番時間がかかる
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
245 moveFrameTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
246 moveAverageTime += osg::Timer::instance()->delta_s(startFrameTick, moveFrameTick);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
247
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
248 viewer.frame();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
249
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
250 renderFrameTick = osg::Timer::instance()->tick();
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
251 renderAvarageTime += osg::Timer::instance()->delta_s(moveFrameTick, renderFrameTick);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
252
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
253 frameAverageTime += (frameTime = osg::Timer::instance()->delta_s(startFrameTick, renderFrameTick));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
254
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
255 frame++;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
256 if (Martial::TEST::SHOW_FPS) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
257 if (frame == SAMPLE_RATE) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
258 printf("\nfps: %.3f\n (move: %.6f msec, render: %.6f msec)\n\n", (float)SAMPLE_RATE/frameAverageTime,
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
259 moveAverageTime*1000.0/(float)SAMPLE_RATE, renderAvarageTime*1000.0/(float)SAMPLE_RATE);
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
260 frame = frameAverageTime = renderAvarageTime = moveAverageTime = 0;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
261 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
262 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
263
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
264 if (frameTime < Martial::CONFIG::FRAME_MIN_TIME) {
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
265 OpenThreads::Thread::microSleep(1000000.0*(Martial::CONFIG::FRAME_MIN_TIME-frameTime));
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
266 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
267 }
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
268 return;
5727d511a13a add src in Martial Project Xcode.
tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
parents:
diff changeset
269 }