The AssetManager will now create a kinda working html output
This commit is contained in:
@@ -409,7 +409,7 @@ dir but you forgot to put quotes around the directory, since it contains spaces.
|
|||||||
|
|
||||||
# if no dimension has been specified, just use the first one
|
# if no dimension has been specified, just use the first one
|
||||||
# TODO support the case where a different dimension is specified
|
# TODO support the case where a different dimension is specified
|
||||||
rset = world.RegionSet(render['worldpath'])
|
rset = world.RegionSet(render['worldname'])
|
||||||
logging.debug("Using RegionSet %r", rset)
|
logging.debug("Using RegionSet %r", rset)
|
||||||
|
|
||||||
# create our TileSet from this RegionSet
|
# create our TileSet from this RegionSet
|
||||||
@@ -428,6 +428,7 @@ dir but you forgot to put quotes around the directory, since it contains spaces.
|
|||||||
dispatch.render_all(tilesets, print_status)
|
dispatch.render_all(tilesets, print_status)
|
||||||
dispatch.close()
|
dispatch.close()
|
||||||
|
|
||||||
|
assetMrg.finalize(tilesets)
|
||||||
|
|
||||||
sys.exit("early abort")
|
sys.exit("early abort")
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,10 @@
|
|||||||
# You should have received a copy of the GNU General Public License along
|
# You should have received a copy of the GNU General Public License along
|
||||||
# with the Overviewer. If not, see <http://www.gnu.org/licenses/>.
|
# with the Overviewer. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import codecs
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
class AssetManager(object):
|
class AssetManager(object):
|
||||||
"""\
|
"""\
|
||||||
@@ -28,6 +32,7 @@ It can read/parse and write/dump the overviewerConfig.js file into this top-leve
|
|||||||
directory.
|
directory.
|
||||||
"""
|
"""
|
||||||
self.outputdir = outputdir
|
self.outputdir = outputdir
|
||||||
|
self.renders = dict()
|
||||||
|
|
||||||
# stores Points Of Interest to be mapped with markers
|
# stores Points Of Interest to be mapped with markers
|
||||||
# This is a dictionary of lists of dictionaries
|
# This is a dictionary of lists of dictionaries
|
||||||
@@ -41,18 +46,70 @@ directory.
|
|||||||
POI[regionset.name].append
|
POI[regionset.name].append
|
||||||
|
|
||||||
|
|
||||||
def finalize(self):
|
def finalize(self, tilesets):
|
||||||
|
|
||||||
# the following bit of code came from googlemap.py
|
# dictionary to hold the overviewerConfig.js settings that we will dumps
|
||||||
zoomlevel = self.p
|
dump = dict()
|
||||||
|
dump['CONST'] = dict(tileSize=384)
|
||||||
|
dump['CONST']['image'] = {
|
||||||
|
'defaultMarker': 'signpost.png',
|
||||||
|
'signMarker': 'signpost_icon.png',
|
||||||
|
'compass': 'compass_lower-left.png',
|
||||||
|
'spawnMarker': 'http://google-maps-icons.googlecode.com/files/home.png',
|
||||||
|
'queryMarker': 'http://google-maps-icons.googlecode.com/files/regroup.png'
|
||||||
|
}
|
||||||
|
dump['CONST']['mapDivId'] = 'mcmap'
|
||||||
|
dump['CONST']['regionStrokeWeight'] = 2
|
||||||
|
|
||||||
bgcolor = (int(self.bg_color[1:3],16), int(self.bg_color[3:5],16), int(self.bg_color[5:7],16), 0)
|
# based on the tilesets we have, group them by worlds
|
||||||
blank = Image.new("RGBA", (1,1), bgcolor)
|
worlds = []
|
||||||
# Write a blank image
|
for tileset in tilesets:
|
||||||
for quadtree in self.quadtrees:
|
if tileset.options.get('worldname_orig') not in worlds:
|
||||||
tileDir = os.path.join(self.destdir, quadtree.tiledir)
|
worlds.append(tileset.options.get('worldname_orig'))
|
||||||
if not os.path.exists(tileDir): os.mkdir(tileDir)
|
|
||||||
blank.save(os.path.join(tileDir, "blank."+quadtree.imgformat))
|
dump['worlds'] = worlds
|
||||||
|
dump['map'] = dict()
|
||||||
|
dump['map']['debug'] = True
|
||||||
|
dump['map']['center'] = [-314, 67, 94]
|
||||||
|
dump['map']['controls'] = {
|
||||||
|
'pan': True,
|
||||||
|
'zoom': True,
|
||||||
|
'spawn': True,
|
||||||
|
'compass': True,
|
||||||
|
'mapType': True,
|
||||||
|
'overlays': True,
|
||||||
|
'coordsBox': True,
|
||||||
|
'searchBox': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
dump['tilesets'] = []
|
||||||
|
|
||||||
|
def bgcolorformat(color):
|
||||||
|
return "#%02x%02x%02x" % color[0:3]
|
||||||
|
|
||||||
|
for tileset in tilesets:
|
||||||
|
js_tileset = dict()
|
||||||
|
js_tileset['name'] = tileset.options.get('name')
|
||||||
|
js_tileset['zoomLevels'] = tileset.treedepth
|
||||||
|
js_tileset['minZoom'] = 0
|
||||||
|
js_tileset['defaultZoom'] = 1
|
||||||
|
js_tileset['maxZoom'] = tileset.treedepth
|
||||||
|
js_tileset['path'] = tileset.options.get('name')
|
||||||
|
js_tileset['base'] = ''
|
||||||
|
js_tileset['bgcolor'] = bgcolorformat(tileset.options.get('bgcolor'))
|
||||||
|
dump['tilesets'].append(js_tileset)
|
||||||
|
|
||||||
|
# write a blank image
|
||||||
|
blank = Image.new("RGBA", (1,1), tileset.options.get('bgcolor'))
|
||||||
|
blank.save(os.path.join(self.outputdir, tileset.options.get('name'), "blank."+tileset.options.get('imgformat')))
|
||||||
|
|
||||||
|
|
||||||
|
jsondump = json.dumps(dump, indent=4)
|
||||||
|
with codecs.open(os.path.join(self.outputdir, 'overviewerConfig.js'), 'w', encoding='UTF-8') as f:
|
||||||
|
f.write("var overviewerConfig = " + jsondump + ";\n")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# copy web assets into destdir:
|
# copy web assets into destdir:
|
||||||
global_assets = os.path.join(util.get_program_path(), "overviewer_core", "data", "web_assets")
|
global_assets = os.path.join(util.get_program_path(), "overviewer_core", "data", "web_assets")
|
||||||
@@ -64,21 +121,6 @@ directory.
|
|||||||
if self.web_assets_path:
|
if self.web_assets_path:
|
||||||
mirror_dir(self.web_assets_path, self.destdir)
|
mirror_dir(self.web_assets_path, self.destdir)
|
||||||
|
|
||||||
# replace the config js stuff
|
|
||||||
# TODO don't replace stuff, but generate it from scratch
|
|
||||||
config = codecs.open(os.path.join(self.outputdir, 'overviewerConfig.js'), 'r', encoding='UTF-8').read()
|
|
||||||
config = config.replace(
|
|
||||||
"{minzoom}", str(0))
|
|
||||||
config = config.replace(
|
|
||||||
"{maxzoom}", str(zoomlevel))
|
|
||||||
config = config.replace(
|
|
||||||
"{zoomlevels}", str(zoomlevel))
|
|
||||||
config = config.replace(
|
|
||||||
"{north_direction}", self.north_direction)
|
|
||||||
|
|
||||||
config = config.replace("{spawn_coords}",
|
|
||||||
json.dumps(list(self.world.spawn)))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# helper function to get a label for the given rendermode
|
# helper function to get a label for the given rendermode
|
||||||
|
|||||||
@@ -268,6 +268,7 @@ class MultiWorldParser(object):
|
|||||||
if not os.path.exists(self.world[worldname]):
|
if not os.path.exists(self.world[worldname]):
|
||||||
raise Exception("%r does not exist for %s" % (self.world[worldname], worldname))
|
raise Exception("%r does not exist for %s" % (self.world[worldname], worldname))
|
||||||
|
|
||||||
|
origs = dict()
|
||||||
|
|
||||||
for worldname in self.render:
|
for worldname in self.render:
|
||||||
world = dict()
|
world = dict()
|
||||||
@@ -282,10 +283,14 @@ class MultiWorldParser(object):
|
|||||||
definition = settingsDefinition.render[key]
|
definition = settingsDefinition.render[key]
|
||||||
try:
|
try:
|
||||||
val = definition['validator'](world[key], world = self.world)
|
val = definition['validator'](world[key], world = self.world)
|
||||||
|
if definition.get('save_orig', False):
|
||||||
|
origs[key + "_orig"] = world[key]
|
||||||
world[key] = val
|
world[key] = val
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print "Error validating %s: %r" % (key, e)
|
print "Error validating %s: %r" % (key, e)
|
||||||
raise e
|
raise e
|
||||||
|
world['name'] = worldname
|
||||||
|
world.update(origs)
|
||||||
self.render[worldname] = world
|
self.render[worldname] = world
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -121,12 +121,13 @@ var overviewer = {
|
|||||||
*/
|
*/
|
||||||
'initializeMapTypes': function() {
|
'initializeMapTypes': function() {
|
||||||
var mapOptions = {};
|
var mapOptions = {};
|
||||||
for (i in overviewerConfig.mapTypes) {
|
for (i in overviewerConfig.tilesets) {
|
||||||
var view = overviewerConfig.mapTypes[i];
|
var view = overviewerConfig.tilesets[i];
|
||||||
|
overviewer.util.debug("initializeMapTypes: " + view.name);
|
||||||
var imageFormat = view.imgformat ? view.imgformat : 'png';
|
var imageFormat = view.imgformat ? view.imgformat : 'png';
|
||||||
|
|
||||||
if (view.shortname == null)
|
if (view.shortname == null)
|
||||||
view.shortname = view.label.replace(/\s+/g, "");
|
view.shortname = view.name.replace(/\s+/g, "");
|
||||||
|
|
||||||
mapOptions[view.shortname] = {
|
mapOptions[view.shortname] = {
|
||||||
'getTileUrl': overviewer.gmap.getTileUrlGenerator(view.path,
|
'getTileUrl': overviewer.gmap.getTileUrlGenerator(view.path,
|
||||||
@@ -134,16 +135,16 @@ var overviewer = {
|
|||||||
'tileSize': new google.maps.Size(
|
'tileSize': new google.maps.Size(
|
||||||
overviewerConfig.CONST.tileSize,
|
overviewerConfig.CONST.tileSize,
|
||||||
overviewerConfig.CONST.tileSize),
|
overviewerConfig.CONST.tileSize),
|
||||||
'maxZoom': overviewerConfig.map.maxZoom,
|
'maxZoom': view.maxZoom,
|
||||||
'minZoom': overviewerConfig.map.minZoom,
|
'minZoom': view.minZoom,
|
||||||
'isPng': imageFormat.toLowerCase() == 'png'
|
'isPng': imageFormat.toLowerCase() == 'png'
|
||||||
}
|
}
|
||||||
overviewer.collections.mapTypes[view.shortname] = new google.maps.ImageMapType(
|
overviewer.collections.mapTypes[view.shortname] = new google.maps.ImageMapType(
|
||||||
mapOptions[view.shortname]);
|
mapOptions[view.shortname]);
|
||||||
overviewer.collections.mapTypes[view.shortname].name = view.label;
|
overviewer.collections.mapTypes[view.shortname].name = view.name;
|
||||||
overviewer.collections.mapTypes[view.shortname].shortname = view.shortname;
|
overviewer.collections.mapTypes[view.shortname].shortname = view.shortname;
|
||||||
overviewer.collections.mapTypes[view.shortname].alt = 'Minecraft ' +
|
overviewer.collections.mapTypes[view.shortname].alt = 'Minecraft ' +
|
||||||
view.label + ' Map';
|
view.name + ' Map';
|
||||||
overviewer.collections.mapTypes[view.shortname].projection =
|
overviewer.collections.mapTypes[view.shortname].projection =
|
||||||
new overviewer.classes.MapProjection();
|
new overviewer.classes.MapProjection();
|
||||||
if (view.overlay) {
|
if (view.overlay) {
|
||||||
@@ -162,12 +163,16 @@ var overviewer = {
|
|||||||
* the default view.
|
* the default view.
|
||||||
*/
|
*/
|
||||||
'initializeMap': function() {
|
'initializeMap': function() {
|
||||||
|
// use the first map as the default one
|
||||||
|
|
||||||
var defaultCenter = overviewer.util.fromWorldToLatLng(
|
var defaultCenter = overviewer.util.fromWorldToLatLng(
|
||||||
overviewerConfig.map.center[0], overviewerConfig.map.center[1],
|
overviewerConfig.map.center[0],
|
||||||
overviewerConfig.map.center[2]);
|
overviewerConfig.map.center[1],
|
||||||
|
overviewerConfig.map.center[2],
|
||||||
|
overviewerConfig.tilesets[0].zoomLevels);
|
||||||
var lat = defaultCenter.lat();
|
var lat = defaultCenter.lat();
|
||||||
var lng = defaultCenter.lng();
|
var lng = defaultCenter.lng();
|
||||||
var zoom = overviewerConfig.map.defaultZoom;
|
var zoom = overviewerConfig.tilesets[0].defaultZoom;
|
||||||
var mapcenter;
|
var mapcenter;
|
||||||
var queryParams = overviewer.util.parseQueryString();
|
var queryParams = overviewer.util.parseQueryString();
|
||||||
if (queryParams.debug) {
|
if (queryParams.debug) {
|
||||||
@@ -223,8 +228,7 @@ var overviewer = {
|
|||||||
streetViewControl: false,
|
streetViewControl: false,
|
||||||
overviewMapControl: true,
|
overviewMapControl: true,
|
||||||
zoomControl: overviewerConfig.map.controls.zoom,
|
zoomControl: overviewerConfig.map.controls.zoom,
|
||||||
backgroundColor: overviewer.util.getMapTypeBackgroundColor(
|
backgroundColor: overviewer.util.getMapTypeBackgroundColor(0)
|
||||||
overviewer.util.getDefaultMapTypeId())
|
|
||||||
};
|
};
|
||||||
overviewer.map = new google.maps.Map(document.getElementById(
|
overviewer.map = new google.maps.Map(document.getElementById(
|
||||||
overviewerConfig.CONST.mapDivId), mapOptions);
|
overviewerConfig.CONST.mapDivId), mapOptions);
|
||||||
@@ -287,12 +291,14 @@ var overviewer = {
|
|||||||
*/
|
*/
|
||||||
'initializeMarkers': function() {
|
'initializeMarkers': function() {
|
||||||
//first, give all collections an empty array to work with
|
//first, give all collections an empty array to work with
|
||||||
|
/* TODO reimplement
|
||||||
for (i in overviewerConfig.objectGroups.signs) {
|
for (i in overviewerConfig.objectGroups.signs) {
|
||||||
overviewer.util.debug('Found sign group: ' +
|
overviewer.util.debug('Found sign group: ' +
|
||||||
overviewerConfig.objectGroups.signs[i].label);
|
overviewerConfig.objectGroups.signs[i].label);
|
||||||
overviewer.collections.markers[
|
overviewer.collections.markers[
|
||||||
overviewerConfig.objectGroups.signs[i].label] = [];
|
overviewerConfig.objectGroups.signs[i].label] = [];
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
for (i in overviewer.collections.markerDatas) {
|
for (i in overviewer.collections.markerDatas) {
|
||||||
var markerData = overviewer.collections.markerDatas[i];
|
var markerData = overviewer.collections.markerDatas[i];
|
||||||
for (j in markerData) {
|
for (j in markerData) {
|
||||||
@@ -390,9 +396,11 @@ var overviewer = {
|
|||||||
* Same as initializeMarkers() for the most part.
|
* Same as initializeMarkers() for the most part.
|
||||||
*/
|
*/
|
||||||
'initializeRegions': function() {
|
'initializeRegions': function() {
|
||||||
|
/* TODO reimplement
|
||||||
for (i in overviewerConfig.objectGroups.regions) {
|
for (i in overviewerConfig.objectGroups.regions) {
|
||||||
overviewer.collections.regions[overviewerConfig.objectGroups.regions[i].label] = [];
|
overviewer.collections.regions[overviewerConfig.objectGroups.regions[i].label] = [];
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
for (i in overviewer.collections.regionDatas) {
|
for (i in overviewer.collections.regionDatas) {
|
||||||
var regionData = overviewer.collections.regionDatas[i];
|
var regionData = overviewer.collections.regionDatas[i];
|
||||||
for (j in regionData) {
|
for (j in regionData) {
|
||||||
@@ -484,15 +492,8 @@ var overviewer = {
|
|||||||
* @param string mapTypeId
|
* @param string mapTypeId
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
'getMapTypeBackgroundColor': function(mapTypeId) {
|
'getMapTypeBackgroundColor': function(id) {
|
||||||
for(i in overviewerConfig.mapTypes) {
|
return overviewerConfig.tilesets[id].bgcolor;
|
||||||
if( overviewerConfig.CONST.mapDivId +
|
|
||||||
overviewerConfig.mapTypes[i].shortname == mapTypeId ) {
|
|
||||||
overviewer.util.debug('Found background color for: ' +
|
|
||||||
overviewerConfig.mapTypes[i].bg_color);
|
|
||||||
return overviewerConfig.mapTypes[i].bg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Gee, I wonder what this does.
|
* Gee, I wonder what this does.
|
||||||
@@ -538,11 +539,11 @@ var overviewer = {
|
|||||||
*
|
*
|
||||||
* @return google.maps.LatLng
|
* @return google.maps.LatLng
|
||||||
*/
|
*/
|
||||||
'fromWorldToLatLng': function(x, z, y) {
|
'fromWorldToLatLng': function(x, z, y, zoomLevels) {
|
||||||
// the width and height of all the highest-zoom tiles combined,
|
// the width and height of all the highest-zoom tiles combined,
|
||||||
// inverted
|
// inverted
|
||||||
var perPixel = 1.0 / (overviewerConfig.CONST.tileSize *
|
var perPixel = 1.0 / (overviewerConfig.CONST.tileSize *
|
||||||
Math.pow(2, overviewerConfig.map.zoomLevels));
|
Math.pow(2, zoomLevels));
|
||||||
|
|
||||||
if(overviewerConfig.map.north_direction == 'upper-left'){
|
if(overviewerConfig.map.north_direction == 'upper-left'){
|
||||||
temp = x;
|
temp = x;
|
||||||
@@ -565,7 +566,7 @@ var overviewer = {
|
|||||||
// so the Y coordinate is at 0.5, and the X is at 0.5 -
|
// so the Y coordinate is at 0.5, and the X is at 0.5 -
|
||||||
// ((tileSize / 2) / (tileSize * 2^zoomLevels))
|
// ((tileSize / 2) / (tileSize * 2^zoomLevels))
|
||||||
// or equivalently, 0.5 - (1 / 2^(zoomLevels + 1))
|
// or equivalently, 0.5 - (1 / 2^(zoomLevels + 1))
|
||||||
var lng = 0.5 - (1.0 / Math.pow(2, overviewerConfig.map.zoomLevels + 1));
|
var lng = 0.5 - (1.0 / Math.pow(2, zoomLevels + 1));
|
||||||
var lat = 0.5;
|
var lat = 0.5;
|
||||||
|
|
||||||
// the following metrics mimic those in
|
// the following metrics mimic those in
|
||||||
@@ -597,7 +598,7 @@ var overviewer = {
|
|||||||
*
|
*
|
||||||
* @return Array
|
* @return Array
|
||||||
*/
|
*/
|
||||||
'fromLatLngToWorld': function(lat, lng) {
|
'fromLatLngToWorld': function(lat, lng, zoomLevels) {
|
||||||
// Initialize world x/y/z object to be returned
|
// Initialize world x/y/z object to be returned
|
||||||
var point = Array();
|
var point = Array();
|
||||||
point.x = 0;
|
point.x = 0;
|
||||||
@@ -607,11 +608,11 @@ var overviewer = {
|
|||||||
// the width and height of all the highest-zoom tiles combined,
|
// the width and height of all the highest-zoom tiles combined,
|
||||||
// inverted
|
// inverted
|
||||||
var perPixel = 1.0 / (overviewerConfig.CONST.tileSize *
|
var perPixel = 1.0 / (overviewerConfig.CONST.tileSize *
|
||||||
Math.pow(2, overviewerConfig.map.zoomLevels));
|
Math.pow(2, zoomLevels));
|
||||||
|
|
||||||
// Revert base positioning
|
// Revert base positioning
|
||||||
// See equivalent code in fromWorldToLatLng()
|
// See equivalent code in fromWorldToLatLng()
|
||||||
lng -= 0.5 - (1.0 / Math.pow(2, overviewerConfig.map.zoomLevels + 1));
|
lng -= 0.5 - (1.0 / Math.pow(2, zoomLevels + 1));
|
||||||
lat -= 0.5;
|
lat -= 0.5;
|
||||||
|
|
||||||
// I'll admit, I plugged this into Wolfram Alpha:
|
// I'll admit, I plugged this into Wolfram Alpha:
|
||||||
@@ -678,13 +679,16 @@ var overviewer = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update coords on mousemove
|
// Update coords on mousemove
|
||||||
|
/* TODO reenable
|
||||||
google.maps.event.addListener(overviewer.map, 'mousemove', function (event) {
|
google.maps.event.addListener(overviewer.map, 'mousemove', function (event) {
|
||||||
var worldcoords = overviewer.util.fromLatLngToWorld(event.latLng.lat(), event.latLng.lng());
|
var worldcoords = overviewer.util.fromLatLngToWorld(event.latLng.lat(), event.latLng.lng());
|
||||||
coordsDiv.innerHTML = "Coords: X " + Math.round(worldcoords.x) + ", Z " + Math.round(worldcoords.z);
|
coordsDiv.innerHTML = "Coords: X " + Math.round(worldcoords.x) + ", Z " + Math.round(worldcoords.z);
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
// only need to create the control if there are items in the list.
|
// only need to create the control if there are items in the list.
|
||||||
// as defined in config.js
|
// as defined in config.js
|
||||||
|
/* TODO reimplement
|
||||||
if (overviewerConfig.objectGroups.signs.length > 0) {
|
if (overviewerConfig.objectGroups.signs.length > 0) {
|
||||||
// signpost display control
|
// signpost display control
|
||||||
var items = [];
|
var items = [];
|
||||||
@@ -719,8 +723,10 @@ var overviewer = {
|
|||||||
overviewer.util.createDropDown('Markers', items);
|
overviewer.util.createDropDown('Markers', items);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// if there are any regions data, lets show the option to hide/show them.
|
// if there are any regions data, lets show the option to hide/show them.
|
||||||
|
/* TODO reimplement
|
||||||
if (overviewerConfig.objectGroups.regions.length > 0) {
|
if (overviewerConfig.objectGroups.regions.length > 0) {
|
||||||
// region display control
|
// region display control
|
||||||
var items = [];
|
var items = [];
|
||||||
@@ -742,6 +748,7 @@ var overviewer = {
|
|||||||
}
|
}
|
||||||
overviewer.util.createDropDown('Regions', items);
|
overviewer.util.createDropDown('Regions', items);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (overviewerConfig.map.controls.overlays && overviewer.collections.overlays.length > 0) {
|
if (overviewerConfig.map.controls.overlays && overviewer.collections.overlays.length > 0) {
|
||||||
// overlay maps control
|
// overlay maps control
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ from settingsValidators import *
|
|||||||
# note that all defaults go thought the validator
|
# note that all defaults go thought the validator
|
||||||
|
|
||||||
render = {
|
render = {
|
||||||
"worldname": dict(required=True, validator=validateWorldPath),
|
"worldname": dict(required=True, validator=validateWorldPath, save_orig=True),
|
||||||
"rendermode": dict(required=False, validator=validateRenderMode),
|
"rendermode": dict(required=False, validator=validateRenderMode),
|
||||||
"northdirection": dict(required=False, validator=validateNorthDirection),
|
"northdirection": dict(required=False, validator=validateNorthDirection),
|
||||||
"renderrange": dict(required=False, validator=validateRenderRange),
|
"renderrange": dict(required=False, validator=validateRenderRange),
|
||||||
|
|||||||
Reference in New Issue
Block a user