mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
import json, os, sys, gzip
|
|
|
|
prefix = 'file:///~/'
|
|
MAP = {}
|
|
def createAssetMapping(assetDirectory):
|
|
baseDirectory = os.path.basename(os.path.normpath(assetDirectory))
|
|
for root, subfolder, filenames in os.walk(assetDirectory):
|
|
for filename in filenames:
|
|
if not filename.endswith('.ktx') or os.path.basename(root) == 'skyboxes':
|
|
substring = os.path.commonprefix([assetDirectory, root])
|
|
newPath = root.replace(substring, '');
|
|
filePath = os.sep.join([newPath, filename])
|
|
if filePath[0] == '\\':
|
|
filePath = filePath[1:]
|
|
finalPath = prefix + baseDirectory + '/' + filePath
|
|
finalPath = finalPath.replace('\\', '/')
|
|
file = os.path.splitext(filename)[0]
|
|
file = os.path.splitext(file)[0]
|
|
MAP[file] = finalPath
|
|
|
|
def hasURL(prop):
|
|
if "URL" in prop:
|
|
return True
|
|
return False
|
|
|
|
|
|
def handleURL(url):
|
|
newUrl = url
|
|
if "atp:" in url:
|
|
baseFilename = os.path.basename(url)
|
|
filename = os.path.splitext(baseFilename)[0]
|
|
newUrl = MAP[filename]
|
|
print url + ' -> ' + newUrl
|
|
return newUrl
|
|
|
|
def handleOptions():
|
|
option = sys.argv[1]
|
|
if option == '--help' or option == '-h':
|
|
print 'Usage: convertToRelativePaths.py INPUT[json file you want to update the urls] INPUT[directory that the baked files are located in]'
|
|
sys.exit()
|
|
|
|
def main():
|
|
argsLength = len(sys.argv)
|
|
if argsLength == 3:
|
|
jsonFile = sys.argv[1]
|
|
assetDirectory = sys.argv[2]
|
|
inputFilename = os.path.basename(jsonFile);
|
|
absPath = os.path.abspath(assetDirectory)
|
|
finalPath = absPath.replace('\\', '/');
|
|
gzipFile = finalPath + '/' + inputFilename + '.gz'
|
|
print gzipFile
|
|
createAssetMapping(assetDirectory)
|
|
f = open(jsonFile)
|
|
data = json.load(f)
|
|
f.close()
|
|
for entity in data['Entities']:
|
|
for prop in entity:
|
|
value = entity[prop]
|
|
if hasURL(prop):
|
|
value = handleURL(value)
|
|
if prop == "script":
|
|
value = handleURL(value)
|
|
if prop == "textures":
|
|
try:
|
|
tmp = json.loads(value)
|
|
for index in tmp:
|
|
tmp[index] = handleURL(tmp[index])
|
|
value = json.dumps(tmp)
|
|
except:
|
|
value = handleURL(value)
|
|
|
|
|
|
if prop == "ambientLight":
|
|
for index in value:
|
|
value[index] = handleURL(value[index])
|
|
|
|
if prop == "skybox":
|
|
for index in value:
|
|
value[index] = handleURL(value[index])
|
|
|
|
if prop == "serverScripts":
|
|
value = handleURL(value)
|
|
|
|
entity[prop] = value
|
|
|
|
|
|
jsonString = json.dumps(data)
|
|
jsonBytes= jsonString.encode('utf-8')
|
|
with gzip.GzipFile(gzipFile, 'w') as fout: # 4. gzip
|
|
fout.write(jsonBytes)
|
|
|
|
elif argsLength == 2:
|
|
handleOptions()
|
|
|
|
main()
|