"""
Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.

SPDX-License-Identifier: Apache-2.0 OR MIT

"""

import os
import sys

# Parse arguments
if len(sys.argv) != 3:
    print('Incorrect number of args')
    exit()

engine_path = sys.argv[1]
if not os.path.exists(engine_path):
    print(f'Given path {engine_path} does not exist')
    exit()

project_path = sys.argv[2]
if not os.path.exists(project_path):
    print(f'Given path {project_path} does not exist')
    exit()

sys.path.insert(0, os.path.join(engine_path, 'Gems/Atom/RPI/Tools/'))

from atom_rpi_tools.pass_data import PassTemplate
import atom_rpi_tools.utils as utils

# Folder of this py file
dir_name = os.path.dirname(os.path.realpath(__file__))

# Patch render pipeline to insert a custom LyShine parent pass

# Gem::Atom_Feature_Common gem's path since default render pipeline is comming from this gem
gem_assets_path = os.path.join(engine_path,'Gems/Atom/feature/Common/Assets/')

pipeline_relatvie_path = 'Passes/MainPipeline.pass'
srcRenderPipeline = os.path.join(gem_assets_path, pipeline_relatvie_path)
destRenderPipeline = os.path.join(project_path, pipeline_relatvie_path)
# If the project doesn't have a customized main pipeline
# copy the default render pipeline from Atom_Common_Feature gem to same path in project folder
utils.find_or_copy_file(destRenderPipeline, srcRenderPipeline)

# Load project render pipeline
renderPipeline = PassTemplate(destRenderPipeline)

# Skip if LyShinePass already exist
newPassName = 'LyShinePass'
if renderPipeline.find_pass(newPassName)>-1:
    print('Skip merging. LyShinePass already exists')
    exit()
 
# Insert LyShinePass between DebugOverlayPass and UIPass
refPass = '<PASSWORD>'
# The data file for new pass request is in the same folder of the py file
newPassRequestFilePath = os.path.join(dir_name, 'LyShinePass.data') 
newPassRequestData = utils.load_json_file(newPassRequestFilePath)
insertIndex = renderPipeline.find_pass(refPass) + 1
if insertIndex>-1:
    renderPipeline.insert_pass_request(insertIndex, newPassRequestData)
else:
    print('Failed to find ', refPass)
    exit()
 
# Update attachment references for the passes following LyShinePass
renderPipeline.replace_references_after(newPassName, 'DebugOverlayPass', 'InputOutput', 'LyShinePass', 'ColorInputOutput')

# Save the updated render pipeline
renderPipeline.save()

"""
Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.

SPDX-License-Identifier: Apache-2.0 OR MIT

"""

import os
import sys

# Parse arguments
if len(sys.argv) != 3:
    print('Incorrect number of args')
    exit()

engine_path = sys.argv[1]
if not os.path.exists(engine_path):
    print(f'Given path {engine_path} does not exist')
    exit()

project_path = sys.argv[2]
if not os.path.exists(project_path):
    print(f'Given path {project_path} does not exist')
    exit()

sys.path.insert(0, os.path.join(engine_path, 'Gems/Atom/RPI/Tools/'))

from atom_rpi_tools.pass_data import PassTemplate
import atom_rpi_tools.utils as utils

# Folder of this py file
dir_name = os.path.dirname(os.path.realpath(__file__))

# Patch render pipeline to insert a custom LyShine parent pass

# Gem::Atom_Feature_Common gem's path since default render pipeline is comming from this gem
gem_assets_path = os.path.join(engine_path,'Gems/Atom/feature/Common/Assets/')

pipeline_relatvie_path = 'Passes/MainPipeline.pass'
srcRenderPipeline = os.path.join(gem_assets_path, pipeline_relatvie_path)
destRenderPipeline = os.path.join(project_path, pipeline_relatvie_path)
# If the project doesn't have a customized main pipeline
# copy the default render pipeline from Atom_Common_Feature gem to same path in project folder
utils.find_or_copy_file(destRenderPipeline, srcRenderPipeline)

# Load project render pipeline
renderPipeline = PassTemplate(destRenderPipeline)

# Skip if LyShinePass already exist
newPassName = 'LyShinePass'
if renderPipeline.find_pass(newPassName)>-1:
    print('Skip merging. LyShinePass already exists')
    exit()
 
# Insert LyShinePass between DebugOverlayPass and UIPass
refPass = '<PASSWORD>'
# The data file for new pass request is in the same folder of the py file
newPassRequestFilePath = os.path.join(dir_name, 'LyShinePass.data') 
newPassRequestData = utils.load_json_file(newPassRequestFilePath)
insertIndex = renderPipeline.find_pass(refPass) + 1
if insertIndex>-1:
    renderPipeline.insert_pass_request(insertIndex, newPassRequestData)
else:
    print('Failed to find ', refPass)
    exit()
 
# Update attachment references for the passes following LyShinePass
renderPipeline.replace_references_after(newPassName, 'DebugOverlayPass', 'InputOutput', 'LyShinePass', 'ColorInputOutput')

# Save the updated render pipeline
renderPipeline.save()

Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.  SPDX-License-Identifier: Apache-2.0 OR MIT # Parse arguments # Folder of this py file # Patch render pipeline to insert a custom LyShine parent pass # Gem::Atom_Feature_Common gem's path since default render pipeline is comming from this gem # If the project doesn't have a customized main pipeline # copy the default render pipeline from Atom_Common_Feature gem to same path in project folder # Load project render pipeline # Skip if LyShinePass already exist # Insert LyShinePass between DebugOverlayPass and UIPass # The data file for new pass request is in the same folder of the py file # Update attachment references for the passes following LyShinePass # Save the updated render pipeline