Browse Source

Adding resourcePrefix for launching from VS, standalone AtomicEditor compiles AtomicProject assembly when solution is "dirty"

Josh Engebretson 9 years ago
parent
commit
a76216f060

+ 21 - 12
Source/ToolCore/NETTools/NETBuildSystem.cpp

@@ -244,7 +244,7 @@ namespace ToolCore
             ToolEnvironment* tenv = GetSubsystem<ToolEnvironment>();
             const String& nugetBinary = tenv->GetAtomicNETNuGetBinary();
 
-            if (!fileSystem->FileExists(nugetBinary))
+            if (requiresNuGet && !fileSystem->FileExists(nugetBinary))
             {
                 CurrentBuildError(ToString("NuGet binary is missing (%s)", nugetBinary.CString()));
                 return;
@@ -327,18 +327,8 @@ namespace ToolCore
 
     }
 
-    void NETBuildSystem::HandleBuildAtomicProject(StringHash eventType, VariantMap& eventData)
+    NETBuild* NETBuildSystem::BuildAtomicProject(Project* project)
     {
-        using namespace NETBuildAtomicProject;
-
-        Project* project = static_cast<Project*>(eventData[P_PROJECT].GetPtr());
-
-        if (!project)
-        {
-            LOGERROR("NETBuildSystem::HandleBuildAtomicProject - null project");
-            return;
-        }
-
         String platform;
         String configuration;
 
@@ -367,6 +357,25 @@ namespace ToolCore
 
         LOGINFOF("Received build for project %s", project->GetProjectFilePath().CString());
 
+        return build;
+
+    }
+
+
+    void NETBuildSystem::HandleBuildAtomicProject(StringHash eventType, VariantMap& eventData)
+    {
+        using namespace NETBuildAtomicProject;
+
+        Project* project = static_cast<Project*>(eventData[P_PROJECT].GetPtr());
+
+        if (!project)
+        {
+            LOGERROR("NETBuildSystem::HandleBuildAtomicProject - null project");
+            return;
+        }
+
+        BuildAtomicProject(project);
+
     }
 
     NETBuild* NETBuildSystem::Build(const String& solutionPath, const String& platform, const String& configuration)

+ 2 - 0
Source/ToolCore/NETTools/NETBuildSystem.h

@@ -87,6 +87,8 @@ namespace ToolCore
         /// Build either a .sln or .json configuration file
         NETBuild* Build(const String& solutionPath, const String& platform, const String& configuration = "Release");
 
+        NETBuild* BuildAtomicProject(Project* project);
+
     private:
 
         void CurrentBuildError(String errorText);

+ 9 - 1
Source/ToolCore/NETTools/NETProjectGen.cpp

@@ -439,15 +439,23 @@ namespace ToolCore
                     XMLElement propertyGroup = project.CreateChild("PropertyGroup");
                     propertyGroup.SetAttribute("Condition", ToString("'$(Configuration)|$(Platform)' == '%s|AnyCPU'", cfg.CString()));
 
+                    String startArguments;
+
 #ifdef ATOMIC_DEV_BUILD
                     String playerBin = tenv->GetAtomicNETRootDir() + cfg + "/AtomicPlayer.exe";
 #else
                     String playerBin = tenv->GetAtomicNETRootDir() + "Release/AtomicPlayer.exe";
+
+                    startArguments += ToString("--resourcePrefix \"%s\" ", (fileSystem->GetProgramDir() + "Resources/").CString());
+
 #endif
 
                     propertyGroup.CreateChild("StartAction").SetValue("Program");                    
                     propertyGroup.CreateChild("StartProgram").SetValue(playerBin );
-                    propertyGroup.CreateChild("StartArguments").SetValue(ToString("--project %s", atomicProject->GetProjectPath().CString()));
+
+                    startArguments += ToString("--project \"%s\"", atomicProject->GetProjectPath().CString());
+
+                    propertyGroup.CreateChild("StartArguments").SetValue(startArguments);
                     
                 }
 

+ 24 - 6
Source/ToolCore/NETTools/NETProjectSystem.cpp

@@ -105,6 +105,25 @@ namespace ToolCore
 
     }
 
+    void NETProjectSystem::HandleNETBuildResult(StringHash eventType, VariantMap& eventData)
+    {
+        using namespace NETBuildResult;
+
+        if (eventData[P_SUCCESS].GetBool())
+        {
+            LOGINFOF("NETBuild Success for project");
+        }
+        else
+        {
+            const String& errorText = eventData[P_ERRORTEXT].GetString();
+
+            LOGERRORF("\n%s\n", errorText.CString());
+            LOGERRORF("NETBuild Error for project");
+        }
+
+    }
+
+
     void NETProjectSystem::HandleUpdate(StringHash eventType, VariantMap& eventData)
     {
         using namespace Update;
@@ -144,14 +163,13 @@ namespace ToolCore
 
         if (projectAssemblyDirty_)
         {
-            using namespace NETBuildAtomicProject;
-
-            VariantMap eventData;
             Project* project = GetSubsystem<ToolSystem>()->GetProject();
-            eventData[P_PROJECT] = project;
+            NETBuild* build = GetSubsystem<NETBuildSystem>()->BuildAtomicProject(project);
 
-            // We need to rebuild the project assembly
-            SendEvent(E_NETBUILDATOMICPROJECT, eventData);
+            if (build)
+            {
+                build->SubscribeToEvent(E_NETBUILDRESULT, HANDLER(NETProjectSystem, HandleNETBuildResult));
+            }
 
             projectAssemblyDirty_ = false;
 

+ 2 - 0
Source/ToolCore/NETTools/NETProjectSystem.h

@@ -60,6 +60,8 @@ namespace ToolCore
 
         void HandleUpdate(StringHash eventType, VariantMap& eventData);
 
+        void HandleNETBuildResult(StringHash eventType, VariantMap& eventData);
+
         void HandleFileChanged(StringHash eventType, VariantMap& eventData);
         void HandleResourceAdded(StringHash eventType, VariantMap& eventData);
         void HandleResourceRemoved(StringHash eventType, VariantMap& eventData);