Răsfoiți Sursa

fix isFile detection, and aug for script extension searching

AzaezelX 2 ani în urmă
părinte
comite
f77fa1f286
1 a modificat fișierele cu 13 adăugiri și 1 ștergeri
  1. 13 1
      Engine/source/console/fileSystemFunctions.cpp

+ 13 - 1
Engine/source/console/fileSystemFunctions.cpp

@@ -387,7 +387,10 @@ DefineEngineFunction(isFile, bool, ( const char* fileName ),,
    
    "@ingroup FileSystem")
 {
-   Torque::Path givenPath(fileName);
+   String cleanfilename(Torque::Path::CleanSeparators(fileName));
+   Con::expandScriptFilename(sgScriptFilenameBuffer, sizeof(sgScriptFilenameBuffer), cleanfilename.c_str());
+
+   Torque::Path givenPath(Torque::Path::CompressPath(sgScriptFilenameBuffer));
 
    if (givenPath.getFileName().isEmpty() && givenPath.getExtension().isNotEmpty())
    {
@@ -396,7 +399,16 @@ DefineEngineFunction(isFile, bool, ( const char* fileName ),,
       givenPath.setFileName(String(".") + givenPath.getExtension());
       givenPath.setExtension("");
    }
+   if (Torque::FS::IsFile(givenPath)) return true;
+
+   //try with script file extension
+   if (!Torque::FS::IsFile(givenPath) && givenPath.getExtension().isEmpty())
+      givenPath.setExtension(TORQUE_SCRIPT_EXTENSION);
+   if (Torque::FS::IsFile(givenPath)) return true;
 
+   //finally, try with compiled script file extension
+   if (!Torque::FS::IsFile(givenPath))
+      givenPath.setExtension(String(TORQUE_SCRIPT_EXTENSION)+String(".dso"));
    return Torque::FS::IsFile(givenPath);
 }