diff --git a/Engine/source/console/fileSystemFunctions.cpp b/Engine/source/console/fileSystemFunctions.cpp index cabb0b8d7..a9e2f47e6 100644 --- a/Engine/source/console/fileSystemFunctions.cpp +++ b/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); }