topical media & game development

talk show tell print

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.