mirror of
https://github.com/MapMakersAndProgrammers/io_scene_a3d.git
synced 2025-10-26 09:59:11 -07:00
Add option to scale map in import menu
This commit is contained in:
@@ -150,10 +150,11 @@ class BattleMapBlenderImporter:
|
|||||||
# Allows subsequent map loads to be faster
|
# Allows subsequent map loads to be faster
|
||||||
libraryCache = {}
|
libraryCache = {}
|
||||||
|
|
||||||
def __init__(self, mapData, lightmapData, propLibrarySourcePath, import_static_geom=True, import_collision_geom=False, import_spawn_points=False, import_lightmapdata=False):
|
def __init__(self, mapData, lightmapData, propLibrarySourcePath, map_scale_factor=0.01, import_static_geom=True, import_collision_geom=False, import_spawn_points=False, import_lightmapdata=False):
|
||||||
self.mapData = mapData
|
self.mapData = mapData
|
||||||
self.lightmapData = lightmapData
|
self.lightmapData = lightmapData
|
||||||
self.propLibrarySourcePath = propLibrarySourcePath
|
self.propLibrarySourcePath = propLibrarySourcePath
|
||||||
|
self.map_scale_factor = map_scale_factor
|
||||||
self.import_static_geom = import_static_geom
|
self.import_static_geom = import_static_geom
|
||||||
self.import_collision_geom = import_collision_geom
|
self.import_collision_geom = import_collision_geom
|
||||||
self.import_spawn_points = import_spawn_points
|
self.import_spawn_points = import_spawn_points
|
||||||
@@ -195,20 +196,29 @@ class BattleMapBlenderImporter:
|
|||||||
ob = self.createBlenderSpawnPoint(spawnPointData)
|
ob = self.createBlenderSpawnPoint(spawnPointData)
|
||||||
spawnPointObjects.append(ob)
|
spawnPointObjects.append(ob)
|
||||||
|
|
||||||
# Create empty objects to house each type of object
|
# Create container object to store all our objects
|
||||||
objects = propObjects + collisionObjects + spawnPointObjects
|
objects = propObjects + collisionObjects + spawnPointObjects
|
||||||
|
mapOB = bpy.data.objects.new("BattleMap", None)
|
||||||
|
mapOB.empty_display_size = 100
|
||||||
|
mapOB.scale = (self.map_scale_factor, self.map_scale_factor, self.map_scale_factor)
|
||||||
|
objects.append(mapOB)
|
||||||
|
|
||||||
|
# Create empty objects to house each type of object
|
||||||
if self.import_static_geom:
|
if self.import_static_geom:
|
||||||
groupOB = bpy.data.objects.new("StaticGeometry", None)
|
groupOB = bpy.data.objects.new("StaticGeometry", None)
|
||||||
|
groupOB.parent = mapOB
|
||||||
objects.append(groupOB)
|
objects.append(groupOB)
|
||||||
for ob in propObjects:
|
for ob in propObjects:
|
||||||
ob.parent = groupOB
|
ob.parent = groupOB
|
||||||
if self.import_collision_geom:
|
if self.import_collision_geom:
|
||||||
groupOB = bpy.data.objects.new("CollisionGeometry", None)
|
groupOB = bpy.data.objects.new("CollisionGeometry", None)
|
||||||
|
groupOB.parent = mapOB
|
||||||
objects.append(groupOB)
|
objects.append(groupOB)
|
||||||
for ob in collisionObjects:
|
for ob in collisionObjects:
|
||||||
ob.parent = groupOB
|
ob.parent = groupOB
|
||||||
if self.import_spawn_points:
|
if self.import_spawn_points:
|
||||||
groupOB = bpy.data.objects.new("SpawnPoints", None)
|
groupOB = bpy.data.objects.new("SpawnPoints", None)
|
||||||
|
groupOB.parent = mapOB
|
||||||
objects.append(groupOB)
|
objects.append(groupOB)
|
||||||
for ob in spawnPointObjects:
|
for ob in spawnPointObjects:
|
||||||
ob.parent = groupOB
|
ob.parent = groupOB
|
||||||
@@ -223,6 +233,8 @@ class BattleMapBlenderImporter:
|
|||||||
lightAngleX, lightAngleZ = self.lightmapData.lightAngle
|
lightAngleX, lightAngleZ = self.lightmapData.lightAngle
|
||||||
ob.rotation_mode = "XYZ"
|
ob.rotation_mode = "XYZ"
|
||||||
ob.rotation_euler = (lightAngleX, 0.0, lightAngleZ)
|
ob.rotation_euler = (lightAngleX, 0.0, lightAngleZ)
|
||||||
|
|
||||||
|
ob.parent = mapOB
|
||||||
objects.append(ob)
|
objects.append(ob)
|
||||||
|
|
||||||
# Set ambient world light
|
# Set ambient world light
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
from bpy.types import Operator, OperatorFileListElement, AddonPreferences
|
from bpy.types import Operator, OperatorFileListElement, AddonPreferences
|
||||||
from bpy.props import StringProperty, BoolProperty, CollectionProperty
|
from bpy.props import StringProperty, BoolProperty, CollectionProperty, FloatProperty
|
||||||
from bpy_extras.io_utils import ImportHelper
|
from bpy_extras.io_utils import ImportHelper
|
||||||
|
|
||||||
from .A3D import A3D
|
from .A3D import A3D
|
||||||
@@ -112,6 +112,7 @@ class ImportBattleMap(Operator, ImportHelper):
|
|||||||
import_collision_geom: BoolProperty(name="Import collision geometry", description="Collision geometry defines the geometry used for collision checks and cannot normally be seen by players", default=False)
|
import_collision_geom: BoolProperty(name="Import collision geometry", description="Collision geometry defines the geometry used for collision checks and cannot normally be seen by players", default=False)
|
||||||
import_spawn_points: BoolProperty(name="Import spawn points", description="Places a marker at locations where tanks can spawn", default=False)
|
import_spawn_points: BoolProperty(name="Import spawn points", description="Places a marker at locations where tanks can spawn", default=False)
|
||||||
import_lightmapdata: BoolProperty(name="Import lighting information", description="Loads the lightmapdata file which stores information about the sun, ambient lighting and shadow settings. Only works on remaster maps.", default=True)
|
import_lightmapdata: BoolProperty(name="Import lighting information", description="Loads the lightmapdata file which stores information about the sun, ambient lighting and shadow settings. Only works on remaster maps.", default=True)
|
||||||
|
map_scale_factor: FloatProperty(name="Map scale", description="Sets the map's default scale, maps and models are at a 100x scale so this allows you to directly import the map in the right size.", default=0.01, min=0.0, soft_max=1.0)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
import_panel_options_battlemap(self.layout, self)
|
import_panel_options_battlemap(self.layout, self)
|
||||||
@@ -139,7 +140,7 @@ class ImportBattleMap(Operator, ImportHelper):
|
|||||||
|
|
||||||
# Import data into blender
|
# Import data into blender
|
||||||
preferences = context.preferences.addons[__package__].preferences # TODO: check if this is set before proceeding
|
preferences = context.preferences.addons[__package__].preferences # TODO: check if this is set before proceeding
|
||||||
mapImporter = BattleMapBlenderImporter(mapData, lightmapData, preferences.propLibrarySourcePath, self.import_static_geom, self.import_collision_geom, self.import_spawn_points, self.import_lightmapdata)
|
mapImporter = BattleMapBlenderImporter(mapData, lightmapData, preferences.propLibrarySourcePath, self.map_scale_factor, self.import_static_geom, self.import_collision_geom, self.import_spawn_points, self.import_lightmapdata)
|
||||||
objects = mapImporter.importData()
|
objects = mapImporter.importData()
|
||||||
|
|
||||||
# Link objects
|
# Link objects
|
||||||
@@ -171,6 +172,7 @@ def import_panel_options_battlemap(layout, operator):
|
|||||||
body.prop(operator, "import_collision_geom")
|
body.prop(operator, "import_collision_geom")
|
||||||
body.prop(operator, "import_spawn_points")
|
body.prop(operator, "import_spawn_points")
|
||||||
body.prop(operator, "import_lightmapdata")
|
body.prop(operator, "import_lightmapdata")
|
||||||
|
body.prop(operator, "map_scale_factor")
|
||||||
|
|
||||||
def menu_func_import_a3d(self, context):
|
def menu_func_import_a3d(self, context):
|
||||||
self.layout.operator(ImportA3D.bl_idname, text="Alternativa3D HTML5 (.a3d)")
|
self.layout.operator(ImportA3D.bl_idname, text="Alternativa3D HTML5 (.a3d)")
|
||||||
|
|||||||
Reference in New Issue
Block a user