Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 33 additions & 11 deletions nimp/base_commands/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,10 @@ def run(self, env):
)

if env.variant:
variant_configuration_directory = package_configuration.configuration_directory + '/Variants/Active'
if env.use_ue_custom_config:
variant_configuration_directory = package_configuration.configuration_directory + '/Custom/' + env.variant
else:
variant_configuration_directory = package_configuration.configuration_directory + '/Variants/Active'
if os.path.exists(variant_configuration_directory):
package_configuration.configuration_directory = variant_configuration_directory
variant_resource_directory = package_configuration.resource_directory + '/Variants/' + env.variant
Expand Down Expand Up @@ -408,21 +411,23 @@ def _setup_default_config_file(config_file):

is_monorepo_behavior = env.unreal_version > 4.24
should_configure_variant = is_monorepo_behavior and env.variant is not None
active_configuration_directory = f'{project_directory}/Config/Variants/Active'
variants_directory = 'Custom' if env.use_ue_custom_config else 'Variants'
active_configuration_directory = f'{project_directory}/Config/{variants_directory}/Active'
if env.unreal_platform == 'PS5':
dst_title_conf = env.format('{uproject_dir}/Platforms/PS5/Build/TitleConfiguration.json')

try:
if is_monorepo_behavior:
_try_remove(active_configuration_directory, False)
if should_configure_variant:
variant_configuration_directory = f'{project_directory}/Config/Variants/{env.variant}'
variant_configuration_directory = f'{project_directory}/Config/{variants_directory}/{env.variant}'
if not os.path.exists(variant_configuration_directory):
raise FileNotFoundError(f"Variant not found : {variant_configuration_directory}")
logging.info(f'configuring variant {env.variant} in : {active_configuration_directory}')
logging.info('configuring variant %s in : %s', env.variant, active_configuration_directory)
shutil.copytree(
variant_configuration_directory, active_configuration_directory, copy_function=shutil.copyfile
)

# necessary for shader debug info in case no defaultEngine is present
_setup_default_config_file(f'{active_configuration_directory}/DefaultEngine.ini')
_setup_default_config_file(f'{active_configuration_directory}/DefaultGame.ini')
Expand Down Expand Up @@ -457,13 +462,19 @@ def enumerate_unreal_configs(env):
# order matters: from deepest ini to broadest (deep<-variant<-platform<-game)
config_files_patterns = []
if hasattr(env, 'variant') and env.variant:
config_files_patterns.extend(
if env.use_ue_custom_config:
config_files_patterns.extend([
'{uproject_dir}/Config/{cook_platform}/Custom/{variant}/{cook_platform}Game.ini',
'{uproject_dir}/Config/Custom/{variant}/DefaultGame.ini'
])
else:
config_files_patterns.extend(
[
'{uproject_dir}/Config/Variants/Active/{cook_platform}/{cook_platform}Game.ini',
'{uproject_dir}/Config/Variants/{variant}/{cook_platform}/{cook_platform}Game.ini',
'{uproject_dir}/Config/Variants/Active/DefaultGame.ini',
'{uproject_dir}/Config/Variants/{variant}/DefaultGame.ini',
]
'{uproject_dir}/Config/Variants/Active/{cook_platform}/{cook_platform}Game.ini',
'{uproject_dir}/Config/Variants/{variant}/{cook_platform}/{cook_platform}Game.ini',
'{uproject_dir}/Config/Variants/Active/DefaultGame.ini',
'{uproject_dir}/Config/Variants/{variant}/DefaultGame.ini',
]
)
config_files_patterns.extend(
[
Expand Down Expand Up @@ -784,7 +795,10 @@ def cook(env, package_configuration):
cook_command += shlex.split(option)

# Load the active variant
cook_command += ['-DNEConfigVariant']
if env.variant:
if env.use_ue_custom_config:
cook_command += [ f'-CustomConfig={env.variant}' ]
cook_command += [ '-DNEConfigVariant' ]

if package_configuration.shader_debug_info:
sdb_path = (
Expand Down Expand Up @@ -892,6 +906,10 @@ def stage(env, package_configuration):
if env.is_dne_legacy_ue4:
stage_command += ['-SkipPak']

if env.use_ue_custom_config:
if env.variant:
stage_command += [ f'-CustomConfig={env.variant}' ]

stage_success = nimp.sys.process.call(stage_command, dry_run=env.dry_run, heartbeat=60)
if stage_success != 0:
raise RuntimeError('Stage failed')
Expand Down Expand Up @@ -1505,6 +1523,10 @@ def package_with_uat(env, package_configuration):
if package_configuration.no_compile_packaging:
package_command += ['-NoCompile']

if env.use_ue_custom_config:
if env.variant:
package_command += [ f'-CustomConfig={env.variant}' ]

for option in package_configuration.extra_options:
package_command += shlex.split(option)

Expand Down