annotate Renderer/Test/create_task.cc @ 758:e615e552efa5

change Test/create_task
author hiroki
date Sat, 30 Jan 2010 19:33:16 +0900
parents 5238f3e854fc
children bb47827c04c1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
1 #include <math.h>
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
2 #include <stdlib.h>
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
3 #include "SceneGraphRoot.h"
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
4 #include "MainLoop.h"
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
5 #include "create_task.h"
757
5238f3e854fc Test/create_task , create SPE task from application.
hiroki
parents: 756
diff changeset
6 #include "types.h"
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
7 #include "Func.h"
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
8
757
5238f3e854fc Test/create_task , create SPE task from application.
hiroki
parents: 756
diff changeset
9
5238f3e854fc Test/create_task , create SPE task from application.
hiroki
parents: 756
diff changeset
10 Property *property, *update_property;
5238f3e854fc Test/create_task , create SPE task from application.
hiroki
parents: 756
diff changeset
11
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
12 // prototype
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
13 static void move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
14 static void collision(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h, SceneGraphPtr tree);
758
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
15 static void createSceneGraphFromProperty(SchedTask *s, void *sgroot, void *arg1);
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
16
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
17 static void
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
18 move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h)
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
19 {
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
20 SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
21 TaskManager *manager = sgroot->tmanager;
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
22 HTaskPtr property_task = manager->create_task(PropertyTask);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
23
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
24 property_task->add_inData(property, sizeof(Property));
757
5238f3e854fc Test/create_task , create SPE task from application.
hiroki
parents: 756
diff changeset
25 property_task->add_outData(update_property, sizeof(Property));
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
26 property_task->set_cpu(SPE_ANY);
758
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
27
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
28 property_task->set_post(createSceneGraphFromProperty, update_property, sgroot);
757
5238f3e854fc Test/create_task , create SPE task from application.
hiroki
parents: 756
diff changeset
29 property_task->spawn();
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
30 }
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
31
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
32 static void
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
33 collision(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
34 SceneGraphPtr tree)
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
35 {
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
36 }
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
37
758
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
38 static void
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
39 createSceneGraphFromProperty(SchedTask *s, void *sgroot_, void *arg1)
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
40 {
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
41 SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
42 SceneGraphPtr node;
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
43
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
44 node = sgroot->createSceneGraph(update_property->name);
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
45 node->set_move_collision(move, collision);
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
46 node->xyz[0] = update_property->xyz[0];
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
47 node->xyz[1] = update_property->xyz[1];
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
48 node->xyz[2] = update_property->xyz[2];
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
49 sgroot->setSceneData(node);
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
50
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
51 Property *tmp = property;
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
52 property = update_property;
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
53 update_property = tmp;
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
54
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
55 }
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
56
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
57 static void
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
58 set_property(Property *p, SceneGraphPtr sg)
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
59 {
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
60 p->xyz[0] = sg->xyz[0];
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
61 p->xyz[1] = sg->xyz[1];
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
62 p->xyz[2] = sg->xyz[2];
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
63 p->name = sg->name;
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
64 }
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
65
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
66 MainLoopPtr
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
67 create_task::init(Viewer *sgroot, int screen_w, int screen_h)
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
68 {
758
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
69 property = (Property *)sgroot->manager->allocate(sizeof(Property));
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
70 update_property = (Property *)sgroot->manager->allocate(sizeof(Property));
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
71
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
72 SceneGraphPtr ball;
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
73
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
74 sgroot->createFromXMLfile("xml_file/Ball.xml");
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
75
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
76 ball = sgroot->createSceneGraph("Ball");
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
77 ball->set_move_collision(move, collision);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
78
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
79 ball->xyz[0] = screen_w/2;
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
80 ball->xyz[1] = screen_h/2;
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
81 ball->xyz[2] = 30.0f;
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
82
758
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
83 set_property(property, ball);
e615e552efa5 change Test/create_task
hiroki
parents: 757
diff changeset
84
756
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
85 sgroot->setSceneData(ball);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
86
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
87 return sgroot;
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
88 }
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
89
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
90 extern Application *
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
91 application() {
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
92 return new create_task();
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
93 }
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
94
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
95 const char *usr_help_str = "Usage: ./test_nogl [OPTION]\n";
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
96
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
97 extern int init(TaskManager *manager, int argc, char *argv[]);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
98 extern void task_initialize();
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
99 static void TMend(TaskManager *manager);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
100
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
101 int
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
102 TMmain(TaskManager *manager, int argc, char *argv[])
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
103 {
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
104 task_initialize();
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
105 manager->set_TMend(TMend);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
106 return init(manager, argc, argv);
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
107
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
108 }
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
109
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
110 void
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
111 TMend(TaskManager *manager)
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
112 {
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
113 printf("test_nogl end\n");
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
114 }
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
115
2575791a333a add Test/create_task {spe, task}/Property
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
116 /* end */