Mercurial > hg > Members > e075743
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 |
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 } |