浏览代码

Merge pull request #460 from Azaezel/fix/moduleHelpers

re-fix file exclusivity, readd callonmodules variable extension
Brian Roberts 4 年之前
父节点
当前提交
47ec7e8d98
共有 1 个文件被更改,包括 32 次插入7 次删除
  1. 32 7
      Templates/BaseGame/game/core/utility/scripts/module.tscript

+ 32 - 7
Templates/BaseGame/game/core/utility/scripts/module.tscript

@@ -3,8 +3,9 @@ $reportModuleFileConflicts=true;
 if (!isObject(ExecFilesList))
    new ArrayObject(ExecFilesList);
   
-function callOnModules(%functionName, %moduleGroup)
+function callOnModules(%functionName, %moduleGroup, %var0, %var1, %var2, %var3, %var4, %var5, %var6)
 {
+   %maxvars = 7; // match this to i/o signature
    //clear per module group file execution chain
    ExecFilesList.empty();
    //Get our modules so we can exec any specific client-side loading/handling
@@ -21,7 +22,18 @@ function callOnModules(%functionName, %moduleGroup)
       
       if(isObject(%module.scopeSet) && %module.scopeSet.isMethod(%functionName))
       {
-         eval(%module.scopeSet @ "." @ %functionName @ "();");
+         %stryng = %module.scopeSet @ "." @ %functionName @ "(";
+         for (%a=0;%a<%maxvars;%a++)
+         {
+            if (%var[%a] !$= "")
+            {
+               %stryng = %stryng @ %var[%a];
+               if (%a<%maxvars-1 && %var[%a+1] !$= "")
+                  %stryng = %stryng @ ",";
+            }
+         }
+         %stryng = %stryng @ ");";
+         eval(%stryng);
       }
    }
    
@@ -69,6 +81,18 @@ function loadModuleMaterials(%moduleGroup)
       {
          exec( %file );
       }
+   }   
+}
+
+function loadAssetsByType(%assetType)
+{
+   %assetQuery = new AssetQuery();
+   AssetDatabase.findAssetType(%assetQuery, %assetType);
+   %count = %assetQuery.getCount();
+   for(%i=0; %i < %count; %i++)
+   {
+        %assetId = %assetQuery.getAsset(%i);
+        %asset = AssetDatabase.acquireAsset(%assetId);
    }
 }
 
@@ -121,9 +145,9 @@ function SimSet::registerDatablock(%scopeSet, %datablockFilePath, %isExclusive)
             //allows one to override exclusive with exclusive
             %locked = DatablockFilesList.getValue(%i);
 
-            if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts))
+            if ((%locked && !%isExclusive)&&($reportModuleFileConflicts))
                 error("found" SPC %datablockFilePath SPC "duplicate file!");
-            if (!%locked || (%locked && %isExclusive))
+            if (%isExclusive)
             { // Replacing an existing entry, update in-place
                 DatablockFilesList.setKey(%fullPath, %i);
                 DatablockFilesList.setValue(%isExclusive, %i);
@@ -221,9 +245,9 @@ function SimSet::queueExec(%scopeSet, %execFilePath, %isExclusive)
             //do note that doing it in this order means setting exclusive twice
             //allows one to override exclusive with exclusive
             %locked = ExecFilesList.getValue(%i);
-            if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts))
+            if ((%locked && !%isExclusive)&&($reportModuleFileConflicts))
                 error("found" SPC %execFilePath SPC "duplicate file!");
-            if (!%locked || (%locked && %isExclusive))
+            if (%isExclusive)
             { // Replacing an existing entry, update in-place
                 ExecFilesList.setKey(%fullPath, %i);
                 ExecFilesList.setValue(%isExclusive, %i);
@@ -281,4 +305,5 @@ function SimSet::unQueueExec(%scopeSet, %execFilePath)
    }
    if ($traceModuleCalls)
       ExecFilesList.echo();
-}
+}
+