annotate Renderer/Test/send_linda.cc @ 671:f42b303044f7

fix several Renderer/Test with (void*)sgroot.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 05 Dec 2009 17:26:58 +0900
parents 0eed1fa290c1
children 4dc02d3e98bb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdlib.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <stdio.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include <string.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include <fcntl.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 #include <sys/types.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 #include <sys/mman.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 #include <sys/stat.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 #include <unistd.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 #include <arpa/inet.h>
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
10 #include <rpc/types.h>
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
11 #include <rpc/xdr.h>
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 #include "SceneGraphRoot.h"
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 #include "lindaapi.h"
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 #include "send_linda.h"
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 #define HOSTNAME "localhost"
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 #define PORT_NUM 10000
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 #define LISTEN_PORT 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 #define MULTI_NUM 10
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
20 #define SEND_DATA_SIZE sizeof(float) * 6
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
21
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
22 void
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
23 send_position(SceneGraphPtr node)
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
24 {
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
25 char *data;
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
26 if ((data = (char *)psx_reply(node->seq)) == NULL) {
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
27 //float send_data[6]; // xyz[3] and angle[3]
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
28 int tapleid = node->id * 10 + 1;
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
29 int fd = *(int*)node->propertyptr;
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
30
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
31 // XDRの準備
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
32 XDR xdrs;
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
33 char send_data[SEND_DATA_SIZE];
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
34 xdrmem_create(&xdrs, send_data, SEND_DATA_SIZE, XDR_ENCODE);
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
35
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
36 for (int i = 0; i < 3; i ++) {
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
37 xdr_float(&xdrs, &node->xyz[i]);
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
38 }
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
39 for (int i = 0; i < 3; i ++) {
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
40 xdr_float(&xdrs, &node->angle[i]);
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
41 }
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
42 node->seq = psx_in(fd, tapleid);
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
43 psx_out(fd, tapleid, (unsigned char *)send_data, SEND_DATA_SIZE);
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
44 psx_free(data);
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
45 }
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
46 }
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 void
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
49 root_move(SceneGraphPtr node, void *sgroot_, int w, int h)
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 {
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
51 SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 Pad *pad = sgroot->getController();
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
53 int flag = 0;
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 if (pad->right.isHold() || pad->left.isHold()) {
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
55 if (pad->right.isHold()) {
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
56 node->xyz[0] += 5.0f;
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
57 flag = 1;
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
58 } else if (pad->left.isHold()) {
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
59 node->xyz[0] -= 5.0f;
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
60 flag = 1;
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
61 }
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 if (pad->down.isHold() || pad->up.isHold() ) {
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
65 if (pad->down.isHold()) {
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
66 node->xyz[1] += 5.0f;
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
67 flag = 1;
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
68 } else if (pad->up.isHold()) {
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
69 node->xyz[1] -= 5.0f;
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
70 flag = 1;
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
71 }
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
74 /*
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 ここでキー入力を向こうに送る
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
76 */
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
77 if (flag) {
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
78 send_position(node);
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
79 }
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 void
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
83 root_collision(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree)
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 void
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
88 move(SceneGraphPtr node, void *sgroot_, int w, int h)
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 void
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
93 collision(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree)
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 void *
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 file_map(const char *filename, int *size) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 int fd;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 void *addr;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 struct stat sb;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 if ((fd = open(filename, O_RDONLY)) == -1) {
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
104 fprintf(stderr, "Can't open %s\n", filename);
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
105 perror(NULL);
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 if (fstat(fd, &sb) == -1) {
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
108 fprintf(stderr, "Can't fstat %s\n", filename);
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
109 perror(NULL);
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 *size = sb.st_size;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 addr = mmap(NULL, *size, PROT_READ, MAP_PRIVATE, fd, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 if (addr == MAP_FAILED) {
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
114 perror("mmap error\n");
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
115 exit(EXIT_FAILURE);
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 close(fd);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 return addr;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 int get_serial_id(int fd) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 char *data;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 int serial;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 int seq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 seq = psx_in(fd, 65535);
587
bdeb424ce649 dynamic work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 586
diff changeset
130 do {
bdeb424ce649 dynamic work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 586
diff changeset
131 psx_sync_n();
bdeb424ce649 dynamic work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 586
diff changeset
132 data = (char *)psx_reply(seq);
bdeb424ce649 dynamic work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 586
diff changeset
133 } while (data == 0);
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 serial = atoi(data + LINDA_HEADER_SIZE);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 psx_free(data);
593
6f741ab60749 sending and moving of multi xml work (linda)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 592
diff changeset
136 printf("serial id = %d\n", serial);
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 return serial;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 send_xml(int tspace, int xml_id, void *addr, int size) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 psx_out(tspace, xml_id, (unsigned char *)addr, size);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 psx_sync_n();
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 static char *xml;
655
0eed1fa290c1 fix on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 610
diff changeset
148 static const char *linda = HOSTNAME;
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 MainLoopPtr
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
151 send_linda::init(Viewer *sgr, int screen_w, int screen_h)
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 void *addr;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 int size;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 int tspace;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 int serial;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 int xml_id;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158
587
bdeb424ce649 dynamic work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 586
diff changeset
159
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
160 // ここら辺長ったるいから、関数で分けるべきか...
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
161
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
162 // root オブジェクト作成
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
163 SceneGraphPtr root = sgr->createSceneGraph();
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
164 // root_moveはコントローラーの入力で動き、座標をLinda Serverにout
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 root->set_move_collision(root_move, root_collision);
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
166
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
167 // XMLをメモリにmapして、オブジェクト生成
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
168 addr = file_map(xml, &size);
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
169 SceneGraphPtr sgp = sgr->createSceneGraph();
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
170 sgr->createFromXMLmemory(sgp, (char *)addr, size);
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 sgp->set_move_collision(move, collision);
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
172
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
173 // rootに接続
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 root->addChild(sgp);
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
175
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
176 // Linda Serverに接続
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
177 tspace = open_linda_java(linda, PORT_NUM);
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
178 // rootにLindaのfdを持たせる
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
179 root->propertyptr = (void*)malloc(sizeof(int));
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
180 int *p = (int*)root->propertyptr;
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
181 root->property_size = sizeof(int);
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
182 *p = tspace;
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
183
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
184 // このclientのserial_idを取得
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
185 serial = get_serial_id(tspace);
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
186 root->id = serial;
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
187
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
188 // ここから先の処理は、裏で何か動かせないかを考える
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
189 // とりあえず、関数に分けようか
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
190
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
191 // serial_idを十倍したところにXMLを送信
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 xml_id = serial * 10;
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
193 send_xml(tspace, xml_id, addr, size); // ここのpsx_sync_n()は仕方ない
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
195 // XMLの送信が終了してから、serial_idをLindaに送信する
587
bdeb424ce649 dynamic work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 586
diff changeset
196 int client_id = htonl(serial);
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
197 psx_out(tspace, LISTEN_PORT, (unsigned char *)&client_id, sizeof(int));
592
56e63fc45105 send position work!!!(linda)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 591
diff changeset
198
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
199 // serial_idを十倍して1足したところに座標データを送る
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
200 // 初期化のout()
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
201 int pos_id = serial * 10 + 1;
610
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
202 char pos_data[SEND_DATA_SIZE] = {0};
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
203 // float pos_data[6];
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
204 // for (int i = 0; i < 6; i++) {
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
205 // pos_data[i] = 0.0f;
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
206 // }
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
207 psx_out(tspace, pos_id, (unsigned char *)pos_data, SEND_DATA_SIZE);
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
208
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
209 // 初期化のin()
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
210 // send_position()でinの終了を確認する分岐が最初にあるため
529188ae604d change htonl to xdr_float (checked working on mac)
kazz@kazzone.st.ie.u-ryukyu.ac.jp
parents: 601
diff changeset
211 root->seq = psx_in(tspace, pos_id);
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
212 sgr->setSceneData(root);
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
213
586
e3e6f6fbbfc4 dynamic not work
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 577
diff changeset
214 return sgr;
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216
671
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
217 MainLoopPtr
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
218 send_linda::init_only_sg(SgChange *sgchange, int w, int h)
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
219 {
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
220 return sgchange;
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
221 }
f42b303044f7 fix several Renderer/Test with (void*)sgroot.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 655
diff changeset
222
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 extern Application *
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 application() {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 return new send_linda();
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 const char *usr_help_str = "Usage: ./test_nogl [OPTION]\n";
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 extern int init(TaskManager *manager, int argc, char *argv[]);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 extern void task_initialize();
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 static void TMend(TaskManager *manager);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 int
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 TMmain(TaskManager *manager, int argc, char *argv[])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 task_initialize();
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 manager->set_TMend(TMend);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 for(int i=0;i<argc;i++) {
588
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
242 if (strcmp(argv[i],"-xml") == 0 && i+1<=argc) {
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
243 xml = argv[i+1];
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
244 } else if (strcmp(argv[i],"-linda") == 0 && i+1<=argc) {
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
245 linda = argv[i+1];
d5d8e1cf1899 send position test
kazz@kazz187.st.ie.u-ryukyu.ac.jp
parents: 587
diff changeset
246 }
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248
577
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 566
diff changeset
249 if (xml==0) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 566
diff changeset
250 printf("-xml xml-file is required\n");
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 566
diff changeset
251 exit(0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 566
diff changeset
252 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 566
diff changeset
253
566
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 return init(manager, argc, argv);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 TMend(TaskManager *manager)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261 printf("test_nogl end\n");
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
263
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 /* end */
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
265