topical media & game development
lib-game-delta3d-sdk-examples-testPython-testpython.cpp / cpp
include <dtScript/scriptmanager.h>
include <dtCore/globals.h>
include <dtCore/keyboard.h>
include <dtCore/object.h>
include <dtCore/refptr.h>
include <dtCore/transform.h>
include <dtABC/application.h>
using namespace dtCore;
using namespace dtABC;
class TestPythonApp : public Application
{
DECLARE_MANAGEMENT_LAYER(TestPythonApp)
public:
TestPythonApp(const std::string& configFile = "config.xml")
: Application(configFile)
, mScriptManager(0)
{
Object* obj = new Object("UH-1N");
obj->LoadFile("models/uh-1n.ive");
Transform transform(0.0f, 50.0f, 0.0f);
obj->SetTransform(transform);
AddDrawable(obj);
mScriptManager = new dtScript::ScriptManager();
// Pre-load the Python script
std::string filename = dtCore::FindFileInPathList("flyhelo.py");
if(!filename.empty())
{
mScriptManager->Load(filename);
}
}
protected:
virtual ~TestPythonApp() {}
public:
virtual bool KeyPressed(const dtCore::Keyboard* keyboard, int kc)
{
bool verdict(false);
switch( kc )
{
case osgGA::GUIEventAdapter::KEY_Escape:
{
// Make sure to stop the thread before exiting
mScriptManager->Stop();
Quit();
verdict = true;
break;
}
case 's':
{
// Kick off a Python script in its own thread
mScriptManager->Run();
verdict = true;
break;
}
default:
{
}
}
return verdict;
}
private:
dtCore::RefPtr<dtScript::ScriptManager> mScriptManager;
};
IMPLEMENT_MANAGEMENT_LAYER(TestPythonApp)
int main()
{
dtCore::SetDataFilePathList(dtCore::GetDeltaDataPathList() + ";" +
dtCore::GetDeltaRootPath() + "/examples/data" + ";" +
dtCore::GetDeltaRootPath() + "/examples/testPython");
dtCore::RefPtr<TestPythonApp> app = new TestPythonApp("config.xml");
app->Config();
app->Run();
return 0;
}
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.