Mercurial > hg > Members > kono > Cerium
annotate TaskManager/Test/test_render/SceneGraph.h @ 224:ebfb9e389716
SceneGraph.cpp xmlcreate
author | tkaito@nw0534.st.ie.u-ryukyu.ac.jp |
---|---|
date | Tue, 10 Feb 2009 20:45:51 +0900 |
parents | 7ca6a2ef5be9 |
children | 401b55a4a4dd |
rev | line source |
---|---|
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
1 #ifndef INCLUDED_SCENE_GRAPH |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
2 #define INCLUDED_SCENE_GRAPH |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
3 |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
4 #ifndef INCLUDED_POLYGON |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
5 # include "polygon.h" |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
6 #endif |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
7 |
140 | 8 #ifndef INCLUDED_PAD |
9 # include "Pad.h" | |
10 #endif | |
11 | |
138 | 12 class SceneGraph; |
13 | |
14 typedef void (*move_func)(SceneGraph* node, int screen_w, int screen_h); | |
15 typedef void (*collision_func)(SceneGraph* node, int screen_w, int screen_h, | |
16 SceneGraph* tree); | |
17 typedef SceneGraph* SceneGraphPtr; | |
18 | |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
19 class SceneGraph : public Polygon { |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
20 public: |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
21 SceneGraph(void); |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
22 SceneGraph(xmlNodePtr surface); |
215
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
23 SceneGraph(SceneGraphPtr orig); |
140 | 24 ~SceneGraph(void); |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
25 |
138 | 26 // Node がもつ状態変数(というべきか否か |
27 // xyz,angle ぐらいあればおk? | |
28 float stack_xyz[3]; | |
29 float stack_angle[3]; | |
30 | |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
31 // xml ファイルから生成した時のオブジェクトリスト |
195 | 32 SceneGraphPtr next; |
33 SceneGraphPtr prev; | |
34 SceneGraphPtr last; | |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
35 |
138 | 36 // Tree Structure |
195 | 37 SceneGraphPtr parent; |
38 SceneGraphPtr brother; | |
39 SceneGraphPtr children; | |
40 SceneGraphPtr lastChild; | |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
41 |
195 | 42 // Tree から削除されていたら 1 をセット。default = 0 |
43 int flag_remove; | |
140 | 44 |
202
3f4c6a75d7e0
fix SceneGraphIterator::hasNext(), next()
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
199
diff
changeset
|
45 // SceneGraph ID (SGList.h) |
3f4c6a75d7e0
fix SceneGraphIterator::hasNext(), next()
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
199
diff
changeset
|
46 int sgid; |
3f4c6a75d7e0
fix SceneGraphIterator::hasNext(), next()
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
199
diff
changeset
|
47 |
3f4c6a75d7e0
fix SceneGraphIterator::hasNext(), next()
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
199
diff
changeset
|
48 // この SceneGraph は描画するものかどうか (0:しない 1:する |
3f4c6a75d7e0
fix SceneGraphIterator::hasNext(), next()
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
199
diff
changeset
|
49 int flag_drawable; |
3f4c6a75d7e0
fix SceneGraphIterator::hasNext(), next()
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
199
diff
changeset
|
50 |
215
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
51 // anime frame num |
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
52 int frame; |
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
53 |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
54 // 関数ポインタ |
138 | 55 move_func move; |
56 collision_func collision; | |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
57 |
215
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
58 // desutroctor で呼ばれる |
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
59 void (SceneGraph::*finalize)(void); |
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
60 |
140 | 61 void init(void); |
215
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
62 void finalize_original(void); |
7ca6a2ef5be9
fix SceneGraph Constructor, Destructor
gongo@gendarme.local
parents:
212
diff
changeset
|
63 void finalize_copy(void); |
138 | 64 void move_execute(int screen_w, int screen_h); |
195 | 65 void collision_check(int screen_w, int screen_h, SceneGraphPtr tree); |
138 | 66 void all_execute(int screen_w, int screen_h); |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
67 |
195 | 68 void add_next(SceneGraphPtr next); |
69 SceneGraphPtr addChild(SceneGraphPtr child); | |
70 SceneGraphPtr addBrother(SceneGraphPtr bro); | |
71 SceneGraphPtr clone(void); | |
72 SceneGraphPtr searchSceneGraph(char *name); | |
73 void set_move_collision(SceneGraphPtr node, | |
138 | 74 move_func new_move, collision_func new_collision); |
142 | 75 void set_move_collision(move_func new_move, collision_func new_collision); |
195 | 76 void remove(void); |
199
eb20274baa7c
add SceneGraph(ieshoot), add SystemSceneGraph(Camera)
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
195
diff
changeset
|
77 SceneGraphPtr realRemoveFromTree(SceneGraphPtr tree); |
eb20274baa7c
add SceneGraph(ieshoot), add SystemSceneGraph(Camera)
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
195
diff
changeset
|
78 SceneGraphPtr realRemoveFromList(SceneGraphPtr list); |
195 | 79 int isRemoved(void); |
80 | |
180
5cde66c926b4
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
142
diff
changeset
|
81 static void createFromXMLfile(const char *); |
195 | 82 static SceneGraphPtr createSceneGraph(int id); |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
83 |
212 | 84 void translate(float x, float y, float z); |
85 void translateX(float x); | |
86 void translateY(float y); | |
87 void translateZ(float z); | |
88 | |
89 | |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
90 void tree_check(void); |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
91 void print_member(void); |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
92 void get_data(xmlNodePtr cur); |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
93 void delete_data(void); |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
94 }; |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
95 |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
96 #endif |
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
97 |
140 | 98 // オリジナル (Linked List) |
137
6cf991f28c6c
SceneGraphPack の代わりに、今は SceneGraph をそのまま使う様に設定。
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents:
diff
changeset
|
99 extern SceneGraphPtr scene_graph; |
140 | 100 |
101 // 描画用 (同じオブジェクトが複数ある) Tree | |
102 extern SceneGraphPtr scene_graph_view; |