annotate Renderer/test_render/SceneGraph.h @ 283:55ea4465b1a2

fix test_render
author e065746@localhost.localdomain
date Fri, 05 Jun 2009 16:49:12 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
1 #ifndef INCLUDED_SCENE_GRAPH
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
2 #define INCLUDED_SCENE_GRAPH
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
3
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
4 #ifndef INCLUDED_POLYGON
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
5 # include "polygon.h"
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
6 #endif
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
7
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
8 #ifndef INCLUDED_PAD
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
9 # include "Pad.h"
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
10 #endif
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
11
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
12 class SceneGraph;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
13
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
14 typedef void (*move_func)(SceneGraph* node, int screen_w, int screen_h);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
15 typedef void (*collision_func)(SceneGraph* node, int screen_w, int screen_h,
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
16 SceneGraph* tree);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
17 typedef SceneGraph* SceneGraphPtr;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
18
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
19 class SceneGraph : public Polygon {
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
20 public:
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
21 SceneGraph(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
22 SceneGraph(xmlNodePtr surface);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
23 SceneGraph(SceneGraphPtr orig);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
24 ~SceneGraph(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
25
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
26 // Node がもつ状態変数(というべきか否か
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
27 // xyz,angle ぐらいあればおk?
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
28 float stack_xyz[3];
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
29 float stack_angle[3];
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
30
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
31 // xml ファイルから生成した時のオブジェクトリスト
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
32 SceneGraphPtr next;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
33 SceneGraphPtr prev;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
34 SceneGraphPtr last;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
35
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
36 // Tree Structure
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
37 SceneGraphPtr parent;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
38 SceneGraphPtr brother;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
39 SceneGraphPtr children;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
40 SceneGraphPtr lastChild;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
41
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
42 // Tree から削除されていたら 1 をセット。default = 0
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
43 int flag_remove;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
44
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
45 // SceneGraph ID (SGList.h)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
46 int sgid;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
47
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
48 // この SceneGraph は描画するものかどうか (0:しない 1:する
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
49 int flag_drawable;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
50
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
51 // anime frame num
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
52 int frame;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
53
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
54 // 関数ポインタ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
55 move_func move;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
56 collision_func collision;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
57
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
58 // desutroctor で呼ばれる
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
59 void (SceneGraph::*finalize)(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
60
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
61 void init(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
62 void finalize_original(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
63 void finalize_copy(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
64 void move_execute(int screen_w, int screen_h);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
65 void collision_check(int screen_w, int screen_h, SceneGraphPtr tree);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
66 void all_execute(int screen_w, int screen_h);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
67
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
68 void add_next(SceneGraphPtr next);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
69 SceneGraphPtr addChild(SceneGraphPtr child);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
70 SceneGraphPtr addBrother(SceneGraphPtr bro);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
71 SceneGraphPtr clone(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
72 SceneGraphPtr clone(void *buf);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
73 SceneGraphPtr searchSceneGraph(const char *name);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
74 void set_move_collision(SceneGraphPtr node,
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
75 move_func new_move, collision_func new_collision);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
76 void set_move_collision(move_func new_move, collision_func new_collision);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
77 void remove(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
78 SceneGraphPtr realRemoveFromTree(SceneGraphPtr tree);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
79 SceneGraphPtr realRemoveFromList(SceneGraphPtr list);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
80 int isRemoved(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
81
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
82 static void createFromXMLfile(const char *);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
83 static SceneGraphPtr createSceneGraph(int id);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
84
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
85 void translate(float x, float y, float z);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
86 void translateX(float x);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
87 void translateY(float y);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
88 void translateZ(float z);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
89
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
90
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
91 void tree_check(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
92 void print_member(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
93 void get_data(xmlNodePtr cur);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
94 void delete_data(void);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
95 };
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
96
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
97 #endif
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
98
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
99 // オリジナル (Linked List)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
100 extern SceneGraphPtr scene_graph;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
101
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
102 // 描画用 (同じオブジェクトが複数ある) Tree
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
103 extern SceneGraphPtr scene_graph_view;