Skip to content

Commit

Permalink
load scenery meshes in H2 scenario imports
Browse files Browse the repository at this point in the history
  • Loading branch information
Steven Garcia committed Nov 24, 2023
1 parent 860da60 commit 0b656f3
Show file tree
Hide file tree
Showing 146 changed files with 3,576 additions and 925 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

from math import radians
from mathutils import Vector, Matrix, Euler
from .h1.format_retail import ClusterPortalFlags, SurfaceFlags as H1SurfaceFlags
from .h2.format_retail import SurfaceFlags as H2SurfaceFlags
from ..h1.file_scenario_structure_bsp.format import ClusterPortalFlags, SurfaceFlags as H1SurfaceFlags
from ..h2.file_scenario_structure_bsp.format import SurfaceFlags as H2SurfaceFlags

def build_scene(context, LEVEL, game_version, game_title, file_version, fix_rotations, empty_markers, report, mesh_processing, global_functions, tag_format, collection_override=None, cluster_collection_override=None):
collection = context.collection
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@

from math import radians
from mathutils import Matrix
from ..file_collision.h1.build_mesh_retail import build_collision as build_retail_h1_collision
from ..h1.file_model_collision_geometry.build_mesh import build_collision as build_retail_h1_collision

from ..file_collision.h2.build_mesh_retail import build_collision as build_retail_h2_collision
from ..h2.file_collision_model.build_mesh import build_collision as build_retail_h2_collision

def build_pathfinding_spheres(context, armature, COLLISION, fix_rotations, empty_markers, mesh_processing, global_functions):
collection = context.collection
Expand Down Expand Up @@ -101,4 +101,4 @@ def build_scene(context, COLLISION, game_version, game_title, file_version, fix_
report({'ERROR'}, "Game title not supported. Import will now be aborted")

else:
report({'ERROR'}, "No valid armature is active. Import will now be aborted")
report({'ERROR'}, "No valid armature is active. Import will now be aborted")
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@

import os
import bpy
import bmesh

from math import radians
from mathutils import Vector, Matrix, Euler
from mathutils import Matrix

def build_clusters(lightmap_group, SBSP_ASSET, level_root, random_color_gen, collection):
if len(lightmap_group.clusters) > 0:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@

from math import radians
from mathutils import Matrix
from ..file_model.h1.build_mesh_retail import get_geometry_layout as get_retail_h1_geometry_layout
from ..file_model.h2.build_mesh_retail import get_geometry_layout as get_retail_h2_geometry_layout
from ..h1.file_model.build_mesh import get_geometry_layout as get_retail_h1_geometry_layout
from ..h2.file_render_model.build_mesh import get_geometry_layout as get_retail_h2_geometry_layout

from ..file_animation.build_scene import build_scene as build_animation_scene
from .build_animations import build_scene as build_animation_scene

def generate_jms_skeleton(MODEL, file_version, armature, fix_rotations, mesh_processing):
first_frame = MODEL.transforms[0]
Expand Down Expand Up @@ -88,4 +88,4 @@ def build_scene(context, MODEL, game_version, game_title, file_version, fix_rota
get_retail_h2_geometry_layout(context, collection, MODEL, armature, mesh_processing, global_functions)
for marker_group in MODEL.marker_groups:
for marker in marker_group.markers:
mesh_processing.generate_marker(context, collection, game_version, game_title, file_version, None, MODEL, "", marker_group.name, armature, marker, fix_rotations, empty_markers, False)
mesh_processing.generate_marker(context, collection, game_version, game_title, file_version, None, MODEL, "", marker_group.name, armature, marker, fix_rotations, empty_markers, False)
Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,4 @@ def build_scene(context, PHYSICS, game_version, game_title, file_version, fix_ro
object_mesh.ass_jms.marker_mask_type = '2'

else:
report({'ERROR'}, "No valid armature is active. Import will now be aborted")
report({'ERROR'}, "No valid armature is active. Import will now be aborted")
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
#
# ##### END MIT LICENSE BLOCK #####

from ..file_scenario.h1.build_scene_retail import generate_scenario_scene as generate_h1_scenerio_retail
from ..file_scenario.h2.build_scene_retail import generate_scenario_scene as generate_h2_scenerio_retail
from .generate_h1_scenario import generate_scenario_scene as generate_h1_scenerio_retail
from .generate_h2_scenario import generate_scenario_scene as generate_h2_scenerio_retail

def build_scene(context, ASSET, game_version, game_title, version, fix_rotations, empty_markers, report, mesh_processing, global_functions, tag_format):
if game_title == "halo1":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,11 @@
import bmesh
import numpy as np

from .format_retail import DataTypesEnum, ObjectFlags, UnitFlags, VehicleFlags
from enum import Flag, auto
from math import degrees, radians
from mathutils import Vector, Quaternion, Euler, Matrix
from ..h1.mesh_helper.build_mesh_retail import get_object
from io_scene_halo.file_tag.file_structure_bsp import build_scene as build_scene_level
from ..h1.file_scenario.format import DataTypesEnum, ObjectFlags, UnitFlags, VehicleFlags
from math import radians
from mathutils import Euler, Matrix
from ..h1.file_scenario.mesh_helper.build_mesh import get_object
from . import build_bsp as build_scene_level

def generate_skies(context, level_root, tag_block, tag_format, report):
asset_collection = bpy.data.collections.get("Skies")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@
import bmesh
import numpy as np

from enum import Flag, auto
from math import degrees, radians
from mathutils import Vector, Quaternion, Euler, Matrix
from .format_retail import DataTypesEnum
from io_scene_halo.file_tag.file_structure_bsp import build_scene as build_scene_level
from io_scene_halo.file_tag.file_structure_lightmap import build_scene as build_scene_lightmap
from math import radians
from mathutils import Euler, Matrix
from ..h2.file_scenario.format import DataTypesEnum
from . import build_bsp as build_scene_level
from . import build_lightmap as build_scene_lightmap
from ..h2.file_scenario.mesh_helper.build_mesh import get_object

def generate_comments(context, level_root, comment_tag_block):
comment_collection = bpy.data.collections.get("Comments")
Expand Down Expand Up @@ -135,6 +135,48 @@ def generate_object_elements(level_root, collection_name, palette, tag_block, co

for palette_idx, palette_element in enumerate(palette):
ob = None
object_name = "temp_%s_%s" % (os.path.basename(palette_element.name), palette_idx)
ASSET = palette_element.parse_tag(tag_format, report, "halo2", "retail")
if not ASSET == None:
if collection_name == "Scenery":
MODEL = ASSET.scenery_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
RENDER = MODEL.model_body.render_model.parse_tag(tag_format, report, "halo2", "retail")
if not RENDER == None:
ob = get_object(asset_collection, RENDER, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Biped":
MODEL = ASSET.biped_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Vehicle":
MODEL = ASSET.vehicle_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Equipment":
MODEL = ASSET.equipment_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Weapons":
MODEL = ASSET.weapon_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Machines":
MODEL = ASSET.machine_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Controls":
MODEL = ASSET.control_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Light Fixtures":
MODEL = ASSET.light_fixture.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif collection_name == "Sound Scenery":
MODEL = ASSET.sound_scenery_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)

objects_list.append(ob)

for element_idx, element in enumerate(tag_block):
Expand Down Expand Up @@ -183,18 +225,18 @@ def generate_netgame_equipment_elements(level_root, tag_block, context, game_ver
ob = None
object_name = "%s_%s" % (os.path.basename(element.item_vehicle_collection.name), element_idx)
ASSET = element.item_vehicle_collection.parse_tag(tag_format, report, "halo2", "retail")
#if not ASSET == None:
#if len(ASSET.item_permutations) > 0:
#item_perutation_element = ASSET.item_permutations[0]
#ITEM = item_perutation_element.item.parse_tag(tag_format, report, "halo1", "retail")
#if item_perutation_element.item.tag_group == "eqip":
#MODEL = ITEM.equipment_body.model.parse_tag(tag_format, report, "halo1", "retail")
#if not MODEL == None:
#ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
#elif item_perutation_element.item.tag_group == "weap":
#MODEL = ITEM.weapon_body.model.parse_tag(tag_format, report, "halo1", "retail")
#if not MODEL == None:
#ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
if not ASSET == None:
if len(ASSET.item_permutations) > 0:
item_perutation_element = ASSET.item_permutations[0]
ITEM = item_perutation_element.item.parse_tag(tag_format, report, "halo2", "retail")
if item_perutation_element.item.tag_group == "eqip":
MODEL = ITEM.equipment_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)
elif item_perutation_element.item.tag_group == "weap":
MODEL = ITEM.weapon_body.model.parse_tag(tag_format, report, "halo2", "retail")
if not MODEL == None:
ob = get_object(asset_collection, MODEL, game_version, object_name, mesh_processing, random_color_gen, tag_format, report)

if ob == None:
ob = bpy.data.objects.new(object_name, None)
Expand Down
8 changes: 4 additions & 4 deletions io_scene_halo/file_tag/export_tag.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
import os
import bpy

from ..file_tag.file_scenario.h1.build_asset import build_asset as build_h1_scenario
from ..file_tag.file_scenario.h1.process_scene import generate_scenario_scene
from ..global_functions import tag_format, mesh_processing, global_functions, bitmap_processing
from ..file_tag.file_scenario.h1.process_file_retail import process_file_retail as process_h1_scenario
from .h1.file_scenario.build_asset import build_asset as build_h1_scenario
from .h1.file_scenario.process_scene import generate_scenario_scene
from ..global_functions import tag_format, mesh_processing, global_functions
from .h1.file_scenario.process_file import process_file as process_h1_scenario

def write_file(context, file_path, report):
DONOR_ASSET = None
Expand Down
Empty file.
88 changes: 0 additions & 88 deletions io_scene_halo/file_tag/file_actor_variant/process_json_retail.py

This file was deleted.

Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Loading

0 comments on commit 0b656f3

Please sign in to comment.