Browse Source

AtomicPlayer builds and links with 2D only support

Josh Engebretson 10 years ago
parent
commit
d9e6841423

+ 1 - 1
Source/Atomic/Environment/Environment.cpp

@@ -10,7 +10,7 @@
 namespace Atomic
 {
 
-void RegisterEnvironmenttLibrary(Context* context)
+void RegisterEnvironmentLibrary(Context* context)
 {
     ProcSky::RegisterObject(context);
     TimeOfDay::RegisterObject(context);

+ 1 - 1
Source/Atomic/Environment/Environment.h

@@ -9,6 +9,6 @@
 namespace Atomic
 {
 
-void RegisterEnvironmenttLibrary(Context* context);
+void RegisterEnvironmentLibrary(Context* context);
 
 }

+ 1 - 1
Source/AtomicEditor/Source/AEApplication.cpp

@@ -58,7 +58,7 @@ AEApplication::AEApplication(Context* context) :
 void AEApplication::Start()
 {
     // refactor this
-    RegisterEnvironmenttLibrary(context_);
+    RegisterEnvironmentLibrary(context_);
 
     Engine* engine = GetSubsystem<Engine>();
     engine->SetAutoExit(false);

+ 22 - 0
Source/AtomicJS/JSBind/JSBModule.cpp

@@ -206,6 +206,12 @@ void JSBModule::EmitSource(const String& filepath)
     file.Open(filepath, FILE_WRITE);
 
     source_ = "// This file was autogenerated by JSBind, changes will be lost\n";
+
+    if (Requires("3D"))
+    {
+        source_ += "#ifdef ATOMIC_3D\n";
+    }
+
     source_ += "#include <Duktape/duktape.h>\n";    
     source_ += "#include <AtomicJS/Javascript/JSVM.h>\n";
     source_ += "#include <AtomicJS/Javascript/JSAPI.h>\n";
@@ -244,6 +250,12 @@ void JSBModule::EmitSource(const String& filepath)
     // end Atomic namespace
     source_ += "\n}\n";
 
+    if (Requires("3D"))
+    {
+        source_ += "#endif //ATOMIC_3D\n";
+    }
+
+
     file.Write(source_.CString(), source_.Length());
 
     file.Close();
@@ -268,9 +280,19 @@ void JSBModule::Load(const String &moduleJSONFilename)
     JSONValue includes = moduleJSON.GetChild("includes");
     JSONValue classes_rename = moduleJSON.GetChild("classes_rename");
     JSONValue overloads = moduleJSON.GetChild("overloads");
+    JSONValue requires = moduleJSON.GetChild("requires");
 
     HashMap<String, String> rename;
 
+    if (requires.IsArray())
+    {
+        for (unsigned j = 0; j < requires.GetSize(); j++)
+        {
+            requirements_.Push(requires.GetString(j));
+        }
+
+    }
+
     if (classes_rename.IsObject())
     {
         Vector<String> childNames = classes_rename.GetValueNames();

+ 3 - 0
Source/AtomicJS/JSBind/JSBModule.h

@@ -38,6 +38,8 @@ public:
     void PreprocessHeaders();
     void VisitHeaders();
 
+    bool Requires(const String& requirement) { return requirements_.Contains(requirement); }
+
     void EmitSource(const String& filepath);
 
     void RegisterConstant(const String& name)
@@ -55,6 +57,7 @@ public:
     Vector<JSBEnum*> enums_;
     Vector<String> constants_;
     JSBindings* bindings_;
+    Vector<String> requirements_;
 
     String source_;
 

+ 8 - 0
Source/AtomicJS/JSBind/JSBindings.cpp

@@ -96,7 +96,11 @@ void JSBindings::EmitJSModules(const String& rootpath)
     for (unsigned i = 0; i < modules_.Size(); i++)
     {
         JSBModule* module = modules_.At(i);
+        if (module->Requires("3D"))
+            source += "\n#ifdef ATOMIC_3D";
         source.AppendWithFormat("\n   jsb_preinit_%s(vm);", module->name_.ToLower().CString());
+        if (module->Requires("3D"))
+            source += "\n#endif //ATOMIC_3D\n";
     }
 
     source += "\n}\n\n";
@@ -110,7 +114,11 @@ void JSBindings::EmitJSModules(const String& rootpath)
     for (unsigned i = 0; i < modules_.Size(); i++)
     {
         JSBModule* module = modules_.At(i);
+        if (module->Requires("3D"))
+            source += "\n#ifdef ATOMIC_3D";
         source.AppendWithFormat("\n   jsb_init_%s(vm);", module->name_.ToLower().CString());
+        if (module->Requires("3D"))
+            source += "\n#endif //ATOMIC_3D\n";
     }
 
     source += "\n}\n\n";

+ 1 - 0
Source/AtomicJS/JSBind/modules/Atomic3D.json

@@ -1,6 +1,7 @@
 {
 	"name" : "Atomic3D",
 	"sources" : ["Atomic3D"],
+	"requires" : ["3D"],
 	"includes" : ["<Atomic/Scene/Scene.h>", "<Atomic/Atomic3D/Animation.h>", "<Atomic/Graphics/OcclusionBuffer.h>", 
 			      "<Atomic/Scene/ValueAnimation.h>", "<Atomic/Graphics/Material.h>", "<Atomic/Resource/Image.h>"],
 	"classes" : ["Model",

+ 1 - 0
Source/AtomicJS/JSBind/modules/Environment.json

@@ -1,5 +1,6 @@
 {
 	"name" : "Environment",
+	"requires" : ["3D"],
 	"sources" : ["Environment"],
 	"classes" : ["ProcSky"]
 }

+ 1 - 0
Source/AtomicJS/JSBind/modules/Navigation.json

@@ -1,5 +1,6 @@
 {
 	"name" : "Navigation",
+	"requires" : ["3D"],
 	"sources" : ["Navigation"],
 	"includes" : ["<Atomic/Scene/Node.h>"],
 	"classes" : ["Navigable", "NavigationMesh", "OffMeshConnection"] 

+ 1 - 0
Source/AtomicJS/JSBind/modules/Physics.json

@@ -1,5 +1,6 @@
 {
 	"name" : "Physics",
+	"requires" : ["3D"],
 	"sources" : ["Physics"],
 	"includes" : ["<Atomic/Atomic3D/Model.h>"],
 	"classes" : ["CollisionShape", "Constraint", "PhysicsWorld", "RigidBody"],

+ 3 - 1
Source/AtomicPlayer/AtomicPlayer.cpp

@@ -49,7 +49,9 @@ static Javascript* javascript = NULL;
 AtomicPlayer::AtomicPlayer(Context* context) :
     Application(context)
 {
-    RegisterEnvironmenttLibrary(context_);
+#ifdef ATOMIC_3D
+    RegisterEnvironmentLibrary(context_);
+#endif
 }
 
 void AtomicPlayer::Setup()