#contents *新規仮想空間の作成 [#c6d40ee5] ここではボールが弾むというシミュレーションを行う新しい仮想空間を作成します。 **ツリー構造 [#fea2aba6] インストールしたパッケージのツリー構造は以下のようになります。 sigverse-<version> | |---bin |---include | └----sigverse └---shared └----sigverse |----data |----etc |----jar └----samples 今回はsigverse-<version>/binを作業場所とします。 **エージェントコントローラの作成 [#b9411488] SIGVerseの sigverse-<version>/binに移動します。 $ cd ~/sigverse-<version>/bin ここに新しいディレクトリを作成します。ディレクトリ名は何でも構いません。 $ mkdir NewWorld $ cd NewWorld 次に簡単なエージェントコントローラを作成します。emacsまたはviなどのエディタを使って MoveController.cppファイルを作成します。 $ emacs MoveController.cpp MoveController.cpp #include "Controller.h" #include "Logger.h" class MoveController : public Controller { public: double onAction(ActionEvent&); }; double MoveController::onAction(ActionEvent &evt) { SimObj *obj = getObj(myname()); obj->fz(1000); //z方向に力1000を設定 return 5.0; } extern "C" Controller * createController() { return new MoveController; } **コンパイル [#hf0f4b09] 次に先ほど作成したコードのコンパイルを行うためのmakefileを作成します。コンパイル時に必要な環境変数をここで設定します。 // emacs make.sh //make.sh // #!/bin/sh // #SIGVerseソースの場所を指定します。 // export SIG_SRC="/home/<username>/sigverse-201003/include/sigverse" // #コンパイルを行います。 // make clean // make emacs Makefile Makefile #SIGVerseソースコードの所在 SIG_SRC = /home/<username>/sigverse-<version>/include/sigverse #自作コード CPP_SRCS = MoveController.cpp #オブジェクトファイル OBJS = MoveController.o #コンパイルを行います。 $(OBJS): $(CPP_SRCS) g++ -DCONTROLLER -DNDEBUG -DUSE_ODE -I$(SIG_SRC) - I$(SIG_SRC)/comm/controller -fPIC shared -o $@ $<