Browse Source

Running playcmd from JS

Josh Engebretson 10 years ago
parent
commit
ff3d1e0a72

+ 5 - 0
Data/AtomicEditor/Resources/EditorData/AtomicEditor/javascript/main.js

@@ -5,6 +5,11 @@ var env = Atomic.getToolEnvironment();
 
 
 print(env.rootSourceDir);
 print(env.rootSourceDir);
 
 
+var system = Atomic.getToolSystem();
+
+system.loadProject("/Users/josh/Dev/atomic/AtomicExamples/NewSpaceGame");
+
+new Atomic.PlayCmd().run();
 
 
 ( function() {
 ( function() {
 
 

+ 4 - 0
Source/AtomicEditorWork/Application/AEEditorApp.cpp

@@ -79,6 +79,10 @@ void AEEditorApp::Setup()
     ToolEnvironment* env = new ToolEnvironment(context_);
     ToolEnvironment* env = new ToolEnvironment(context_);
     context_->RegisterSubsystem(env);
     context_->RegisterSubsystem(env);
 
 
+    ToolSystem* system = new ToolSystem(context_);
+    context_->RegisterSubsystem(system);
+
+
 #ifdef ATOMIC_DEV_BUILD
 #ifdef ATOMIC_DEV_BUILD
 
 
     if (!env->InitFromJSON())
     if (!env->InitFromJSON())

+ 4 - 2
Source/AtomicJS/Packages/ToolCore/ToolCore.json

@@ -1,5 +1,7 @@
 {
 {
 	"name" : "ToolCore",
 	"name" : "ToolCore",
-	"sources" : ["Source/ToolCore"],
-	"classes" : ["ToolEnvironment"]
+	"sources" : ["Source/ToolCore", "Source/ToolCore/Project", "Source/ToolCore/Platform", "Source/ToolCore/Command"],
+	"classes" : ["ToolEnvironment", "ToolSystem", "Project", "ProjectFile", "Platform", "PlatformMac", "PlatformWeb",
+							 "PlatformWindows",
+							"Command", "PlayCmd"]
 }
 }

+ 8 - 0
Source/ToolCore/Command/Command.cpp

@@ -17,6 +17,14 @@ Command::~Command()
 
 
 }
 }
 
 
+bool Command::Parse(const String& command)
+{
+    Vector<String> args = command.Split(' ');
+    String errorMsg;
+
+    return Parse(args, 0, errorMsg);
+}
+
 void Command::Error(const String& errorMsg)
 void Command::Error(const String& errorMsg)
 {
 {
     VariantMap eventData;
     VariantMap eventData;

+ 2 - 0
Source/ToolCore/Command/Command.h

@@ -28,6 +28,8 @@ public:
     Command(Context* context);
     Command(Context* context);
     virtual ~Command();
     virtual ~Command();
 
 
+    bool Parse(const String& command);
+
     virtual bool Parse(const Vector<String>& arguments, unsigned startIndex, String& errorMsg) = 0;
     virtual bool Parse(const Vector<String>& arguments, unsigned startIndex, String& errorMsg) = 0;
 
 
     virtual void Run() = 0;
     virtual void Run() = 0;

+ 2 - 2
Source/ToolCore/ToolSystem.cpp

@@ -40,13 +40,13 @@ ToolSystem::~ToolSystem()
 
 
 bool ToolSystem::LoadProject(const String& fullpath)
 bool ToolSystem::LoadProject(const String& fullpath)
 {
 {
-    String path = RemoveTrailingSlash(GetPath(fullpath));
+    String path = RemoveTrailingSlash(GetPath(AddTrailingSlash(fullpath)));
 
 
     ResourceCache* cache = GetSubsystem<ResourceCache>();
     ResourceCache* cache = GetSubsystem<ResourceCache>();
     cache->AddResourceDir(path, 0);
     cache->AddResourceDir(path, 0);
 
 
     String resourcePath = path;
     String resourcePath = path;
-    resourcePath += "Resources";
+    resourcePath += "/Resources";
     cache->AddResourceDir(resourcePath, 0);
     cache->AddResourceDir(resourcePath, 0);
 
 
     project_ = new Project(context_);
     project_ = new Project(context_);

+ 11 - 0
Source/ToolCoreJS/ToolCoreJS.cpp

@@ -1,6 +1,7 @@
 
 
 #include <AtomicJS/Javascript/JSVM.h>
 #include <AtomicJS/Javascript/JSVM.h>
 #include <ToolCore/ToolEnvironment.h>
 #include <ToolCore/ToolEnvironment.h>
+#include <ToolCore/ToolSystem.h>
 
 
 using namespace Atomic;
 using namespace Atomic;
 
 
@@ -21,6 +22,13 @@ static int js_atomic_GetToolEnvironment(duk_context* ctx)
     return 1;
     return 1;
 }
 }
 
 
+static int js_atomic_GetToolSystem(duk_context* ctx)
+{
+    JSVM* vm = JSVM::GetJSVM(ctx);
+    js_push_class_object_instance(ctx, vm->GetSubsystem<ToolSystem>());
+    return 1;
+}
+
 void jsapi_init_toolcore(JSVM* vm)
 void jsapi_init_toolcore(JSVM* vm)
 {
 {
     jsb_package_toolcore_init(vm);
     jsb_package_toolcore_init(vm);
@@ -32,6 +40,9 @@ void jsapi_init_toolcore(JSVM* vm)
     duk_push_c_function(ctx, js_atomic_GetToolEnvironment, 0);
     duk_push_c_function(ctx, js_atomic_GetToolEnvironment, 0);
     duk_put_prop_string(ctx, -2, "getToolEnvironment");
     duk_put_prop_string(ctx, -2, "getToolEnvironment");
 
 
+    duk_push_c_function(ctx, js_atomic_GetToolSystem, 0);
+    duk_put_prop_string(ctx, -2, "getToolSystem");
+
     duk_pop(ctx);
     duk_pop(ctx);
 
 
 }
 }