13 #include <boost/version.hpp>
14 #if BOOST_VERSION != 102800
15 #include <boost/python.hpp>
18 #include <boost/python/objects.hpp>
22 #if BOOST_VERSION != 102800
23 #include <boost/python/object.hpp>
24 #include <boost/python/dict.hpp>
26 #include <boost/python/objects.hpp>
76 this->sourceRoom = sourceRoom;
97 for (
size_t i = 0;
i < room->
objs.size();
i++) {
99 if (room->
objs[
i]->index == index) {
127 if (!newroom)
return;
132 float tx = 0, ty = 0;
141 SharedPtr<Sound> sound = SceneManager::getSingleton()->getRenderer()->getSound(
146 SharedPtr<Source> source = SceneManager::getSingleton()->createSource(
150 source->setAttenuated(
false);
151 source->setRelative(
true);
152 source->setPosition(
LVector3(0,0,1));
153 source->setDirection(
Vector3(0,0,-1));
154 source->setVelocity(
Vector3(0,0,0));
155 source->setRadius(1.0);
156 source->setGain(1.0);
158 SceneManager::getSingleton()->getScene(scene)->add(source);
165 if (source->isPlaying())
166 source->stopPlaying();
167 SceneManager::getSingleton()->getScene(scene)->remove(source);
170 bool Video(
int room, std::string
index, std::string vfile, std::string afile,
float x,
float y )
173 if (!newroom)
return false;
178 if (!afile.empty()) {
196 bool VideoStream(
int room, std::string
index, std::string streamfile,
float x,
float y,
float w,
float h )
200 fprintf(stderr,
"ERROR: Room not found!!\n");
209 newobj->texfile =
file;
213 fprintf(stdout,
"INFO: Added video stream %s\n", streamfile.c_str());
214 newroom->
objs.push_back( newobj );
216 fprintf(stdout,
"INFO: Missing video stream %s\n", streamfile.c_str());
226 if (!newroom)
return;
227 for (
size_t i = 0;
i < newroom->
objs.size();
i++) {
228 if (newroom->
objs[
i]) {
229 if (newroom->
objs[
i]->index == index) {
236 SharedPtr<SourceListener> transitionListener(
239 movie->
soundsource->setSourceListener(transitionListener);
248 if (!newroom)
return;
249 for (
size_t i = 0;
i < newroom->
objs.size();
i++)
250 if (newroom->
objs[
i]) {
251 if (newroom->
objs[
i]->index == index)
259 if (!newroom)
return;
260 for (
size_t i = 0;
i < newroom->
objs.size();
i++)
261 if (newroom->
objs[
i]) {
262 if (newroom->
objs[
i]->index == index)
270 if (!newroom)
return;
271 for (
size_t i = 0;
i < newroom->
objs.size();
i++)
272 if (newroom->
objs[
i]) {
273 if (newroom->
objs[
i]->index == index)
281 if (!newroom)
return;
282 for (
size_t i = 0;
i < newroom->
objs.size();
i++)
283 if (newroom->
objs[
i]) {
284 if (newroom->
objs[
i]->index == index) {
287 if (source.get() != NULL) {
288 if (!source->isPlaying())
289 source->startPlaying();
297 if (!newroom)
return;
298 for (
size_t i = 0;
i < newroom->
objs.size();
i++)
299 if (newroom->
objs[
i]) {
300 if (newroom->
objs[
i]->index == index) {
303 if (source.get() != NULL) {
304 if (source->isPlaying())
305 source->stopPlaying();
319 if (!newroom)
return;
322 newroom->
objs.push_back(
new BaseInterface::Room::BaseShip( P.i, P.j, P.k, Q.i, Q.j, Q.k, R.i, R.j, R.k, pos, index ) );
324 void RunScript(
int room, std::string ind, std::string pythonfile,
float time )
327 if (!newroom)
return;
341 if (!newroom)
return;
348 if (!newroom)
return;
349 for (
size_t i = 0;
i < newroom->
objs.size();
i++)
350 if (newroom->
objs[
i]) {
351 if (newroom->
objs[
i]->index == index)
359 if (!newroom)
return;
360 for (
size_t i = 0;
i < newroom->
links.size();
i++)
362 if (newroom->
links[
i]->index == index) {
365 newroom->
links[
i]->wid = wid;
366 newroom->
links[
i]->hei = hei;
373 if (!newroom)
return;
374 for (
size_t i = 0;
i < newroom->
links.size();
i++)
376 if (newroom->
links[
i]->index == index)
377 newroom->
links[
i]->text = text;
382 if (!newroom)
return;
383 for (
size_t i = 0;
i < newroom->
links.size();
i++)
385 if (newroom->
links[
i]->index == index)
386 newroom->
links[
i]->Relink( python );
391 if (!newroom)
return;
392 for (
size_t i = 0;
i < newroom->
links.size();
i++)
394 if (newroom->
links[
i]->index == index)
403 unsigned int mask = 0;
404 for (i = 0; i < maskdef.length(); ++i) {
429 fprintf( stderr,
"%s: WARNING: Ignoring request for movement event mask.\n", __FILE__ );
434 if (!newroom)
return;
435 for (i = 0; i < newroom->
links.size(); i++)
436 if (newroom->
links[i]) {
437 if (newroom->
links[i]->index == index)
439 newroom->
links[i]->setEventMask( mask );
446 lnk = room->
links.front();
448 lnk = room->
links.back();
455 void Link(
int room, std::string
index,
float x,
float y,
float wid,
float hei, std::string text,
int to )
457 LinkPython( room, index,
"", x, y, wid, hei, text, to );
461 std::string pythonfile,
470 if (!newroom)
return;
472 BaseLink( newroom, x, y, wid, hei, text );
475 void Launch(
int room, std::string
index,
float x,
float y,
float wid,
float hei, std::string text )
481 std::string pythonfile,
489 if (!newroom)
return;
491 BaseLink( newroom, x, y, wid, hei, text );
493 void EjectPython(
int room, std::string
index, std::string pythonfile,
float x,
float y,
float wid,
float hei, std::string text )
496 if (!newroom)
return;
498 BaseLink( newroom, x, y, wid, hei, text );
500 void Comp(
int room, std::string
index,
float x,
float y,
float wid,
float hei, std::string text, std::string modes )
502 CompPython( room, index,
"", x, y, wid, hei, text, modes );
506 std::string pythonfile,
515 if (!newroom)
return;
517 newroom->
links.push_back( newcomp );
518 BaseLink( newroom, x, y, wid, hei, text );
530 static const EnumMap modemap( modelist,
sizeof (modelist)/
sizeof (*modelist) );
531 const char *newmode = modes.c_str();
532 int newlen = modes.size();
533 char *curmode =
new char[newlen+1];
534 for (
int i = 0;
i < newlen;) {
536 for (j = 0; newmode[
i] !=
' ' && newmode[
i] !=
'\0';
i++, j++)
537 curmode[j] = newmode[
i];
538 while (newmode[
i] ==
' ')
545 int modearg = modemap.
lookup( curmode );
560 std::string pythonfile,
565 if (!newroom)
return;
568 newroom->
links.insert( newroom->
links.begin(), tmp );
570 newroom->
links.push_back( tmp );
571 BaseLink( newroom, x, y, wid, hei, text, front );
603 if (!newroom)
return;
604 for (
int i = 0;
i < (
int) newroom->
links.size();
i++)
606 if (newroom->
links[
i]->index == index) {
616 if (!newroom)
return;
617 for (
int i = 0;
i < (
int) newroom->
objs.size();
i++)
618 if (newroom->
objs[
i]) {
619 if (newroom->
objs[
i]->index == index) {
620 newroom->
objs.erase( newroom->
objs.begin()+
i );
634 if (!newroom)
return;
643 bool BuyShip( std::string name,
bool my_fleet,
bool force_base_inventory )
677 data[
"mousebuttons"] = buttonMask;
686 if (modmask == UINT_MAX )
688 data[
"modifiers"] = modmask;
702 data[
"key"] = keycode;
703 if ( (keycode > 0x20) && (keycode < 0xff) )
704 data[
"char"] = string( 1, keycode );
707 data[
"char"] = string();
718 static bool force_highquality =
true;
719 static bool use_bit = force_highquality