Merge branch 'development' of https://github.com/o3de/o3de into MultiplayerWeapons

monroegm-disable-blank-issue-2
kberg-amzn 4 years ago
commit 52780f2130

@ -8,58 +8,43 @@ SPDX-License-Identifier: Apache-2.0 OR MIT
import logging
import os
import pytest
import time
import typing
from datetime import datetime
import ly_test_tools.log.log_monitor
# fixture imports
from AWS.Windows.resource_mappings.resource_mappings import resource_mappings
from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor
from .aws_metrics_utils import aws_metrics_utils
from .aws_metrics_custom_thread import AWSMetricsThread
AWS_METRICS_FEATURE_NAME = 'AWSMetrics'
GAME_LOG_NAME = 'Game.log'
CONTEXT_VARIABLE = ['-c', 'batch_processing=true']
logger = logging.getLogger(__name__)
def setup(launcher: ly_test_tools.launchers.Launcher,
cdk: pytest.fixture,
asset_processor: asset_processor,
resource_mappings: resource_mappings,
context_variable: str = '') -> typing.Tuple[ly_test_tools.log.log_monitor.LogMonitor, str, str]:
def setup(launcher: pytest.fixture,
asset_processor: pytest.fixture) -> pytest.fixture:
"""
Set up the CDK application and start the log monitor.
Set up the resource mapping configuration and start the log monitor.
:param launcher: Client launcher for running the test level.
:param cdk: CDK application for deploying the AWS resources.
:param asset_processor: asset_processor fixture.
:param resource_mappings: resource_mappings fixture.
:param context_variable: context_variable for enable optional CDK feature.
:return log monitor object, metrics file path and the metrics stack name.
"""
logger.info(f'Cdk stack names:\n{cdk.list()}')
stacks = cdk.deploy(context_variable=context_variable)
resource_mappings.populate_output_keys(stacks)
asset_processor.start()
asset_processor.wait_for_idle()
metrics_file_path = os.path.join(launcher.workspace.paths.project(), 'user',
AWS_METRICS_FEATURE_NAME, 'metrics.json')
remove_file(metrics_file_path)
file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME)
remove_file(file_to_monitor)
# Initialize the log monitor.
log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor)
return log_monitor, metrics_file_path, stacks[0]
return log_monitor
def monitor_metrics_submission(log_monitor: ly_test_tools.log.log_monitor.LogMonitor) -> None:
def monitor_metrics_submission(log_monitor: pytest.fixture) -> None:
"""
Monitor the messages and notifications for submitting metrics.
:param log_monitor: Log monitor to check the log messages.
@ -67,6 +52,7 @@ def monitor_metrics_submission(log_monitor: ly_test_tools.log.log_monitor.LogMon
expected_lines = [
'(Script) - Submitted metrics without buffer.',
'(Script) - Submitted metrics with buffer.',
'(Script) - Flushed the buffered metrics.',
'(Script) - Metrics is sent successfully.'
]
@ -87,87 +73,132 @@ def monitor_metrics_submission(log_monitor: ly_test_tools.log.log_monitor.LogMon
f'unexpected_lines values: {unexpected_lines}')
def remove_file(file_path: str) -> None:
def query_metrics_from_s3(aws_metrics_utils: pytest.fixture, stack_name: str) -> None:
"""
Remove a local file and its directory.
:param file_path: Path to the local file.
Verify that the metrics events are delivered to the S3 bucket and can be queried.
aws_metrics_utils: aws_metrics_utils fixture.
stack_name: name of the CloudFormation stack.
"""
if os.path.exists(file_path):
os.remove(file_path)
analytics_bucket_name = aws_metrics_utils.get_analytics_bucket_name(stack_name)
aws_metrics_utils.verify_s3_delivery(analytics_bucket_name)
logger.info('Metrics are sent to S3.')
aws_metrics_utils.run_glue_crawler(f'{stack_name}-EventsCrawler')
aws_metrics_utils.run_named_queries(f'{stack_name}-AthenaWorkGroup')
logger.info('Query metrics from S3 successfully.')
# Empty the S3 bucket. S3 buckets can only be deleted successfully when it doesn't contain any object.
aws_metrics_utils.empty_batch_analytics_bucket(analytics_bucket_name)
file_dir = os.path.dirname(file_path)
if os.path.exists(file_dir) and len(os.listdir(file_dir)) == 0:
os.rmdir(file_dir)
def verify_operational_metrics(aws_metrics_utils: pytest.fixture, stack_name: str, start_time: datetime) -> None:
"""
Verify that operational health metrics are delivered to CloudWatch.
aws_metrics_utils: aws_metrics_utils fixture.
stack_name: name of the CloudFormation stack.
start_time: Time when the game launcher starts.
"""
aws_metrics_utils.verify_cloud_watch_delivery(
'AWS/Lambda',
'Invocations',
[{'Name': 'FunctionName',
'Value': f'{stack_name}-AnalyticsProcessingLambdaName'}],
start_time)
logger.info('AnalyticsProcessingLambda metrics are sent to CloudWatch.')
aws_metrics_utils.verify_cloud_watch_delivery(
'AWS/Lambda',
'Invocations',
[{'Name': 'FunctionName',
'Value': f'{stack_name}-EventsProcessingLambda'}],
start_time)
logger.info('EventsProcessingLambda metrics are sent to CloudWatch.')
def start_kinesis_analytics_application(aws_metrics_utils: pytest.fixture, stack_name: str) -> None:
"""
Start the Kinesis analytics application for real-time analytics.
aws_metrics_utils: aws_metrics_utils fixture.
stack_name: name of the CloudFormation stack.
"""
analytics_application_name = f'{stack_name}-AnalyticsApplication'
aws_metrics_utils.start_kinesis_data_analytics_application(analytics_application_name)
@pytest.mark.SUITE_periodic
@pytest.mark.usefixtures('automatic_process_killer')
@pytest.mark.parametrize('project', ['AutomatedTesting'])
@pytest.mark.parametrize('level', ['AWS/Metrics'])
@pytest.mark.parametrize('feature_name', [AWS_METRICS_FEATURE_NAME])
@pytest.mark.usefixtures('resource_mappings')
@pytest.mark.parametrize('resource_mappings_filename', ['default_aws_resource_mappings.json'])
@pytest.mark.usefixtures('aws_credentials')
@pytest.mark.parametrize('profile_name', ['AWSAutomationTest'])
@pytest.mark.parametrize('region_name', ['us-west-2'])
@pytest.mark.parametrize('assume_role_arn', ['arn:aws:iam::645075835648:role/o3de-automation-tests'])
@pytest.mark.usefixtures('cdk')
@pytest.mark.parametrize('session_name', ['o3de-Automation-session'])
@pytest.mark.parametrize('deployment_params', [CONTEXT_VARIABLE])
class TestAWSMetricsWindows(object):
def test_realtime_analytics_metrics_sent_to_cloudwatch(self,
level: str,
launcher: ly_test_tools.launchers.Launcher,
asset_processor: pytest.fixture,
workspace: pytest.fixture,
aws_utils: pytest.fixture,
aws_credentials: pytest.fixture,
resource_mappings: pytest.fixture,
cdk: pytest.fixture,
aws_metrics_utils: aws_metrics_utils,
):
"""
Test class to verify the real-time and batch analytics for metrics.
"""
@pytest.mark.parametrize('destroy_stacks_on_teardown', [False])
def test_realtime_and_batch_analytics(self,
level: str,
launcher: pytest.fixture,
asset_processor: pytest.fixture,
workspace: pytest.fixture,
aws_utils: pytest.fixture,
cdk: pytest.fixture,
aws_metrics_utils: pytest.fixture):
"""
Tests that the submitted metrics are sent to CloudWatch for real-time analytics.
Verify that the metrics events are sent to CloudWatch and S3 for analytics.
"""
log_monitor, metrics_file_path, stack_name = setup(launcher, cdk, asset_processor, resource_mappings)
# Start the Kinesis Data Analytics application for real-time analytics.
analytics_application_name = f'{stack_name}-AnalyticsApplication'
aws_metrics_utils.start_kinesis_data_analytics_application(analytics_application_name)
# Start Kinesis analytics application on a separate thread to avoid blocking the test.
kinesis_analytics_application_thread = AWSMetricsThread(target=start_kinesis_analytics_application,
args=(aws_metrics_utils, cdk.stacks[0]))
kinesis_analytics_application_thread.start()
log_monitor = setup(launcher, asset_processor)
# Kinesis analytics application needs to be in the running state before we start the game launcher.
kinesis_analytics_application_thread.join()
launcher.args = ['+LoadLevel', level]
launcher.args.extend(['-rhi=null'])
start_time = datetime.utcnow()
with launcher.start(launch_ap=False):
start_time = datetime.utcnow()
monitor_metrics_submission(log_monitor)
# Verify that operational health metrics are delivered to CloudWatch.
aws_metrics_utils.verify_cloud_watch_delivery(
'AWS/Lambda',
'Invocations',
[{'Name': 'FunctionName',
'Value': f'{stack_name}-AnalyticsProcessingLambdaName'}],
start_time)
logger.info('Operational health metrics sent to CloudWatch.')
# Verify that real-time analytics metrics are delivered to CloudWatch.
aws_metrics_utils.verify_cloud_watch_delivery(
AWS_METRICS_FEATURE_NAME,
'TotalLogins',
[],
start_time)
logger.info('Real-time metrics sent to CloudWatch.')
# Stop the Kinesis Data Analytics application.
aws_metrics_utils.stop_kinesis_data_analytics_application(analytics_application_name)
logger.info('Real-time metrics are sent to CloudWatch.')
# Run time-consuming verifications on separate threads to avoid blocking the test.
verification_threads = list()
verification_threads.append(
AWSMetricsThread(target=query_metrics_from_s3, args=(aws_metrics_utils, cdk.stacks[0])))
verification_threads.append(
AWSMetricsThread(target=verify_operational_metrics, args=(aws_metrics_utils, cdk.stacks[0], start_time)))
for thread in verification_threads:
thread.start()
for thread in verification_threads:
thread.join()
@pytest.mark.parametrize('destroy_stacks_on_teardown', [True])
def test_unauthorized_user_request_rejected(self,
level: str,
launcher: ly_test_tools.launchers.Launcher,
cdk: pytest.fixture,
aws_credentials: pytest.fixture,
launcher: pytest.fixture,
asset_processor: pytest.fixture,
resource_mappings: pytest.fixture,
workspace: pytest.fixture):
"""
Tests that unauthorized users cannot send metrics events to the AWS backed backend.
Verify that unauthorized users cannot send metrics events to the AWS backed backend.
"""
log_monitor, metrics_file_path, stack_name = setup(launcher, cdk, asset_processor, resource_mappings)
log_monitor = setup(launcher, asset_processor)
# Set invalid AWS credentials.
launcher.args = ['+LoadLevel', level, '+cl_awsAccessKey', 'AKIAIOSFODNN7EXAMPLE',
'+cl_awsSecretKey', 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY']
@ -180,51 +211,3 @@ class TestAWSMetricsWindows(object):
halt_on_unexpected=True)
assert result, 'Metrics events are sent successfully by unauthorized user'
logger.info('Unauthorized user is rejected to send metrics.')
def test_batch_analytics_metrics_delivered_to_s3(self,
level: str,
launcher: ly_test_tools.launchers.Launcher,
cdk: pytest.fixture,
aws_credentials: pytest.fixture,
asset_processor: pytest.fixture,
resource_mappings: pytest.fixture,
aws_utils: pytest.fixture,
aws_metrics_utils: aws_metrics_utils,
workspace: pytest.fixture):
"""
Tests that the submitted metrics are sent to the data lake for batch analytics.
"""
log_monitor, metrics_file_path, stack_name = setup(launcher, cdk, asset_processor, resource_mappings,
context_variable='batch_processing=true')
analytics_bucket_name = aws_metrics_utils.get_analytics_bucket_name(stack_name)
launcher.args = ['+LoadLevel', level]
launcher.args.extend(['-rhi=null'])
with launcher.start(launch_ap=False):
start_time = datetime.utcnow()
monitor_metrics_submission(log_monitor)
# Verify that operational health metrics are delivered to CloudWatch.
aws_metrics_utils.verify_cloud_watch_delivery(
'AWS/Lambda',
'Invocations',
[{'Name': 'FunctionName',
'Value': f'{stack_name}-EventsProcessingLambda'}],
start_time)
logger.info('Operational health metrics sent to CloudWatch.')
aws_metrics_utils.verify_s3_delivery(analytics_bucket_name)
logger.info('Metrics sent to S3.')
# Run the glue crawler to populate the AWS Glue Data Catalog with tables.
aws_metrics_utils.run_glue_crawler(f'{stack_name}-EventsCrawler')
# Run named queries on the table to verify the batch analytics.
aws_metrics_utils.run_named_queries(f'{stack_name}-AthenaWorkGroup')
logger.info('Query metrics from S3 successfully.')
# Kinesis Data Firehose buffers incoming data before it delivers it to Amazon S3. Sleep for the
# default interval (60s) to make sure that all the metrics are sent to the bucket before cleanup.
time.sleep(60)
# Empty the S3 bucket. S3 buckets can only be deleted successfully when it doesn't contain any object.
aws_metrics_utils.empty_s3_bucket(analytics_bucket_name)

@ -0,0 +1,29 @@
"""
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
"""
from threading import Thread
class AWSMetricsThread(Thread):
"""
Custom thread for raising assertion errors on the main thread.
"""
def __init__(self, **kwargs):
super().__init__(**kwargs)
self._error = None
def run(self) -> None:
try:
super().run()
except AssertionError as e:
self._error = e
def join(self, **kwargs) -> None:
super().join(**kwargs)
if self._error:
raise AssertionError(self._error)

@ -13,7 +13,6 @@ import typing
from datetime import datetime
from botocore.exceptions import WaiterError
from AWS.common.aws_utils import AwsUtils
from .aws_metrics_waiters import KinesisAnalyticsApplicationUpdatedWaiter, \
CloudWatchMetricsDeliveredWaiter, DataLakeMetricsDeliveredWaiter, GlueCrawlerReadyWaiter
@ -29,7 +28,7 @@ class AWSMetricsUtils:
Provide utils functions for the AWSMetrics gem to interact with the deployed resources.
"""
def __init__(self, aws_utils: AwsUtils):
def __init__(self, aws_utils: pytest.fixture):
self._aws_util = aws_utils
def start_kinesis_data_analytics_application(self, application_name: str) -> None:
@ -199,14 +198,13 @@ class AWSMetricsUtils:
assert state == 'SUCCEEDED', f'Failed to run the named query {named_query.get("Name", {})}'
def empty_s3_bucket(self, bucket_name: str) -> None:
def empty_batch_analytics_bucket(self, bucket_name: str) -> None:
"""
Empty the S3 bucket following:
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/migrations3.html
:param bucket_name: Name of the S3 bucket.
"""
s3 = self._aws_util.resource('s3')
bucket = s3.Bucket(bucket_name)

@ -72,15 +72,14 @@ class Cdk:
f'\nError:{error.stderr}')
def setup(self, cdk_path: str, project: str, account_id: str,
workspace: pytest.fixture, session: boto3.session.Session, bootstrap_required: bool):
workspace: pytest.fixture, session: boto3.session.Session):
"""
:param cdk_path: Path where cdk app.py is stored.
:param project: Project name used for cdk project name env variable.
:param account_id: AWS account id to use with cdk application.
:param workspace: ly_test_tools workspace fixture.
:param workspace: bootstrap_required deploys bootstrap stack.
:param session: Current boto3 session, provides credentials and region.
"""
self._cdk_env = os.environ.copy()
unique_id = uuid.uuid4().hex[-4:]
self._cdk_env['O3DE_AWS_PROJECT_NAME'] = project[:4] + unique_id if len(project) > 4 else project + unique_id
@ -104,8 +103,7 @@ class Cdk:
logger.info(f'Installing cdk python dependencies: {output}')
if bootstrap_required:
self.bootstrap()
self.bootstrap()
def bootstrap(self) -> None:
"""
@ -124,15 +122,19 @@ class Cdk:
logger.warning(f'Failed creating Bootstrap stack {BOOTSTRAP_STACK_NAME} not found. '
f'\nError:{clientError["Error"]["Message"]}')
def list(self) -> List[str]:
def list(self, deployment_params: List[str] = None) -> List[str]:
"""
lists cdk stack names
:return List of cdk stack names
lists cdk stack names.
:param deployment_params: Deployment parameters like --all can be passed in this way.
:return List of cdk stack names.
"""
if not self._cdk_path:
return []
list_cdk_application_cmd = ['cdk', 'list']
if deployment_params:
list_cdk_application_cmd.extend(deployment_params)
output = process_utils.check_output(
list_cdk_application_cmd,
cwd=self._cdk_path,
@ -141,36 +143,36 @@ class Cdk:
return output.splitlines()
def synthesize(self) -> None:
def synthesize(self, deployment_params: List[str] = None) -> None:
"""
Synthesizes all cdk stacks
Synthesizes all cdk stacks.
:param deployment_params: Deployment parameters like --all can be passed in this way.
"""
if not self._cdk_path:
return
list_cdk_application_cmd = ['cdk', 'synth']
synth_cdk_application_cmd = ['cdk', 'synth']
if deployment_params:
synth_cdk_application_cmd.extend(deployment_params)
process_utils.check_output(
list_cdk_application_cmd,
synth_cdk_application_cmd,
cwd=self._cdk_path,
env=self._cdk_env,
shell=True)
def deploy(self, context_variable: str = '', additonal_params: List[str] = None) -> List[str]:
def deploy(self, deployment_params: List[str] = None) -> List[str]:
"""
Deploys all the CDK stacks.
:param context_variable: Context variable for enabling optional features.
:param additonal_params: Additonal parameters like --all can be passed in this way.
:param deployment_params: Deployment parameters like --all can be passed in this way.
:return List of deployed stack arns.
"""
if not self._cdk_path:
return []
deploy_cdk_application_cmd = ['cdk', 'deploy', '--require-approval', 'never']
if additonal_params:
deploy_cdk_application_cmd.extend(additonal_params)
if context_variable:
deploy_cdk_application_cmd.extend(['-c', f'{context_variable}'])
if deployment_params:
deploy_cdk_application_cmd.extend(deployment_params)
output = process_utils.check_output(
deploy_cdk_application_cmd,
@ -178,21 +180,23 @@ class Cdk:
env=self._cdk_env,
shell=True)
stacks = []
for line in output.splitlines():
line_sections = line.split('/')
assert len(line_sections), 3
stacks.append(line.split('/')[-2])
self._stacks.append(line.split('/')[-2])
return stacks
return self._stacks
def destroy(self) -> None:
def destroy(self, deployment_params: List[str] = None) -> None:
"""
Destroys the cdk application.
:param deployment_params: Deployment parameters like --all can be passed in this way.
"""
logger.info(f'CDK Path {self._cdk_path}')
destroy_cdk_application_cmd = ['cdk', 'destroy', '--all', '-f']
destroy_cdk_application_cmd = ['cdk', 'destroy', '-f']
if deployment_params:
destroy_cdk_application_cmd.extend(deployment_params)
try:
process_utils.check_output(
@ -238,3 +242,7 @@ class Cdk:
# self._session.client('cloudformation').delete_stack(
# StackName=BOOTSTRAP_STACK_NAME
# )
@property
def stacks(self):
return self._stacks

@ -10,10 +10,7 @@ import logging
import ly_test_tools.log.log_monitor
# fixture imports
from AWS.Windows.resource_mappings.resource_mappings import resource_mappings
from AWS.Windows.cdk.cdk_utils import Cdk
from AWS.common.aws_utils import AwsUtils
from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor as asset_processor
from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor
AWS_PROJECT_NAME = 'AWS-AutomationTest'
AWS_CLIENT_AUTH_FEATURE_NAME = 'AWSClientAuth'
@ -37,11 +34,47 @@ logger = logging.getLogger(__name__)
@pytest.mark.parametrize('region_name', ['us-west-2'])
@pytest.mark.parametrize('assume_role_arn', ['arn:aws:iam::645075835648:role/o3de-automation-tests'])
@pytest.mark.parametrize('session_name', ['o3de-Automation-session'])
class TestAWSClientAuthPasswordSignIn(object):
@pytest.mark.usefixtures('cdk')
@pytest.mark.parametrize('deployment_params', [[]])
class TestAWSClientAuthWindows(object):
"""
Test class to verify AWS Cognito IDP Password sign in and Cognito Identity pool authenticated authorization.
Test class to verify AWS Client Auth gem features on Windows.
"""
@pytest.mark.parametrize('level', ['AWS/ClientAuth'])
@pytest.mark.parametrize('destroy_stacks_on_teardown', [False])
def test_anonymous_credentials(self,
level: str,
launcher: pytest.fixture,
resource_mappings: pytest.fixture,
workspace: pytest.fixture,
asset_processor: pytest.fixture
):
"""
Test to verify AWS Cognito Identity pool anonymous authorization.
Setup: Deploys cdk and updates resource mapping file.
Tests: Getting credentials when no credentials are configured
Verification: Log monitor looks for success credentials log.
"""
asset_processor.start()
asset_processor.wait_for_idle()
file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME)
log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor)
launcher.args = ['+LoadLevel', level]
launcher.args.extend(['-rhi=null'])
with launcher.start(launch_ap=False):
result = log_monitor.monitor_log_for_lines(
expected_lines=['(Script) - Success anonymous credentials'],
unexpected_lines=['(Script) - Fail anonymous credentials'],
halt_on_unexpected=True,
)
assert result, 'Anonymous credentials fetched successfully.'
@pytest.mark.parametrize('destroy_stacks_on_teardown', [True])
def test_password_signin_credentials(self,
launcher: pytest.fixture,
cdk: pytest.fixture,
@ -51,13 +84,12 @@ class TestAWSClientAuthPasswordSignIn(object):
aws_utils: pytest.fixture
):
"""
Test to verify AWS Cognito IDP Password sign in and Cognito Identity pool authenticated authorization.
Setup: Deploys cdk and updates resource mapping file.
Tests: Sign up new test user, admin confirm the user, sign in and get aws credentials.
Verification: Log monitor looks for success credentials log.
"""
logger.info(f'Cdk stack names:\n{cdk.list()}')
stacks = cdk.deploy()
resource_mappings.populate_output_keys(stacks)
asset_processor.start()
asset_processor.wait_for_idle()

@ -1,77 +0,0 @@
"""
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 pytest
import os
import logging
import ly_test_tools.log.log_monitor
# fixture imports
from AWS.Windows.resource_mappings.resource_mappings import resource_mappings
from AWS.Windows.cdk.cdk_utils import Cdk
from AWS.common.aws_utils import AwsUtils
from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor as asset_processor
AWS_PROJECT_NAME = 'AWS-AutomationTest'
AWS_CLIENT_AUTH_FEATURE_NAME = 'AWSClientAuth'
AWS_CLIENT_AUTH_DEFAULT_PROFILE_NAME = 'default'
GAME_LOG_NAME = 'Game.log'
logger = logging.getLogger(__name__)
@pytest.mark.SUITE_periodic
@pytest.mark.usefixtures('automatic_process_killer')
@pytest.mark.usefixtures('asset_processor')
@pytest.mark.usefixtures('workspace')
@pytest.mark.parametrize('project', ['AutomatedTesting'])
@pytest.mark.parametrize('level', ['AWS/ClientAuth'])
@pytest.mark.usefixtures('cdk')
@pytest.mark.parametrize('feature_name', [AWS_CLIENT_AUTH_FEATURE_NAME])
@pytest.mark.usefixtures('resource_mappings')
@pytest.mark.parametrize('resource_mappings_filename', ['default_aws_resource_mappings.json'])
@pytest.mark.usefixtures('aws_utils')
@pytest.mark.parametrize('region_name', ['us-west-2'])
@pytest.mark.parametrize('assume_role_arn', ['arn:aws:iam::645075835648:role/o3de-automation-tests'])
@pytest.mark.parametrize('session_name', ['o3de-Automation-session'])
class TestAWSClientAuthAnonymousCredentials(object):
"""
Test class to verify AWS Cognito Identity pool anonymous authorization.
"""
def test_anonymous_credentials(self,
level: str,
launcher: pytest.fixture,
cdk: pytest.fixture,
resource_mappings: pytest.fixture,
workspace: pytest.fixture,
asset_processor: pytest.fixture
):
"""
Setup: Deploys cdk and updates resource mapping file.
Tests: Getting AWS credentials for no signed in user.
Verification: Log monitor looks for success credentials log.
"""
logger.info(f'Cdk stack names:\n{cdk.list()}')
stacks = cdk.deploy()
resource_mappings.populate_output_keys(stacks)
asset_processor.start()
asset_processor.wait_for_idle()
file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME)
log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor)
launcher.args = ['+LoadLevel', level]
launcher.args.extend(['-rhi=null'])
with launcher.start(launch_ap=False):
result = log_monitor.monitor_log_for_lines(
expected_lines=['(Script) - Success anonymous credentials'],
unexpected_lines=['(Script) - Fail anonymous credentials'],
halt_on_unexpected=True,
)
assert result, 'Anonymous credentials fetched successfully.'

@ -7,7 +7,8 @@ SPDX-License-Identifier: Apache-2.0 OR MIT
import os
import logging
import time
import typing
import shutil
import pytest
import ly_test_tools
@ -16,7 +17,6 @@ import ly_test_tools.environment.process_utils as process_utils
import ly_test_tools.o3de.asset_processor_utils as asset_processor_utils
from botocore.exceptions import ClientError
from AWS.Windows.resource_mappings.resource_mappings import resource_mappings
from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor
AWS_CORE_FEATURE_NAME = 'AWSCore'
@ -29,18 +29,49 @@ GAME_LOG_NAME = 'Game.log'
logger = logging.getLogger(__name__)
def setup(launcher: pytest.fixture, cdk: pytest.fixture, resource_mappings: pytest.fixture, asset_processor: pytest.fixture):
def setup(launcher: pytest.fixture, asset_processor: pytest.fixture) -> typing.Tuple[pytest.fixture, str]:
"""
Set up the resource mapping configuration and start the log monitor.
:param launcher: Client launcher for running the test level.
:param asset_processor: asset_processor fixture.
:return log monitor object, metrics file path and the metrics stack name.
"""
# Create the temporary directory for downloading test file from S3.
user_dir = os.path.join(launcher.workspace.paths.project(), 'user')
s3_download_dir = os.path.join(user_dir, 's3_download')
if not os.path.exists(s3_download_dir):
os.makedirs(s3_download_dir)
asset_processor_utils.kill_asset_processor()
logger.info(f'Cdk stack names:\n{cdk.list()}')
stacks = cdk.deploy(additonal_params=['--all'])
resource_mappings.populate_output_keys(stacks)
asset_processor.start()
asset_processor.wait_for_idle()
file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME)
log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor)
return log_monitor
return log_monitor, s3_download_dir
def write_test_data_to_dynamodb_table(resource_mappings: pytest.fixture, aws_utils: pytest.fixture) -> None:
"""
Write test data to the DynamoDB table created by the CDK application.
:param resource_mappings: resource_mappings fixture.
:param aws_utils: aws_utils fixture.
"""
table_name = resource_mappings.get_resource_name_id("AWSCore.ExampleDynamoTableOutput")
try:
aws_utils.client('dynamodb').put_item(
TableName=table_name,
Item={
'id': {
'S': 'Item1'
}
}
)
logger.info(f'Loaded data into table {table_name}')
except ClientError:
logger.exception(f'Failed to load data into table {table_name}')
raise
@pytest.mark.SUITE_periodic
@ -58,130 +89,57 @@ def setup(launcher: pytest.fixture, cdk: pytest.fixture, resource_mappings: pyte
@pytest.mark.parametrize('resource_mappings_filename', [AWS_RESOURCE_MAPPING_FILE_NAME])
@pytest.mark.usefixtures('aws_credentials')
@pytest.mark.parametrize('profile_name', ['AWSAutomationTest'])
@pytest.mark.usefixtures('cdk')
@pytest.mark.parametrize('deployment_params', [['--all']])
@pytest.mark.parametrize('destroy_stacks_on_teardown', [True])
class TestAWSCoreAWSResourceInteraction(object):
"""
Test class to verify AWSCore can downloading a file from S3.
Test class to verify the scripting behavior for the AWSCore gem.
"""
def test_download_from_s3(self,
level: str,
launcher: pytest.fixture,
cdk: pytest.fixture,
workspace: pytest.fixture,
asset_processor: pytest.fixture,
resource_mappings: pytest.fixture
):
"""
Setup: Deploys cdk and updates resource mapping file.
Tests: Getting AWS credentials for no signed in user.
Verification: Log monitor looks for success download. The existence and contents of the file are also verified.
"""
log_monitor = setup(launcher, cdk, resource_mappings, asset_processor)
launcher.args = ['+LoadLevel', level]
launcher.args.extend(['-rhi=null'])
user_dir = os.path.join(workspace.paths.project(), 'user')
download_dir = os.path.join(user_dir, 's3_download')
if not os.path.exists(download_dir):
os.makedirs(download_dir)
with launcher.start(launch_ap=False):
result = log_monitor.monitor_log_for_lines(
expected_lines=['(Script) - [S3] Head object request is done',
'(Script) - [S3] Head object success: Object example.txt is found.',
'(Script) - [S3] Get object success: Object example.txt is downloaded.'],
unexpected_lines=['(Script) - [S3] Head object error: No response body.',
'(Script) - [S3] Get object error: Request validation failed, output file directory doesn\'t exist.'],
halt_on_unexpected=True
)
assert result, "Expected lines weren't found."
download_path = os.path.join(download_dir, 'output.txt')
file_was_downloaded = os.path.exists(download_path)
# clean up the file directories.
if file_was_downloaded:
os.remove(download_path)
os.rmdir(download_dir)
assert file_was_downloaded, 'The expected file wasn\'t successfully downloaded'
def test_invoke_lambda(self,
level: str,
launcher: pytest.fixture,
cdk: pytest.fixture,
resource_mappings: pytest.fixture,
workspace: pytest.fixture,
asset_processor: pytest.fixture
):
"""
Setup: Deploys the CDK.
Tests: Runs the test level.
Verification: Searches the logs for the expected output from the example lambda.
"""
log_monitor = setup(launcher, cdk, resource_mappings, asset_processor)
launcher.args = ['+LoadLevel', level]
launcher.args.extend(['-rhi=null'])
with launcher.start(launch_ap=False):
result = log_monitor.monitor_log_for_lines(
expected_lines=['(Script) - [Lambda] Completed Invoke',
'(Script) - [Lambda] Invoke success: {"statusCode": 200, "body": {}}'],
unexpected_lines=['(Script) - Request validation failed, output file miss full path.',
'(Script) - '],
halt_on_unexpected=True
)
assert result
def test_get_dynamodb_value(self,
@pytest.mark.parametrize('expected_lines', [
['(Script) - [S3] Head object request is done',
'(Script) - [S3] Head object success: Object example.txt is found.',
'(Script) - [S3] Get object success: Object example.txt is downloaded.',
'(Script) - [Lambda] Completed Invoke',
'(Script) - [Lambda] Invoke success: {"statusCode": 200, "body": {}}',
'(Script) - [DynamoDB] Results finished']])
@pytest.mark.parametrize('unexpected_lines', [
['(Script) - [S3] Head object error: No response body.',
'(Script) - [S3] Get object error: Request validation failed, output file directory doesn\'t exist.',
'(Script) - Request validation failed, output file miss full path.',
'(Script) - ']])
def test_scripting_behavior(self,
level: str,
launcher: pytest.fixture,
cdk: pytest.fixture,
resource_mappings: pytest.fixture,
workspace: pytest.fixture,
asset_processor: pytest.fixture,
resource_mappings: pytest.fixture,
aws_utils: pytest.fixture,
):
expected_lines: typing.List[str],
unexpected_lines: typing.List[str]):
"""
Setup: Deploys the CDK application
Test: Runs a launcher with a level that loads a scriptcanvas that pulls a DynamoDB table value.
Verification: The value is output in the logs and verified by the test.
Setup: Deploys cdk and updates resource mapping file.
Tests: Interact with AWS S3, DynamoDB and Lambda services.
Verification: Script canvas nodes can communicate with AWS services successfully.
"""
def write_test_table_data():
client = aws_utils.client('dynamodb')
table_name = resource_mappings.get_resource_name_id("AWSCore.ExampleDynamoTableOutput")
try:
client.put_item(
TableName=table_name,
Item={
'id': {
'S': 'Item1'
}
}
)
logger.info(f'Loaded data into table {table_name}')
except ClientError:
logger.exception(f'Failed to load data into table {table_name}')
raise
log_monitor = setup(launcher, cdk, resource_mappings, asset_processor)
write_test_table_data()
log_monitor, s3_download_dir = setup(launcher, asset_processor)
write_test_data_to_dynamodb_table(resource_mappings, aws_utils)
launcher.args = ['+LoadLevel', level]
launcher.args.extend(['-rhi=null'])
with launcher.start(launch_ap=False):
result = log_monitor.monitor_log_for_lines(
expected_lines=['(Script) - [DynamoDB] Results finished'],
unexpected_lines=['(Script) - Request validation failed, output file miss full path.',
'(Script) - '],
expected_lines=expected_lines,
unexpected_lines=unexpected_lines,
halt_on_unexpected=True
)
)
assert result
assert result, "Expected lines weren't found."
assert os.path.exists(os.path.join(s3_download_dir, 'output.txt')), \
'The expected file wasn\'t successfully downloaded.'
# clean up the file directories.
shutil.rmtree(s3_download_dir)

@ -6,7 +6,6 @@ SPDX-License-Identifier: Apache-2.0 OR MIT
"""
import os
from os.path import abspath
import pytest
import json
import logging
@ -107,38 +106,3 @@ class ResourceMappings:
def get_resource_name_id(self, resource_key: str):
return self._resource_mappings[AWS_RESOURCE_MAPPINGS_KEY][resource_key]['Name/ID']
@pytest.fixture(scope='function')
def resource_mappings(
request: pytest.fixture,
project: str,
feature_name: str,
resource_mappings_filename: str,
workspace: pytest.fixture,
aws_utils: pytest.fixture) -> ResourceMappings:
"""
Fixture for setting up resource mappings file.
:param request: _pytest.fixtures.SubRequest class that handles getting
a pytest fixture from a pytest function/fixture.
:param project: Project to find resource mapping file.
:param feature_name: AWS Gem name that is prepended to resource mapping keys.
:param resource_mappings_filename: Name of resource mapping file.
:param workspace: ly_test_tools workspace fixture.
:param aws_utils: AWS utils fixture.
:return: ResourceMappings class object.
"""
path = f'{workspace.paths.engine_root()}/{project}/Config/{resource_mappings_filename}'
logger.info(f'Resource mapping path : {path}')
logger.info(f'Resource mapping resolved path : {abspath(path)}')
resource_mappings_obj = ResourceMappings(abspath(path), aws_utils.assume_session().region_name, feature_name,
aws_utils.assume_account_id(), workspace,
aws_utils.client('cloudformation'))
def teardown():
resource_mappings_obj.clear_output_keys()
request.addfinalizer(teardown)
return resource_mappings_obj

@ -4,11 +4,15 @@ For complete copyright and license terms please see the LICENSE at the root of t
SPDX-License-Identifier: Apache-2.0 OR MIT
"""
import pytest
import logging
from os.path import abspath
import pytest
import typing
from AWS.common.aws_utils import AwsUtils
from AWS.common.aws_credentials import AwsCredentials
from AWS.Windows.cdk.cdk_utils import Cdk
from AWS.Windows.resource_mappings.resource_mappings import ResourceMappings
logger = logging.getLogger(__name__)
@ -42,6 +46,41 @@ def aws_utils(
pytest.cdk_obj = None
@pytest.fixture(scope='function')
def resource_mappings(
request: pytest.fixture,
project: str,
feature_name: str,
resource_mappings_filename: str,
workspace: pytest.fixture,
aws_utils: pytest.fixture) -> ResourceMappings:
"""
Fixture for setting up resource mappings file.
:param request: _pytest.fixtures.SubRequest class that handles getting
a pytest fixture from a pytest function/fixture.
:param project: Project to find resource mapping file.
:param feature_name: AWS Gem name that is prepended to resource mapping keys.
:param resource_mappings_filename: Name of resource mapping file.
:param workspace: ly_test_tools workspace fixture.
:param aws_utils: AWS utils fixture.
:return: ResourceMappings class object.
"""
path = f'{workspace.paths.engine_root()}/{project}/Config/{resource_mappings_filename}'
logger.info(f'Resource mapping path : {path}')
logger.info(f'Resource mapping resolved path : {abspath(path)}')
resource_mappings_obj = ResourceMappings(abspath(path), aws_utils.assume_session().region_name, feature_name,
aws_utils.assume_account_id(), workspace,
aws_utils.client('cloudformation'))
def teardown():
resource_mappings_obj.clear_output_keys()
request.addfinalizer(teardown)
return resource_mappings_obj
@pytest.fixture(scope='function')
def cdk(
request: pytest.fixture,
@ -49,8 +88,9 @@ def cdk(
feature_name: str,
workspace: pytest.fixture,
aws_utils: pytest.fixture,
bootstrap_required: bool = True,
destroy_stacks_on_teardown: bool = True) -> Cdk:
resource_mappings: pytest.fixture,
deployment_params: typing.List[str],
destroy_stacks_on_teardown: bool) -> Cdk:
"""
Fixture for setting up a Cdk
:param request: _pytest.fixtures.SubRequest class that handles getting
@ -59,8 +99,8 @@ def cdk(
:param feature_name: Feature gem name to expect cdk folder in.
:param workspace: ly_test_tools workspace fixture.
:param aws_utils: aws_utils fixture.
:param bootstrap_required: Whether the bootstrap stack needs to be created to
provision resources the AWS CDK needs to perform the deployment.
:param resource_mappings: resource_mappings fixture.
:param deployment_params: Parameters for the CDK application deployment.
:param destroy_stacks_on_teardown: option to control calling destroy ot the end of test.
:return Cdk class object.
"""
@ -70,22 +110,27 @@ def cdk(
if pytest.cdk_obj is None:
pytest.cdk_obj = Cdk()
pytest.cdk_obj.setup(cdk_path, project, aws_utils.assume_account_id(), workspace, aws_utils.assume_session())
stacks = pytest.cdk_obj.deploy(deployment_params=deployment_params)
logger.info(f'Cdk stack names:\n{stacks}')
resource_mappings.populate_output_keys(stacks)
pytest.cdk_obj.setup(cdk_path, project, aws_utils.assume_account_id(), workspace, aws_utils.assume_session(),
bootstrap_required)
def teardown():
if destroy_stacks_on_teardown:
pytest.cdk_obj.destroy()
pytest.cdk_obj.destroy(deployment_params=deployment_params)
# Enable after https://github.com/aws/aws-cdk/issues/986 is fixed.
# Until then clean the bootstrap bucket manually.
# cdk_obj.remove_bootstrap_stack()
# pytest.cdk_obj.remove_bootstrap_stack()
pytest.cdk_obj = None
request.addfinalizer(teardown)
return pytest.cdk_obj
@pytest.fixture(scope='function')
def aws_credentials(request: pytest.fixture, aws_utils: pytest.fixture, profile_name: str):
"""

@ -1,13 +1,23 @@
ProductName: OneMeshOneMaterial.dbgsg
debugSceneGraphVersion: 1
OneMeshOneMaterial
Node Name: Cube
Node Path: RootNode.Cube
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 17730128541777770264
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: Cube_optimized
Node Path: RootNode.Cube_optimized
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: transform
Node Path: RootNode.Cube.transform
Node Type: TransformData
Matrix:
@ -16,30 +26,110 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cube.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: CubeMaterial
Node Path: RootNode.Cube.CubeMaterial
Node Type: MaterialData
MaterialName: CubeMaterial
UniqueId: 40
UniqueId: 973942033197978066
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.200000, 0.200000, 0.200000>
SpecularColor: < 0.800000, 0.800000, 0.800000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 36.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: OneMeshOneMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: OneMeshOneMaterial/FBXTestTexture.png
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: UVMap
Node Path: RootNode.Cube_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cube_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: CubeMaterial
Node Path: RootNode.Cube_optimized.CubeMaterial
Node Type: MaterialData
MaterialName: CubeMaterial
UniqueId: 973942033197978066
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.800000, 0.800000, 0.800000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 36.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: OneMeshOneMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: OneMeshOneMaterial/FBXTestTexture.png

@ -1,20 +1,23 @@
ProductName: lodtest.dbgsg
debugSceneGraphVersion: 1
lodtest
Node Name: lodtest
Node Path: RootNode.lodtest
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 17730128541777770264
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: lodtest_lod3
Node Path: RootNode.lodtest_lod3
Node Type: MeshData
Positions: Count 1984. Hash: 6600975913707260286
Normals: Count 1984. Hash: 2708036977889843831
FaceList: Count 960. Hash: 18299150252135919020
FaceList: Count 960. Hash: 10390417165025722786
FaceMaterialIds: Count 960. Hash: 12510609185544665964
Node Name: lodtest_lod2
Node Path: RootNode.lodtest_lod2
Node Type: MeshData
Positions: Count 240. Hash: 219362421205407416
@ -22,13 +25,47 @@ Node Type: MeshData
FaceList: Count 80. Hash: 11130917988116538993
FaceMaterialIds: Count 80. Hash: 4190892684086530065
Node Name: lodtest_lod1
Node Path: RootNode.lodtest_lod1
Node Type: MeshData
Positions: Count 192. Hash: 1283526254311745349
Normals: Count 192. Hash: 1873340970602844856
FaceList: Count 124. Hash: 4139150512255795252
FaceList: Count 124. Hash: 3728991722746136013
FaceMaterialIds: Count 124. Hash: 2372486708814455910
Node Name: lodtest_optimized
Node Path: RootNode.lodtest_optimized
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: lodtest_lod3_optimized
Node Path: RootNode.lodtest_lod3_optimized
Node Type: MeshData
Positions: Count 1984. Hash: 6600975913707260286
Normals: Count 1984. Hash: 2708036977889843831
FaceList: Count 960. Hash: 10390417165025722786
FaceMaterialIds: Count 960. Hash: 12510609185544665964
Node Name: lodtest_lod2_optimized
Node Path: RootNode.lodtest_lod2_optimized
Node Type: MeshData
Positions: Count 240. Hash: 219362421205407416
Normals: Count 240. Hash: 11195242321181199939
FaceList: Count 80. Hash: 11130917988116538993
FaceMaterialIds: Count 80. Hash: 4190892684086530065
Node Name: lodtest_lod1_optimized
Node Path: RootNode.lodtest_lod1_optimized
Node Type: MeshData
Positions: Count 192. Hash: 7921557352486854444
Normals: Count 192. Hash: 1873340970602844856
FaceList: Count 124. Hash: 18311637590974204568
FaceMaterialIds: Count 124. Hash: 2372486708814455910
Node Name: transform
Node Path: RootNode.lodtest.transform
Node Type: TransformData
Matrix:
@ -37,33 +74,56 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.lodtest.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: Material
Node Path: RootNode.lodtest.Material
Node Type: MaterialData
MaterialName: Material
UniqueId: 41
UniqueId: 11127505492038345244
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.200000, 0.200000, 0.200000>
SpecularColor: < 0.800000, 0.800000, 0.800000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 36.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.lodtest_lod3.transform
Node Type: TransformData
Matrix:
@ -72,22 +132,56 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 2.298166, 0.000000>
Node Name: UVMap
Node Path: RootNode.lodtest_lod3.UVMap
Node Type: MeshVertexUVData
UVs: Count 1984. Hash: 14119273880200542497
UVCustomName: UVMap
Node Name: DefaultMaterial
Node Path: RootNode.lodtest_lod3.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest_lod3.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 1984. Hash: 18230617734432580484
Tangents: Count 1984. Hash: 5664494957869921957
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest_lod3.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 1984. Hash: 1758062968819667297
Bitangents: Count 1984. Hash: 5048878728906162461
TangentSpace: 1
Node Name: transform
Node Path: RootNode.lodtest_lod2.transform
Node Type: TransformData
Matrix:
@ -96,22 +190,56 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, -2.211498, 0.000000>
Node Name: UVMap
Node Path: RootNode.lodtest_lod2.UVMap
Node Type: MeshVertexUVData
UVs: Count 240. Hash: 13702273589593616598
UVCustomName: UVMap
Node Name: DefaultMaterial
Node Path: RootNode.lodtest_lod2.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest_lod2.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 240. Hash: 12143450499217075227
Tangents: Count 240. Hash: 1390901212717410749
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest_lod2.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 240. Hash: 2933938440535428567
Bitangents: Count 240. Hash: 1379238632949267281
TangentSpace: 1
Node Name: transform
Node Path: RootNode.lodtest_lod1.transform
Node Type: TransformData
Matrix:
@ -120,19 +248,284 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 2.410331, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.lodtest_lod1.UVMap
Node Type: MeshVertexUVData
UVs: Count 192. Hash: 27253578623892681
UVCustomName: UVMap
Node Name: DefaultMaterial
Node Path: RootNode.lodtest_lod1.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest_lod1.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 192. Hash: 5663634855689915515
Tangents: Count 192. Hash: 11165448242141781141
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest_lod1.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 192. Hash: 10115392016288328891
Bitangents: Count 192. Hash: 7987814487334449536
TangentSpace: 1
Node Name: UVMap
Node Path: RootNode.lodtest_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.lodtest_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: Material
Node Path: RootNode.lodtest_optimized.Material
Node Type: MaterialData
MaterialName: Material
UniqueId: 11127505492038345244
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.800000, 0.800000, 0.800000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 36.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: UVMap
Node Path: RootNode.lodtest_lod3_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 1984. Hash: 14119273880200542497
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest_lod3_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 1984. Hash: 5664494957869921957
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest_lod3_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 1984. Hash: 5048878728906162461
TangentSpace: 1
Node Name: transform
Node Path: RootNode.lodtest_lod3_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 2.298166, 0.000000>
Node Name: DefaultMaterial
Node Path: RootNode.lodtest_lod3_optimized.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: UVMap
Node Path: RootNode.lodtest_lod2_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 240. Hash: 13702273589593616598
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest_lod2_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 240. Hash: 1390901212717410749
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest_lod2_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 240. Hash: 1379238632949267281
TangentSpace: 1
Node Name: transform
Node Path: RootNode.lodtest_lod2_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, -0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, -2.211498, 0.000000>
Node Name: DefaultMaterial
Node Path: RootNode.lodtest_lod2_optimized.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: UVMap
Node Path: RootNode.lodtest_lod1_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 192. Hash: 13790301632763350589
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.lodtest_lod1_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 192. Hash: 7293001660047850407
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.lodtest_lod1_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 192. Hash: 2874689498270494796
TangentSpace: 1
Node Name: transform
Node Path: RootNode.lodtest_lod1_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 2.410331, 0.000000, 0.000000>
Node Name: DefaultMaterial
Node Path: RootNode.lodtest_lod1_optimized.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:

@ -1,20 +1,31 @@
ProductName: physicstest.dbgsg
debugSceneGraphVersion: 1
physicstest
Node Name: Cone
Node Path: RootNode.Cone
Node Type: MeshData
Positions: Count 128. Hash: 7714223793259938211
Normals: Count 128. Hash: 2352668179264002707
FaceList: Count 62. Hash: 501739282148426083
FaceList: Count 62. Hash: 14563017593520122982
FaceMaterialIds: Count 62. Hash: 12234218120113875284
Node Name: Cube_phys
Node Path: RootNode.Cube_phys
Node Type: MeshData
Positions: Count 24. Hash: 3478903613105670818
Normals: Count 24. Hash: 7251512570672401149
FaceList: Count 12. Hash: 17730128541777770264
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: Cone_optimized
Node Path: RootNode.Cone_optimized
Node Type: MeshData
Positions: Count 128. Hash: 10174710861731544050
Normals: Count 128. Hash: 2352668179264002707
FaceList: Count 62. Hash: 11332459830831720586
FaceMaterialIds: Count 62. Hash: 12234218120113875284
Node Name: transform
Node Path: RootNode.Cone.transform
Node Type: TransformData
Matrix:
@ -23,22 +34,56 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cone.UVMap
Node Type: MeshVertexUVData
UVs: Count 128. Hash: 10171083346831193808
UVCustomName: UVMap
Node Name: DefaultMaterial
Node Path: RootNode.Cone.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cone.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 128. Hash: 7061767882345696031
Tangents: Count 128. Hash: 14351734474754285313
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cone.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 128. Hash: 12648628819656324550
Bitangents: Count 128. Hash: 15997251922861304891
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cube_phys.transform
Node Type: TransformData
Matrix:
@ -47,19 +92,110 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cube_phys.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 13623018071435219250
UVCustomName: UVMap
Node Name: DefaultMaterial
Node Path: RootNode.Cube_phys.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube_phys.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 11965897353301448436
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube_phys.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 17515781720544086759
TangentSpace: 1
Node Name: UVMap
Node Path: RootNode.Cone_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 128. Hash: 7873368003484215433
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cone_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 128. Hash: 12937806066914201637
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cone_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 128. Hash: 873786942732834087
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cone_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: DefaultMaterial
Node Path: RootNode.Cone_optimized.DefaultMaterial
Node Type: MaterialData
MaterialName: DefaultMaterial
UniqueId: 3809502407269006983
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.000000, 0.000000, 0.000000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 0.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture:
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture:

@ -5,788 +5,32 @@ Node Name: Cube
Node Path: RootNode.Cube
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
0: <-0.010000, 0.010000, 0.010000>
1: < 0.010000, 0.010000, 0.010000>
2: < 0.010000, 0.010000, -0.010000>
3: <-0.010000, 0.010000, -0.010000>
4: <-0.010000, -0.010000, -0.010000>
5: <-0.010000, 0.010000, -0.010000>
6: < 0.010000, 0.010000, -0.010000>
7: < 0.010000, -0.010000, -0.010000>
8: < 0.010000, -0.010000, -0.010000>
9: < 0.010000, 0.010000, -0.010000>
10: < 0.010000, 0.010000, 0.010000>
11: < 0.010000, -0.010000, 0.010000>
12: < 0.010000, -0.010000, 0.010000>
13: <-0.010000, -0.010000, 0.010000>
14: <-0.010000, -0.010000, -0.010000>
15: < 0.010000, -0.010000, -0.010000>
16: <-0.010000, -0.010000, 0.010000>
17: <-0.010000, 0.010000, 0.010000>
18: <-0.010000, 0.010000, -0.010000>
19: <-0.010000, -0.010000, -0.010000>
20: < 0.010000, -0.010000, 0.010000>
21: < 0.010000, 0.010000, 0.010000>
22: <-0.010000, 0.010000, 0.010000>
23: <-0.010000, -0.010000, 0.010000>
Normals: Count 24. Hash: 5807525742165000561
0: < 0.000000, 1.000000, 0.000000>
1: < 0.000000, 1.000000, 0.000000>
2: < 0.000000, 1.000000, 0.000000>
3: < 0.000000, 1.000000, 0.000000>
4: < 0.000000, 0.000000, -1.000000>
5: < 0.000000, 0.000000, -1.000000>
6: < 0.000000, 0.000000, -1.000000>
7: < 0.000000, 0.000000, -1.000000>
8: < 1.000000, 0.000000, 0.000000>
9: < 1.000000, 0.000000, 0.000000>
10: < 1.000000, 0.000000, 0.000000>
11: < 1.000000, 0.000000, 0.000000>
12: < 0.000000, -1.000000, 0.000000>
13: < 0.000000, -1.000000, 0.000000>
14: < 0.000000, -1.000000, 0.000000>
15: < 0.000000, -1.000000, 0.000000>
16: <-1.000000, 0.000000, 0.000000>
17: <-1.000000, 0.000000, 0.000000>
18: <-1.000000, 0.000000, 0.000000>
19: <-1.000000, 0.000000, 0.000000>
20: < 0.000000, 0.000000, 1.000000>
21: < 0.000000, 0.000000, 1.000000>
22: < 0.000000, 0.000000, 1.000000>
23: < 0.000000, 0.000000, 1.000000>
FaceList: Count 12. Hash: 9888799799190757436
0: 0, 1, 2,
1: 0, 2, 3,
2: 4, 5, 6,
3: 4, 6, 7,
4: 8, 9, 10,
5: 8, 10, 11,
6: 12, 13, 14,
7: 12, 14, 15,
8: 16, 17, 18,
9: 16, 18, 19,
10: 20, 21, 22,
11: 20, 22, 23,
FaceMaterialIds: Count 12. Hash: 7113802799051126666
Node Name: Cone
Node Path: RootNode.Cone
Node Type: MeshData
Positions: Count 128. Hash: 12506421592104186200
0: < 0.000000, -0.010000, 0.010000>
1: < 0.000000, 0.010000, 0.000000>
2: <-0.001951, -0.010000, 0.009808>
3: <-0.001951, -0.010000, 0.009808>
4: < 0.000000, 0.010000, 0.000000>
5: <-0.003827, -0.010000, 0.009239>
6: <-0.003827, -0.010000, 0.009239>
7: < 0.000000, 0.010000, 0.000000>
8: <-0.005556, -0.010000, 0.008315>
9: <-0.005556, -0.010000, 0.008315>
10: < 0.000000, 0.010000, 0.000000>
11: <-0.007071, -0.010000, 0.007071>
12: <-0.007071, -0.010000, 0.007071>
13: < 0.000000, 0.010000, 0.000000>
14: <-0.008315, -0.010000, 0.005556>
15: <-0.008315, -0.010000, 0.005556>
16: < 0.000000, 0.010000, 0.000000>
17: <-0.009239, -0.010000, 0.003827>
18: <-0.009239, -0.010000, 0.003827>
19: < 0.000000, 0.010000, 0.000000>
20: <-0.009808, -0.010000, 0.001951>
21: < 0.009808, -0.010000, 0.001951>
22: < 0.000000, 0.010000, 0.000000>
23: < 0.009239, -0.010000, 0.003827>
24: < 0.009239, -0.010000, 0.003827>
25: < 0.000000, 0.010000, 0.000000>
26: < 0.008315, -0.010000, 0.005556>
27: < 0.008315, -0.010000, 0.005556>
28: < 0.000000, 0.010000, 0.000000>
29: < 0.007071, -0.010000, 0.007071>
30: < 0.007071, -0.010000, 0.007071>
31: < 0.000000, 0.010000, 0.000000>
32: < 0.005556, -0.010000, 0.008315>
33: < 0.005556, -0.010000, 0.008315>
34: < 0.000000, 0.010000, 0.000000>
35: < 0.003827, -0.010000, 0.009239>
36: < 0.000000, -0.010000, 0.010000>
37: <-0.001951, -0.010000, 0.009808>
38: <-0.003827, -0.010000, 0.009239>
39: <-0.005556, -0.010000, 0.008315>
40: <-0.007071, -0.010000, 0.007071>
41: <-0.008315, -0.010000, 0.005556>
42: <-0.009239, -0.010000, 0.003827>
43: <-0.009808, -0.010000, 0.001951>
44: <-0.010000, -0.010000, 0.000000>
45: <-0.009808, -0.010000, -0.001951>
46: <-0.009239, -0.010000, -0.003827>
47: <-0.008315, -0.010000, -0.005556>
48: <-0.007071, -0.010000, -0.007071>
49: <-0.005556, -0.010000, -0.008315>
50: <-0.003827, -0.010000, -0.009239>
51: <-0.001951, -0.010000, -0.009808>
52: < 0.000000, -0.010000, -0.010000>
53: < 0.001951, -0.010000, -0.009808>
54: < 0.003827, -0.010000, -0.009239>
55: < 0.005556, -0.010000, -0.008315>
56: < 0.007071, -0.010000, -0.007071>
57: < 0.008315, -0.010000, -0.005556>
58: < 0.009239, -0.010000, -0.003827>
59: < 0.009808, -0.010000, -0.001951>
60: < 0.010000, -0.010000, 0.000000>
61: < 0.009808, -0.010000, 0.001951>
62: < 0.009239, -0.010000, 0.003827>
63: < 0.008315, -0.010000, 0.005556>
64: < 0.007071, -0.010000, 0.007071>
65: < 0.005556, -0.010000, 0.008315>
66: < 0.003827, -0.010000, 0.009239>
67: < 0.001951, -0.010000, 0.009808>
68: < 0.003827, -0.010000, 0.009239>
69: < 0.000000, 0.010000, 0.000000>
70: < 0.001951, -0.010000, 0.009808>
71: < 0.001951, -0.010000, 0.009808>
72: < 0.000000, 0.010000, 0.000000>
73: < 0.000000, -0.010000, 0.010000>
74: <-0.009808, -0.010000, 0.001951>
75: < 0.000000, 0.010000, 0.000000>
76: <-0.010000, -0.010000, 0.000000>
77: <-0.010000, -0.010000, 0.000000>
78: < 0.000000, 0.010000, 0.000000>
79: <-0.009808, -0.010000, -0.001951>
80: <-0.009808, -0.010000, -0.001951>
81: < 0.000000, 0.010000, 0.000000>
82: <-0.009239, -0.010000, -0.003827>
83: <-0.009239, -0.010000, -0.003827>
84: < 0.000000, 0.010000, 0.000000>
85: <-0.008315, -0.010000, -0.005556>
86: <-0.008315, -0.010000, -0.005556>
87: < 0.000000, 0.010000, 0.000000>
88: <-0.007071, -0.010000, -0.007071>
89: <-0.007071, -0.010000, -0.007071>
90: < 0.000000, 0.010000, 0.000000>
91: <-0.005556, -0.010000, -0.008315>
92: <-0.005556, -0.010000, -0.008315>
93: < 0.000000, 0.010000, 0.000000>
94: <-0.003827, -0.010000, -0.009239>
95: <-0.003827, -0.010000, -0.009239>
96: < 0.000000, 0.010000, 0.000000>
97: <-0.001951, -0.010000, -0.009808>
98: <-0.001951, -0.010000, -0.009808>
99: < 0.000000, 0.010000, 0.000000>
100: < 0.000000, -0.010000, -0.010000>
101: < 0.000000, -0.010000, -0.010000>
102: < 0.000000, 0.010000, 0.000000>
103: < 0.001951, -0.010000, -0.009808>
104: < 0.001951, -0.010000, -0.009808>
105: < 0.000000, 0.010000, 0.000000>
106: < 0.003827, -0.010000, -0.009239>
107: < 0.003827, -0.010000, -0.009239>
108: < 0.000000, 0.010000, 0.000000>
109: < 0.005556, -0.010000, -0.008315>
110: < 0.005556, -0.010000, -0.008315>
111: < 0.000000, 0.010000, 0.000000>
112: < 0.007071, -0.010000, -0.007071>
113: < 0.007071, -0.010000, -0.007071>
114: < 0.000000, 0.010000, 0.000000>
115: < 0.008315, -0.010000, -0.005556>
116: < 0.008315, -0.010000, -0.005556>
117: < 0.000000, 0.010000, 0.000000>
118: < 0.009239, -0.010000, -0.003827>
119: < 0.009239, -0.010000, -0.003827>
120: < 0.000000, 0.010000, 0.000000>
121: < 0.009808, -0.010000, -0.001951>
122: < 0.009808, -0.010000, -0.001951>
123: < 0.000000, 0.010000, 0.000000>
124: < 0.010000, -0.010000, 0.000000>
125: < 0.010000, -0.010000, 0.000000>
126: < 0.000000, 0.010000, 0.000000>
127: < 0.009808, -0.010000, 0.001951>
Normals: Count 128. Hash: 367461522682321485
0: <-0.087754, 0.445488, 0.890977>
1: <-0.087754, 0.445488, 0.890977>
2: <-0.087754, 0.445488, 0.890977>
3: <-0.259888, 0.445488, 0.856737>
4: <-0.259888, 0.445488, 0.856737>
5: <-0.259888, 0.445488, 0.856737>
6: <-0.422036, 0.445488, 0.789573>
7: <-0.422036, 0.445488, 0.789573>
8: <-0.422036, 0.445488, 0.789573>
9: <-0.567965, 0.445488, 0.692067>
10: <-0.567965, 0.445488, 0.692067>
11: <-0.567965, 0.445488, 0.692067>
12: <-0.692067, 0.445488, 0.567965>
13: <-0.692067, 0.445488, 0.567965>
14: <-0.692067, 0.445488, 0.567965>
15: <-0.789573, 0.445488, 0.422036>
16: <-0.789573, 0.445488, 0.422036>
17: <-0.789573, 0.445488, 0.422036>
18: <-0.856737, 0.445488, 0.259888>
19: <-0.856737, 0.445488, 0.259888>
20: <-0.856737, 0.445488, 0.259888>
21: < 0.856737, 0.445488, 0.259889>
22: < 0.856737, 0.445488, 0.259889>
23: < 0.856737, 0.445488, 0.259889>
24: < 0.789573, 0.445488, 0.422037>
25: < 0.789573, 0.445488, 0.422037>
26: < 0.789573, 0.445488, 0.422037>
27: < 0.692066, 0.445488, 0.567966>
28: < 0.692066, 0.445488, 0.567966>
29: < 0.692066, 0.445488, 0.567966>
30: < 0.567964, 0.445488, 0.692067>
31: < 0.567964, 0.445488, 0.692067>
32: < 0.567964, 0.445488, 0.692067>
33: < 0.422035, 0.445488, 0.789574>
34: < 0.422035, 0.445488, 0.789574>
35: < 0.422035, 0.445488, 0.789574>
36: <-0.000000, -1.000000, 0.000000>
37: <-0.000000, -1.000000, 0.000000>
38: <-0.000000, -1.000000, 0.000000>
39: <-0.000000, -1.000000, 0.000000>
40: <-0.000000, -1.000000, 0.000000>
41: <-0.000000, -1.000000, 0.000000>
42: <-0.000000, -1.000000, 0.000000>
43: <-0.000000, -1.000000, 0.000000>
44: <-0.000000, -1.000000, 0.000000>
45: <-0.000000, -1.000000, 0.000000>
46: <-0.000000, -1.000000, 0.000000>
47: <-0.000000, -1.000000, 0.000000>
48: <-0.000000, -1.000000, 0.000000>
49: <-0.000000, -1.000000, 0.000000>
50: <-0.000000, -1.000000, 0.000000>
51: <-0.000000, -1.000000, 0.000000>
52: <-0.000000, -1.000000, 0.000000>
53: <-0.000000, -1.000000, 0.000000>
54: <-0.000000, -1.000000, 0.000000>
55: <-0.000000, -1.000000, 0.000000>
56: <-0.000000, -1.000000, 0.000000>
57: <-0.000000, -1.000000, 0.000000>
58: <-0.000000, -1.000000, 0.000000>
59: <-0.000000, -1.000000, 0.000000>
60: <-0.000000, -1.000000, 0.000000>
61: <-0.000000, -1.000000, 0.000000>
62: <-0.000000, -1.000000, 0.000000>
63: <-0.000000, -1.000000, 0.000000>
64: <-0.000000, -1.000000, 0.000000>
65: <-0.000000, -1.000000, 0.000000>
66: <-0.000000, -1.000000, 0.000000>
67: <-0.000000, -1.000000, 0.000000>
68: < 0.259887, 0.445488, 0.856737>
69: < 0.259887, 0.445488, 0.856737>
70: < 0.259887, 0.445488, 0.856737>
71: < 0.087753, 0.445488, 0.890977>
72: < 0.087753, 0.445488, 0.890977>
73: < 0.087753, 0.445488, 0.890977>
74: <-0.890977, 0.445488, 0.087754>
75: <-0.890977, 0.445488, 0.087754>
76: <-0.890977, 0.445488, 0.087754>
77: <-0.890977, 0.445488, -0.087753>
78: <-0.890977, 0.445488, -0.087753>
79: <-0.890977, 0.445488, -0.087753>
80: <-0.856737, 0.445488, -0.259888>
81: <-0.856737, 0.445488, -0.259888>
82: <-0.856737, 0.445488, -0.259888>
83: <-0.789573, 0.445488, -0.422035>
84: <-0.789573, 0.445488, -0.422035>
85: <-0.789573, 0.445488, -0.422035>
86: <-0.692067, 0.445488, -0.567965>
87: <-0.692067, 0.445488, -0.567965>
88: <-0.692067, 0.445488, -0.567965>
89: <-0.567965, 0.445488, -0.692067>
90: <-0.567965, 0.445488, -0.692067>
91: <-0.567965, 0.445488, -0.692067>
92: <-0.422036, 0.445488, -0.789573>
93: <-0.422036, 0.445488, -0.789573>
94: <-0.422036, 0.445488, -0.789573>
95: <-0.259888, 0.445488, -0.856737>
96: <-0.259888, 0.445488, -0.856737>
97: <-0.259888, 0.445488, -0.856737>
98: <-0.087753, 0.445488, -0.890977>
99: <-0.087753, 0.445488, -0.890977>
100: <-0.087753, 0.445488, -0.890977>
101: < 0.087754, 0.445488, -0.890977>
102: < 0.087754, 0.445488, -0.890977>
103: < 0.087754, 0.445488, -0.890977>
104: < 0.259889, 0.445488, -0.856737>
105: < 0.259889, 0.445488, -0.856737>
106: < 0.259889, 0.445488, -0.856737>
107: < 0.422036, 0.445488, -0.789573>
108: < 0.422036, 0.445488, -0.789573>
109: < 0.422036, 0.445488, -0.789573>
110: < 0.567965, 0.445488, -0.692066>
111: < 0.567965, 0.445488, -0.692066>
112: < 0.567965, 0.445488, -0.692066>
113: < 0.692067, 0.445488, -0.567964>
114: < 0.692067, 0.445488, -0.567964>
115: < 0.692067, 0.445488, -0.567964>
116: < 0.789574, 0.445488, -0.422035>
117: < 0.789574, 0.445488, -0.422035>
118: < 0.789574, 0.445488, -0.422035>
119: < 0.856737, 0.445488, -0.259887>
120: < 0.856737, 0.445488, -0.259887>
121: < 0.856737, 0.445488, -0.259887>
122: < 0.890977, 0.445488, -0.087753>
123: < 0.890977, 0.445488, -0.087753>
124: < 0.890977, 0.445488, -0.087753>
125: < 0.890977, 0.445488, 0.087754>
126: < 0.890977, 0.445488, 0.087754>
127: < 0.890977, 0.445488, 0.087754>
FaceList: Count 62. Hash: 13208951979626973193
0: 0, 1, 2,
1: 3, 4, 5,
2: 6, 7, 8,
3: 9, 10, 11,
4: 12, 13, 14,
5: 15, 16, 17,
6: 18, 19, 20,
7: 21, 22, 23,
8: 24, 25, 26,
9: 27, 28, 29,
10: 30, 31, 32,
11: 33, 34, 35,
12: 67, 36, 37,
13: 67, 37, 38,
14: 67, 38, 39,
15: 67, 39, 40,
16: 67, 40, 41,
17: 67, 41, 42,
18: 67, 42, 43,
19: 67, 43, 44,
20: 67, 44, 45,
21: 67, 45, 46,
22: 67, 46, 47,
23: 67, 47, 48,
24: 67, 48, 49,
25: 67, 49, 50,
26: 67, 50, 51,
27: 67, 51, 52,
28: 67, 52, 53,
29: 67, 53, 54,
30: 67, 54, 55,
31: 67, 55, 56,
32: 67, 56, 57,
33: 67, 57, 58,
34: 67, 58, 59,
35: 67, 59, 60,
36: 67, 60, 61,
37: 67, 61, 62,
38: 67, 62, 63,
39: 67, 63, 64,
40: 67, 64, 65,
41: 65, 66, 67,
42: 68, 69, 70,
43: 71, 72, 73,
44: 74, 75, 76,
45: 77, 78, 79,
46: 80, 81, 82,
47: 83, 84, 85,
48: 86, 87, 88,
49: 89, 90, 91,
50: 92, 93, 94,
51: 95, 96, 97,
52: 98, 99, 100,
53: 101, 102, 103,
54: 104, 105, 106,
55: 107, 108, 109,
56: 110, 111, 112,
57: 113, 114, 115,
58: 116, 117, 118,
59: 119, 120, 121,
60: 122, 123, 124,
61: 125, 126, 127,
FaceMaterialIds: Count 62. Hash: 15454348664434923102
Node Name: Cube_optimized
Node Path: RootNode.Cube_optimized
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
0: <-0.010000, 0.010000, 0.010000>
1: < 0.010000, 0.010000, 0.010000>
2: < 0.010000, 0.010000, -0.010000>
3: <-0.010000, 0.010000, -0.010000>
4: <-0.010000, -0.010000, -0.010000>
5: <-0.010000, 0.010000, -0.010000>
6: < 0.010000, 0.010000, -0.010000>
7: < 0.010000, -0.010000, -0.010000>
8: < 0.010000, -0.010000, -0.010000>
9: < 0.010000, 0.010000, -0.010000>
10: < 0.010000, 0.010000, 0.010000>
11: < 0.010000, -0.010000, 0.010000>
12: < 0.010000, -0.010000, 0.010000>
13: <-0.010000, -0.010000, 0.010000>
14: <-0.010000, -0.010000, -0.010000>
15: < 0.010000, -0.010000, -0.010000>
16: <-0.010000, -0.010000, 0.010000>
17: <-0.010000, 0.010000, 0.010000>
18: <-0.010000, 0.010000, -0.010000>
19: <-0.010000, -0.010000, -0.010000>
20: < 0.010000, -0.010000, 0.010000>
21: < 0.010000, 0.010000, 0.010000>
22: <-0.010000, 0.010000, 0.010000>
23: <-0.010000, -0.010000, 0.010000>
Normals: Count 24. Hash: 5807525742165000561
0: < 0.000000, 1.000000, 0.000000>
1: < 0.000000, 1.000000, 0.000000>
2: < 0.000000, 1.000000, 0.000000>
3: < 0.000000, 1.000000, 0.000000>
4: < 0.000000, 0.000000, -1.000000>
5: < 0.000000, 0.000000, -1.000000>
6: < 0.000000, 0.000000, -1.000000>
7: < 0.000000, 0.000000, -1.000000>
8: < 1.000000, 0.000000, 0.000000>
9: < 1.000000, 0.000000, 0.000000>
10: < 1.000000, 0.000000, 0.000000>
11: < 1.000000, 0.000000, 0.000000>
12: < 0.000000, -1.000000, 0.000000>
13: < 0.000000, -1.000000, 0.000000>
14: < 0.000000, -1.000000, 0.000000>
15: < 0.000000, -1.000000, 0.000000>
16: <-1.000000, 0.000000, 0.000000>
17: <-1.000000, 0.000000, 0.000000>
18: <-1.000000, 0.000000, 0.000000>
19: <-1.000000, 0.000000, 0.000000>
20: < 0.000000, 0.000000, 1.000000>
21: < 0.000000, 0.000000, 1.000000>
22: < 0.000000, 0.000000, 1.000000>
23: < 0.000000, 0.000000, 1.000000>
FaceList: Count 12. Hash: 9888799799190757436
0: 0, 1, 2,
1: 0, 2, 3,
2: 4, 5, 6,
3: 4, 6, 7,
4: 8, 9, 10,
5: 8, 10, 11,
6: 12, 13, 14,
7: 12, 14, 15,
8: 16, 17, 18,
9: 16, 18, 19,
10: 20, 21, 22,
11: 20, 22, 23,
FaceMaterialIds: Count 12. Hash: 7113802799051126666
Node Name: Cone_optimized
Node Path: RootNode.Cone_optimized
Node Type: MeshData
Positions: Count 128. Hash: 14946490408303214595
0: < 0.000000, -0.010000, 0.010000>
1: < 0.000000, 0.010000, 0.000000>
2: <-0.001951, -0.010000, 0.009808>
3: <-0.001951, -0.010000, 0.009808>
4: < 0.000000, 0.010000, 0.000000>
5: <-0.003827, -0.010000, 0.009239>
6: <-0.003827, -0.010000, 0.009239>
7: < 0.000000, 0.010000, 0.000000>
8: <-0.005556, -0.010000, 0.008315>
9: <-0.005556, -0.010000, 0.008315>
10: < 0.000000, 0.010000, 0.000000>
11: <-0.007071, -0.010000, 0.007071>
12: <-0.007071, -0.010000, 0.007071>
13: < 0.000000, 0.010000, 0.000000>
14: <-0.008315, -0.010000, 0.005556>
15: <-0.008315, -0.010000, 0.005556>
16: < 0.000000, 0.010000, 0.000000>
17: <-0.009239, -0.010000, 0.003827>
18: <-0.009239, -0.010000, 0.003827>
19: < 0.000000, 0.010000, 0.000000>
20: <-0.009808, -0.010000, 0.001951>
21: < 0.009808, -0.010000, 0.001951>
22: < 0.000000, 0.010000, 0.000000>
23: < 0.009239, -0.010000, 0.003827>
24: < 0.009239, -0.010000, 0.003827>
25: < 0.000000, 0.010000, 0.000000>
26: < 0.008315, -0.010000, 0.005556>
27: < 0.008315, -0.010000, 0.005556>
28: < 0.000000, 0.010000, 0.000000>
29: < 0.007071, -0.010000, 0.007071>
30: < 0.007071, -0.010000, 0.007071>
31: < 0.000000, 0.010000, 0.000000>
32: < 0.005556, -0.010000, 0.008315>
33: < 0.005556, -0.010000, 0.008315>
34: < 0.000000, 0.010000, 0.000000>
35: < 0.003827, -0.010000, 0.009239>
36: < 0.001951, -0.010000, 0.009808>
37: < 0.000000, -0.010000, 0.010000>
38: <-0.001951, -0.010000, 0.009808>
39: <-0.003827, -0.010000, 0.009239>
40: <-0.005556, -0.010000, 0.008315>
41: <-0.007071, -0.010000, 0.007071>
42: <-0.008315, -0.010000, 0.005556>
43: <-0.009239, -0.010000, 0.003827>
44: <-0.009808, -0.010000, 0.001951>
45: <-0.010000, -0.010000, 0.000000>
46: <-0.009808, -0.010000, -0.001951>
47: <-0.009239, -0.010000, -0.003827>
48: <-0.008315, -0.010000, -0.005556>
49: <-0.007071, -0.010000, -0.007071>
50: <-0.005556, -0.010000, -0.008315>
51: <-0.003827, -0.010000, -0.009239>
52: <-0.001951, -0.010000, -0.009808>
53: < 0.000000, -0.010000, -0.010000>
54: < 0.001951, -0.010000, -0.009808>
55: < 0.003827, -0.010000, -0.009239>
56: < 0.005556, -0.010000, -0.008315>
57: < 0.007071, -0.010000, -0.007071>
58: < 0.008315, -0.010000, -0.005556>
59: < 0.009239, -0.010000, -0.003827>
60: < 0.009808, -0.010000, -0.001951>
61: < 0.010000, -0.010000, 0.000000>
62: < 0.009808, -0.010000, 0.001951>
63: < 0.009239, -0.010000, 0.003827>
64: < 0.008315, -0.010000, 0.005556>
65: < 0.007071, -0.010000, 0.007071>
66: < 0.005556, -0.010000, 0.008315>
67: < 0.003827, -0.010000, 0.009239>
68: < 0.003827, -0.010000, 0.009239>
69: < 0.000000, 0.010000, 0.000000>
70: < 0.001951, -0.010000, 0.009808>
71: < 0.001951, -0.010000, 0.009808>
72: < 0.000000, 0.010000, 0.000000>
73: < 0.000000, -0.010000, 0.010000>
74: <-0.009808, -0.010000, 0.001951>
75: < 0.000000, 0.010000, 0.000000>
76: <-0.010000, -0.010000, 0.000000>
77: <-0.010000, -0.010000, 0.000000>
78: < 0.000000, 0.010000, 0.000000>
79: <-0.009808, -0.010000, -0.001951>
80: <-0.009808, -0.010000, -0.001951>
81: < 0.000000, 0.010000, 0.000000>
82: <-0.009239, -0.010000, -0.003827>
83: <-0.009239, -0.010000, -0.003827>
84: < 0.000000, 0.010000, 0.000000>
85: <-0.008315, -0.010000, -0.005556>
86: <-0.008315, -0.010000, -0.005556>
87: < 0.000000, 0.010000, 0.000000>
88: <-0.007071, -0.010000, -0.007071>
89: <-0.007071, -0.010000, -0.007071>
90: < 0.000000, 0.010000, 0.000000>
91: <-0.005556, -0.010000, -0.008315>
92: <-0.005556, -0.010000, -0.008315>
93: < 0.000000, 0.010000, 0.000000>
94: <-0.003827, -0.010000, -0.009239>
95: <-0.003827, -0.010000, -0.009239>
96: < 0.000000, 0.010000, 0.000000>
97: <-0.001951, -0.010000, -0.009808>
98: <-0.001951, -0.010000, -0.009808>
99: < 0.000000, 0.010000, 0.000000>
100: < 0.000000, -0.010000, -0.010000>
101: < 0.000000, -0.010000, -0.010000>
102: < 0.000000, 0.010000, 0.000000>
103: < 0.001951, -0.010000, -0.009808>
104: < 0.001951, -0.010000, -0.009808>
105: < 0.000000, 0.010000, 0.000000>
106: < 0.003827, -0.010000, -0.009239>
107: < 0.003827, -0.010000, -0.009239>
108: < 0.000000, 0.010000, 0.000000>
109: < 0.005556, -0.010000, -0.008315>
110: < 0.005556, -0.010000, -0.008315>
111: < 0.000000, 0.010000, 0.000000>
112: < 0.007071, -0.010000, -0.007071>
113: < 0.007071, -0.010000, -0.007071>
114: < 0.000000, 0.010000, 0.000000>
115: < 0.008315, -0.010000, -0.005556>
116: < 0.008315, -0.010000, -0.005556>
117: < 0.000000, 0.010000, 0.000000>
118: < 0.009239, -0.010000, -0.003827>
119: < 0.009239, -0.010000, -0.003827>
120: < 0.000000, 0.010000, 0.000000>
121: < 0.009808, -0.010000, -0.001951>
122: < 0.009808, -0.010000, -0.001951>
123: < 0.000000, 0.010000, 0.000000>
124: < 0.010000, -0.010000, 0.000000>
125: < 0.010000, -0.010000, 0.000000>
126: < 0.000000, 0.010000, 0.000000>
127: < 0.009808, -0.010000, 0.001951>
Normals: Count 128. Hash: 367461522682321485
0: <-0.087754, 0.445488, 0.890977>
1: <-0.087754, 0.445488, 0.890977>
2: <-0.087754, 0.445488, 0.890977>
3: <-0.259888, 0.445488, 0.856737>
4: <-0.259888, 0.445488, 0.856737>
5: <-0.259888, 0.445488, 0.856737>
6: <-0.422036, 0.445488, 0.789573>
7: <-0.422036, 0.445488, 0.789573>
8: <-0.422036, 0.445488, 0.789573>
9: <-0.567965, 0.445488, 0.692067>
10: <-0.567965, 0.445488, 0.692067>
11: <-0.567965, 0.445488, 0.692067>
12: <-0.692067, 0.445488, 0.567965>
13: <-0.692067, 0.445488, 0.567965>
14: <-0.692067, 0.445488, 0.567965>
15: <-0.789573, 0.445488, 0.422036>
16: <-0.789573, 0.445488, 0.422036>
17: <-0.789573, 0.445488, 0.422036>
18: <-0.856737, 0.445488, 0.259888>
19: <-0.856737, 0.445488, 0.259888>
20: <-0.856737, 0.445488, 0.259888>
21: < 0.856737, 0.445488, 0.259889>
22: < 0.856737, 0.445488, 0.259889>
23: < 0.856737, 0.445488, 0.259889>
24: < 0.789573, 0.445488, 0.422037>
25: < 0.789573, 0.445488, 0.422037>
26: < 0.789573, 0.445488, 0.422037>
27: < 0.692066, 0.445488, 0.567966>
28: < 0.692066, 0.445488, 0.567966>
29: < 0.692066, 0.445488, 0.567966>
30: < 0.567964, 0.445488, 0.692067>
31: < 0.567964, 0.445488, 0.692067>
32: < 0.567964, 0.445488, 0.692067>
33: < 0.422035, 0.445488, 0.789574>
34: < 0.422035, 0.445488, 0.789574>
35: < 0.422035, 0.445488, 0.789574>
36: <-0.000000, -1.000000, 0.000000>
37: <-0.000000, -1.000000, 0.000000>
38: <-0.000000, -1.000000, 0.000000>
39: <-0.000000, -1.000000, 0.000000>
40: <-0.000000, -1.000000, 0.000000>
41: <-0.000000, -1.000000, 0.000000>
42: <-0.000000, -1.000000, 0.000000>
43: <-0.000000, -1.000000, 0.000000>
44: <-0.000000, -1.000000, 0.000000>
45: <-0.000000, -1.000000, 0.000000>
46: <-0.000000, -1.000000, 0.000000>
47: <-0.000000, -1.000000, 0.000000>
48: <-0.000000, -1.000000, 0.000000>
49: <-0.000000, -1.000000, 0.000000>
50: <-0.000000, -1.000000, 0.000000>
51: <-0.000000, -1.000000, 0.000000>
52: <-0.000000, -1.000000, 0.000000>
53: <-0.000000, -1.000000, 0.000000>
54: <-0.000000, -1.000000, 0.000000>
55: <-0.000000, -1.000000, 0.000000>
56: <-0.000000, -1.000000, 0.000000>
57: <-0.000000, -1.000000, 0.000000>
58: <-0.000000, -1.000000, 0.000000>
59: <-0.000000, -1.000000, 0.000000>
60: <-0.000000, -1.000000, 0.000000>
61: <-0.000000, -1.000000, 0.000000>
62: <-0.000000, -1.000000, 0.000000>
63: <-0.000000, -1.000000, 0.000000>
64: <-0.000000, -1.000000, 0.000000>
65: <-0.000000, -1.000000, 0.000000>
66: <-0.000000, -1.000000, 0.000000>
67: <-0.000000, -1.000000, 0.000000>
68: < 0.259887, 0.445488, 0.856737>
69: < 0.259887, 0.445488, 0.856737>
70: < 0.259887, 0.445488, 0.856737>
71: < 0.087753, 0.445488, 0.890977>
72: < 0.087753, 0.445488, 0.890977>
73: < 0.087753, 0.445488, 0.890977>
74: <-0.890977, 0.445488, 0.087754>
75: <-0.890977, 0.445488, 0.087754>
76: <-0.890977, 0.445488, 0.087754>
77: <-0.890977, 0.445488, -0.087753>
78: <-0.890977, 0.445488, -0.087753>
79: <-0.890977, 0.445488, -0.087753>
80: <-0.856737, 0.445488, -0.259888>
81: <-0.856737, 0.445488, -0.259888>
82: <-0.856737, 0.445488, -0.259888>
83: <-0.789573, 0.445488, -0.422035>
84: <-0.789573, 0.445488, -0.422035>
85: <-0.789573, 0.445488, -0.422035>
86: <-0.692067, 0.445488, -0.567965>
87: <-0.692067, 0.445488, -0.567965>
88: <-0.692067, 0.445488, -0.567965>
89: <-0.567965, 0.445488, -0.692067>
90: <-0.567965, 0.445488, -0.692067>
91: <-0.567965, 0.445488, -0.692067>
92: <-0.422036, 0.445488, -0.789573>
93: <-0.422036, 0.445488, -0.789573>
94: <-0.422036, 0.445488, -0.789573>
95: <-0.259888, 0.445488, -0.856737>
96: <-0.259888, 0.445488, -0.856737>
97: <-0.259888, 0.445488, -0.856737>
98: <-0.087753, 0.445488, -0.890977>
99: <-0.087753, 0.445488, -0.890977>
100: <-0.087753, 0.445488, -0.890977>
101: < 0.087754, 0.445488, -0.890977>
102: < 0.087754, 0.445488, -0.890977>
103: < 0.087754, 0.445488, -0.890977>
104: < 0.259889, 0.445488, -0.856737>
105: < 0.259889, 0.445488, -0.856737>
106: < 0.259889, 0.445488, -0.856737>
107: < 0.422036, 0.445488, -0.789573>
108: < 0.422036, 0.445488, -0.789573>
109: < 0.422036, 0.445488, -0.789573>
110: < 0.567965, 0.445488, -0.692066>
111: < 0.567965, 0.445488, -0.692066>
112: < 0.567965, 0.445488, -0.692066>
113: < 0.692067, 0.445488, -0.567964>
114: < 0.692067, 0.445488, -0.567964>
115: < 0.692067, 0.445488, -0.567964>
116: < 0.789574, 0.445488, -0.422035>
117: < 0.789574, 0.445488, -0.422035>
118: < 0.789574, 0.445488, -0.422035>
119: < 0.856737, 0.445488, -0.259887>
120: < 0.856737, 0.445488, -0.259887>
121: < 0.856737, 0.445488, -0.259887>
122: < 0.890977, 0.445488, -0.087753>
123: < 0.890977, 0.445488, -0.087753>
124: < 0.890977, 0.445488, -0.087753>
125: < 0.890977, 0.445488, 0.087754>
126: < 0.890977, 0.445488, 0.087754>
127: < 0.890977, 0.445488, 0.087754>
FaceList: Count 62. Hash: 11102693598481718079
0: 0, 1, 2,
1: 3, 4, 5,
2: 6, 7, 8,
3: 9, 10, 11,
4: 12, 13, 14,
5: 15, 16, 17,
6: 18, 19, 20,
7: 21, 22, 23,
8: 24, 25, 26,
9: 27, 28, 29,
10: 30, 31, 32,
11: 33, 34, 35,
12: 36, 37, 38,
13: 36, 38, 39,
14: 36, 39, 40,
15: 36, 40, 41,
16: 36, 41, 42,
17: 36, 42, 43,
18: 36, 43, 44,
19: 36, 44, 45,
20: 36, 45, 46,
21: 36, 46, 47,
22: 36, 47, 48,
23: 36, 48, 49,
24: 36, 49, 50,
25: 36, 50, 51,
26: 36, 51, 52,
27: 36, 52, 53,
28: 36, 53, 54,
29: 36, 54, 55,
30: 36, 55, 56,
31: 36, 56, 57,
32: 36, 57, 58,
33: 36, 58, 59,
34: 36, 59, 60,
35: 36, 60, 61,
36: 36, 61, 62,
37: 36, 62, 63,
38: 36, 63, 64,
39: 36, 64, 65,
40: 36, 65, 66,
41: 66, 67, 36,
42: 68, 69, 70,
43: 71, 72, 73,
44: 74, 75, 76,
45: 77, 78, 79,
46: 80, 81, 82,
47: 83, 84, 85,
48: 86, 87, 88,
49: 89, 90, 91,
50: 92, 93, 94,
51: 95, 96, 97,
52: 98, 99, 100,
53: 101, 102, 103,
54: 104, 105, 106,
55: 107, 108, 109,
56: 110, 111, 112,
57: 113, 114, 115,
58: 116, 117, 118,
59: 119, 120, 121,
60: 122, 123, 124,
61: 125, 126, 127,
FaceMaterialIds: Count 62. Hash: 15454348664434923102
Node Name: transform

@ -1,20 +1,39 @@
ProductName: multiple_mesh_one_material.dbgsg
debugSceneGraphVersion: 1
multiple_mesh_one_material
Node Name: Cube
Node Path: RootNode.Cube
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 17730128541777770264
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: Cylinder
Node Path: RootNode.Cylinder
Node Type: MeshData
Positions: Count 192. Hash: 1283526254311745349
Normals: Count 192. Hash: 1873340970602844856
FaceList: Count 124. Hash: 4139150512255795252
FaceList: Count 124. Hash: 3728991722746136013
FaceMaterialIds: Count 124. Hash: 2372486708814455910
Node Name: Cube_optimized
Node Path: RootNode.Cube_optimized
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: Cylinder_optimized
Node Path: RootNode.Cylinder_optimized
Node Type: MeshData
Positions: Count 192. Hash: 7921557352486854444
Normals: Count 192. Hash: 1873340970602844856
FaceList: Count 124. Hash: 18311637590974204568
FaceMaterialIds: Count 124. Hash: 2372486708814455910
Node Name: transform
Node Path: RootNode.Cube.transform
Node Type: TransformData
Matrix:
@ -23,33 +42,56 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cube.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: SingleMaterial
Node Path: RootNode.Cube.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 41
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.203512, 0.203512, 0.203512>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshOneMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshOneMaterial/FBXTestTexture.png
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cylinder.transform
Node Type: TransformData
Matrix:
@ -58,30 +100,168 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: <-4.388482, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cylinder.UVMap
Node Type: MeshVertexUVData
UVs: Count 192. Hash: 27253578623892681
UVCustomName: UVMap
Node Name: SingleMaterial
Node Path: RootNode.Cylinder.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 41
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.203512, 0.203512, 0.203512>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshOneMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshOneMaterial/FBXTestTexture.png
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cylinder.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 192. Hash: 5663634855689915515
Tangents: Count 192. Hash: 11165448242141781141
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cylinder.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 192. Hash: 10115392016288328891
Bitangents: Count 192. Hash: 7987814487334449536
TangentSpace: 1
Node Name: UVMap
Node Path: RootNode.Cube_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cube_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: SingleMaterial
Node Path: RootNode.Cube_optimized.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshOneMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshOneMaterial/FBXTestTexture.png
Node Name: UVMap
Node Path: RootNode.Cylinder_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 192. Hash: 13790301632763350589
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cylinder_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 192. Hash: 7293001660047850407
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cylinder_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 192. Hash: 2874689498270494796
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cylinder_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: <-4.388482, 0.000000, 0.000000>
Node Name: SingleMaterial
Node Path: RootNode.Cylinder_optimized.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshOneMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshOneMaterial/FBXTestTexture.png

@ -1,20 +1,39 @@
ProductName: multiple_mesh_multiple_material.dbgsg
debugSceneGraphVersion: 1
multiple_mesh_multiple_material
Node Name: Cube
Node Path: RootNode.Cube
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 17730128541777770264
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: Cylinder
Node Path: RootNode.Cylinder
Node Type: MeshData
Positions: Count 192. Hash: 1283526254311745349
Normals: Count 192. Hash: 1873340970602844856
FaceList: Count 124. Hash: 4139150512255795252
FaceList: Count 124. Hash: 3728991722746136013
FaceMaterialIds: Count 124. Hash: 2372486708814455910
Node Name: Cube_optimized
Node Path: RootNode.Cube_optimized
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: Cylinder_optimized
Node Path: RootNode.Cylinder_optimized
Node Type: MeshData
Positions: Count 192. Hash: 7921557352486854444
Normals: Count 192. Hash: 1873340970602844856
FaceList: Count 124. Hash: 18311637590974204568
FaceMaterialIds: Count 124. Hash: 2372486708814455910
Node Name: transform
Node Path: RootNode.Cube.transform
Node Type: TransformData
Matrix:
@ -23,33 +42,56 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cube.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: SingleMaterial
Node Path: RootNode.Cube.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 41
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.203512, 0.203512, 0.203512>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshTwoMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshTwoMaterial/FBXTestTexture.png
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cylinder.transform
Node Type: TransformData
Matrix:
@ -58,30 +100,168 @@ Node Type: TransformData
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: <-4.388482, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cylinder.UVMap
Node Type: MeshVertexUVData
UVs: Count 192. Hash: 27253578623892681
UVCustomName: UVMap
Node Name: SecondMaterial
Node Path: RootNode.Cylinder.SecondMaterial
Node Type: MaterialData
MaterialName: SecondMaterial
UniqueId: 42
UniqueId: 5229255358802505087
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.200000, 0.200000, 0.200000>
SpecularColor: < 0.800000, 0.800000, 0.800000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshTwoMaterial/FBXSecondTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshTwoMaterial/FBXSecondTestTexture.png
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cylinder.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 192. Hash: 5663634855689915515
Tangents: Count 192. Hash: 11165448242141781141
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cylinder.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 192. Hash: 10115392016288328891
Bitangents: Count 192. Hash: 7987814487334449536
TangentSpace: 1
Node Name: UVMap
Node Path: RootNode.Cube_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cube_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: SingleMaterial
Node Path: RootNode.Cube_optimized.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshTwoMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshTwoMaterial/FBXTestTexture.png
Node Name: UVMap
Node Path: RootNode.Cylinder_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 192. Hash: 13790301632763350589
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cylinder_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 192. Hash: 7293001660047850407
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cylinder_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 192. Hash: 2874689498270494796
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cylinder_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: <-4.388482, 0.000000, 0.000000>
Node Name: SecondMaterial
Node Path: RootNode.Cylinder_optimized.SecondMaterial
Node Type: MaterialData
MaterialName: SecondMaterial
UniqueId: 5229255358802505087
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.800000, 0.800000, 0.800000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshTwoMaterial/FBXSecondTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshTwoMaterial/FBXSecondTestTexture.png

@ -0,0 +1,201 @@
ProductName: multiple_mesh_multiple_material.dbgsg
debugSceneGraphVersion: 1
multiple_mesh_multiple_material
Node Name: Cube
Node Path: RootNode.Cube
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: Cylinder
Node Path: RootNode.Cylinder
Node Type: MeshData
Positions: Count 192. Hash: 1283526254311745349
Normals: Count 192. Hash: 1873340970602844856
FaceList: Count 124. Hash: 3728991722746136013
FaceMaterialIds: Count 124. Hash: 2372486708814455910
Node Name: Cube_optimized
Node Path: RootNode.Cube_optimized
Node Type: MeshData
Positions: Count 24. Hash: 8661923109306356285
Normals: Count 24. Hash: 5807525742165000561
FaceList: Count 12. Hash: 9888799799190757436
FaceMaterialIds: Count 12. Hash: 7110546404675862471
Node Name: transform
Node Path: RootNode.Cube.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cube.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: SingleMaterial
Node Path: RootNode.Cube.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshTwoMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshTwoMaterial/FBXTestTexture.png
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cylinder.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: <-4.388482, 0.000000, 0.000000>
Node Name: UVMap
Node Path: RootNode.Cylinder.UVMap
Node Type: MeshVertexUVData
UVs: Count 192. Hash: 27253578623892681
UVCustomName: UVMap
Node Name: SecondMaterial
Node Path: RootNode.Cylinder.SecondMaterial
Node Type: MaterialData
MaterialName: SecondMaterial
UniqueId: 5229255358802505087
IsNoDraw: false
DiffuseColor: < 0.800000, 0.800000, 0.800000>
SpecularColor: < 0.800000, 0.800000, 0.800000>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshTwoMaterial/FBXSecondTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshTwoMaterial/FBXSecondTestTexture.png
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cylinder.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 192. Hash: 11165448242141781141
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cylinder.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 192. Hash: 7987814487334449536
TangentSpace: 1
Node Name: UVMap
Node Path: RootNode.Cube_optimized.UVMap
Node Type: MeshVertexUVData
UVs: Count 24. Hash: 1622169145591646736
UVCustomName: UVMap
Node Name: TangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.TangentSet_MikkT_0
Node Type: MeshVertexTangentData
Tangents: Count 24. Hash: 13438447437797057049
TangentSpace: 1
SetIndex: 0
Node Name: BitangentSet_MikkT_0
Node Path: RootNode.Cube_optimized.BitangentSet_MikkT_0
Node Type: MeshVertexBitangentData
Bitangents: Count 24. Hash: 11372562338897179017
TangentSpace: 1
Node Name: transform
Node Path: RootNode.Cube_optimized.transform
Node Type: TransformData
Matrix:
BasisX: < 100.000000, 0.000000, 0.000000>
BasisY: < 0.000000, -0.000016, 100.000000>
BasisZ: < 0.000000, -100.000000, -0.000016>
Transl: < 0.000000, 0.000000, 0.000000>
Node Name: SingleMaterial
Node Path: RootNode.Cube_optimized.SingleMaterial
Node Type: MaterialData
MaterialName: SingleMaterial
UniqueId: 14432700632681398127
IsNoDraw: false
DiffuseColor: < 0.814049, 0.814049, 0.814049>
SpecularColor: < 0.814049, 0.814049, 0.814049>
EmissiveColor: < 0.000000, 0.000000, 0.000000>
Opacity: 1.000000
Shininess: 25.000000
UseColorMap: Not set
BaseColor: Not set
UseMetallicMap: Not set
MetallicFactor: Not set
UseRoughnessMap: Not set
RoughnessFactor: Not set
UseEmissiveMap: Not set
EmissiveIntensity: Not set
UseAOMap: Not set
DiffuseTexture: TwoMeshTwoMaterial/FBXTestTexture.png
SpecularTexture:
BumpTexture:
NormalTexture:
MetallicTexture:
RoughnessTexture:
AmbientOcclusionTexture:
EmissiveTexture:
BaseColorTexture: TwoMeshTwoMaterial/FBXTestTexture.png

@ -44,6 +44,7 @@ class BlackboxAssetTest:
asset_folder: str
override_asset_folder: str = ""
scene_debug_file: str = ""
override_scene_debug_file: str = ""
assets: List[asset_db_utils.DBSourceAsset] = ()
override_assets: List[asset_db_utils.DBSourceAsset] = ()
@ -59,25 +60,6 @@ blackbox_fbx_tests = [
source_file_name = "OneMeshOneMaterial.fbx",
uuid = b"8a9164adb84859be893e18aa819438e1",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name="onemeshonematerial/onemeshonematerial.cgf",
sub_id=-1588558583,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
asset_db_utils.DBProduct(
product_name="onemeshonematerial/onemeshonematerial.dccmtl",
sub_id=382053982,
asset_type=b"c88469cf21e741eb96fdbf14fbb05edc"
),
],
),
asset_db_utils.DBJob(
job_key= "Scene compilation",
builder_guid=b"bd8bf65894854fe3830e8ec3a23c35f3",
@ -110,46 +92,12 @@ blackbox_fbx_tests = [
source_file_name = "lodtest.fbx",
uuid = b"44c8627fe2c25aae91fe3ff9547be3b9",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name= "softnaminglod/lodtest.cgf",
sub_id=1091612206,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
asset_db_utils.DBProduct(
product_name="softnaminglod/lodtest.dccmtl",
sub_id=1960621672,
asset_type=b"c88469cf21e741eb96fdbf14fbb05edc"
),
asset_db_utils.DBProduct(
product_name="softnaminglod/lodtest_lod1.cgf",
sub_id=1091677742,
asset_type=b"9aae4926cb6a4c609948a1a22f51db23"
),
asset_db_utils.DBProduct(
product_name="softnaminglod/lodtest_lod2.cgf",
sub_id=1091743278,
asset_type=b"9aae4926cb6a4c609948a1a22f51db23"
),
asset_db_utils.DBProduct(
product_name="softnaminglod/lodtest_lod3.cgf",
sub_id=1091808814,
asset_type=b"9aae4926cb6a4c609948a1a22f51db23"
),
],
),
asset_db_utils.DBJob(
job_key= "Scene compilation",
builder_guid=b"bd8bf65894854fe3830e8ec3a23c35f3",
status=4,
error_count=0,
warning_count=0,
warning_count=9,
products = [
asset_db_utils.DBProduct(
product_name='softnaminglod/lodtest.dbgsg',
@ -176,26 +124,12 @@ blackbox_fbx_tests = [
source_file_name = "physicstest.fbx",
uuid = b"df957b7918cf5b029806c73f630fa1c8",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name= "softnamingphysics/physicstest.cgf",
sub_id=653314392,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
],
),
asset_db_utils.DBJob(
job_key= "Scene compilation",
builder_guid=b"bd8bf65894854fe3830e8ec3a23c35f3",
status=4,
error_count=0,
warning_count=1,
warning_count=6,
products = [
asset_db_utils.DBProduct(
product_name='softnamingphysics/physicstest.dbgsg',
@ -224,30 +158,6 @@ blackbox_fbx_tests = [
source_file_name = "multiple_mesh_one_material.fbx",
uuid = b"597618fd497659a1b197a015fe47aa95",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name="twomeshonematerial/multiple_mesh_one_material.dccmtl",
sub_id=-1706078587,
asset_type=b"c88469cf21e741eb96fdbf14fbb05edc"
),
asset_db_utils.DBProduct(
product_name="twomeshonematerial/test_cube.cgf",
sub_id=-112145915,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
asset_db_utils.DBProduct(
product_name="twomeshonematerial/test_cylinder.cgf",
sub_id=2087742249,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
],
),
asset_db_utils.DBJob(
job_key= "Scene compilation",
builder_guid=b"bd8bf65894854fe3830e8ec3a23c35f3",
@ -279,25 +189,6 @@ blackbox_fbx_tests = [
source_file_name = "multiple_mesh_linked_materials.fbx",
uuid = b"25d8301c2eef5dc7bded310db8ea608d",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name='twomeshlinkedmaterials/multiple_mesh_linked_materials.cgf',
sub_id=1259347154,
asset_type=b'c2869e3bdda04e018fe36770d788866b'
),
asset_db_utils.DBProduct(
product_name='twomeshlinkedmaterials/multiple_mesh_linked_materials.dccmtl',
sub_id=1829742731,
asset_type=b'c88469cf21e741eb96fdbf14fbb05edc'
),
],
),
asset_db_utils.DBJob(
job_key= "Scene compilation",
platform= "pc",
@ -331,25 +222,6 @@ blackbox_fbx_tests = [
source_file_name = "single_mesh_multiple_materials.fbx",
uuid = b"f08fd585dfa35881b4bf86637da5e858",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name='onemeshmultiplematerials/single_mesh_multiple_materials.cgf',
sub_id=1296081148,
asset_type=b'c2869e3bdda04e018fe36770d788866b'
),
asset_db_utils.DBProduct(
product_name='onemeshmultiplematerials/single_mesh_multiple_materials.dccmtl',
sub_id=-229825489,
asset_type=b'c88469cf21e741eb96fdbf14fbb05edc'
),
],
),
asset_db_utils.DBJob(
job_key= "Scene compilation",
platform= "pc",
@ -381,20 +253,6 @@ blackbox_fbx_tests = [
source_file_name="VertexColor.fbx",
uuid=b"207e7e1540785a26b064e9be67361cdf",
jobs=[
asset_db_utils.DBJob(
job_key="fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products=[
asset_db_utils.DBProduct(
product_name="vertexcolor/vertexcolor.cgf",
sub_id=-427774918,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
],
),
asset_db_utils.DBJob(
job_key="Scene compilation",
builder_guid=b"bd8bf65894854fe3830e8ec3a23c35f3",
@ -425,35 +283,12 @@ blackbox_fbx_special_tests = [
asset_folder= "TwoMeshTwoMaterial",
override_asset_folder = "OverrideAssetInfoForTwoMeshTwoMaterial",
scene_debug_file="multiple_mesh_multiple_material.dbgsg",
override_scene_debug_file="multiple_mesh_multiple_material_override.dbgsg",
assets = [
asset_db_utils.DBSourceAsset(
source_file_name = "multiple_mesh_multiple_material.fbx",
uuid = b"b5915fb874af5c8a866ccabbddb57595",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name="twomeshtwomaterial/multiple_mesh_multiple_material.dccmtl",
sub_id=-1035023097,
asset_type=b"c88469cf21e741eb96fdbf14fbb05edc"
),
asset_db_utils.DBProduct(
product_name="twomeshtwomaterial/test_cube_mesh.cgf",
sub_id=-1822360172,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
asset_db_utils.DBProduct(
product_name="twomeshtwomaterial/test_cylinder_mesh.cgf",
sub_id=-1885293549,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
],
),
asset_db_utils.DBJob(
job_key="Scene compilation",
builder_guid=b"bd8bf65894854fe3830e8ec3a23c35f3",
@ -475,25 +310,6 @@ blackbox_fbx_special_tests = [
source_file_name = "multiple_mesh_multiple_material.fbx",
uuid = b"b5915fb874af5c8a866ccabbddb57595",
jobs = [
asset_db_utils.DBJob(
job_key= "fbx",
builder_guid=b"0bbfc8c191374404bd9464c0364efbfb",
status=4,
error_count=0,
warning_count=2,
products = [
asset_db_utils.DBProduct(
product_name="twomeshtwomaterial/multiple_mesh_multiple_material.dccmtl",
sub_id=-1035023097,
asset_type=b"c88469cf21e741eb96fdbf14fbb05edc"
),
asset_db_utils.DBProduct(
product_name="twomeshtwomaterial/test_cube_mesh.cgf",
sub_id=-1822360172,
asset_type=b"c2869e3bdda04e018fe36770d788866b"
),
],
),
asset_db_utils.DBJob(
job_key= "Scene compilation",
builder_guid=b"bd8bf65894854fe3830e8ec3a23c35f3",
@ -574,7 +390,7 @@ class TestsFBX_AllPlatforms(object):
for job in expected_source.jobs:
job.platform = ASSET_PROCESSOR_PLATFORM_MAP[workspace.asset_processor_platform]
for product in job.products:
product.product_name = job.platform + "/" + project.lower() + "/" \
product.product_name = job.platform + "/" \
+ product.product_name
@ -605,7 +421,8 @@ class TestsFBX_AllPlatforms(object):
asset_processor.prepare_test_environment(ap_setup_fixture['tests_dir'], test_assets_folder,
use_current_root=True, add_scan_folder=False,
existing_function_name=blackbox_params.asset_folder)
asset_processor.batch_process(extra_params="--debugOutput")
asset_processor.batch_process(extra_params=["--debugOutput",
"--regset=\"/O3DE/SceneAPI/AssetImporter/SkipAtomOutput=true\""])
logger.info(f"Validating assets.")
assetsToValidate = blackbox_params.override_assets if overrideAsset else blackbox_params.assets
@ -628,8 +445,11 @@ class TestsFBX_AllPlatforms(object):
ASSET_PROCESSOR_PLATFORM_MAP[workspace.asset_processor_platform]))
if blackbox_params.scene_debug_file:
scene_debug_file = blackbox_params.override_scene_debug_file if overrideAsset\
else blackbox_params.scene_debug_file
debug_graph_path = os.path.join(asset_processor.project_test_cache_folder(), blackbox_params.scene_debug_file)
expected_debug_graph_path = os.path.join(asset_processor.project_test_source_folder(), blackbox_params.scene_debug_file)
expected_debug_graph_path = os.path.join(asset_processor.project_test_source_folder(), scene_debug_file)
logger.info(f"Parsing scene graph: {debug_graph_path}")
with open(debug_graph_path, "r") as scene_file:

@ -89,13 +89,13 @@ def clear_all_missing_dependencies(asset_db_path) -> None:
class DBProduct:
product_name: str = None
sub_id: int = 0
asset_type: str = None
asset_type: bytes = None
@dataclass
class DBJob:
job_key: str = None
builder_guid: str = None
builder_guid: bytes = None
status: int = 0
error_count: int = 0
warning_count: int = 0
@ -107,7 +107,7 @@ class DBJob:
@dataclass
class DBSourceAsset:
source_file_name: str = None
uuid: str = None
uuid: bytes = None
scan_folder_key: str = field(compare=False, default=None)
id: str = field(compare=False, default=None)
# Key: Job ID

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f0f4d4e0155feaa76c80a14128000a0fd9570ab76e79f4847eaef9006324a4d2
size 9084
oid sha256:19f2c4454bb395cdc0a36d1e45e6a384bbd23037af1a2fb93e088ecfa0f10e5b
size 9343

@ -1,6 +1,6 @@
<download name="ClientAuth" type="Map">
<index src="filelist.xml" dest="filelist.xml"/>
<files>
<file src="level.pak" dest="level.pak" size="ED0" md5="dbf5115226e4b0ea38ebdc3967ba3aa9"/>
<file src="level.pak" dest="level.pak" size="E1A" md5="fecbc160ebc2186184504482e3e2eba3"/>
</files>
</download>

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:da041115014f11696d5878d5c21247c17b8d694fa9674e30692259261a7223a2
size 3792
oid sha256:8a674e05824e5ceec13a0487b318923568710bc8269e5be84adad59c495a7ceb
size 3610

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:43b1a23b62fe2ffa05545ac99524f40b6fff49d6e35925b9d6138c00d8082e86
size 9073
oid sha256:a1c0b621525b8e88c3775ea4c60c2197d1e1b060ace9bad9d6efcb0532817e44
size 9356

@ -1,6 +1,6 @@
<download name="ClientAuthPasswordSignIn" type="Map">
<index src="filelist.xml" dest="filelist.xml"/>
<files>
<file src="level.pak" dest="level.pak" size="DDF" md5="ebe91ae5f1ea1ec735b6650b14f3f95b"/>
<file src="level.pak" dest="level.pak" size="E53" md5="12728d49c7efe0c8e83e3651a1d13ca6"/>
</files>
</download>

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a58292341785cb260dc0ccf346259e35e2817ee48fc401a21ab528f6afb97b52
size 3551
oid sha256:f318a1787069385de291660f79e350cea2ca2c3ef3b5e0576686066bd9c49395
size 3667

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f3d5121b26608b02747e245071ccff29ac57358cb6349ec9495a7a003ac12467
size 8942
oid sha256:afc5d665128738e6bea09e78a16ee38acc923a8ecefff90d987858ce72c395fa
size 9360

@ -1,6 +1,6 @@
<download name="ClientAuthPasswordSignUp" type="Map">
<index src="filelist.xml" dest="filelist.xml"/>
<files>
<file src="level.pak" dest="level.pak" size="DDA" md5="aa6df891d505d6d9175beee4b55626db"/>
<file src="level.pak" dest="level.pak" size="E44" md5="acfaa325178533f135cd683d3782cc8e"/>
</files>
</download>

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:605391d415b828b100bada11d108099520c0b6a020f17588887b610475805d90
size 3546
oid sha256:87882b64688a77815d93c6973929fa21b89dc6c13d4866c710124ce2cd0f411e
size 3652

@ -30,9 +30,6 @@ function metrics:OnSendMetricsFailure(requestId, errorMessage)
end
function metrics:OnDeactivate()
AWSMetricsRequestBus.Broadcast.FlushMetrics()
Debug.Log("Stop generating new test events and flushed the buffered metrics.")
self.tickBusHandler:Disconnect()
self.metricsNotificationHandler:Disconnect()
end
@ -40,7 +37,7 @@ end
function metrics:OnTick(deltaTime, timePoint)
self.tickTime = self.tickTime + deltaTime
if self.tickTime > 2.0 then
if self.tickTime > 5.0 then
defaultAttribute = AWSMetrics_MetricsAttribute()
defaultAttribute:SetName("event_name")
defaultAttribute:SetStrValue("login")
@ -57,6 +54,9 @@ function metrics:OnTick(deltaTime, timePoint)
if self.numSubmittedMetricsEvents % 2 == 0 then
if AWSMetricsRequestBus.Broadcast.SubmitMetrics(attributeList.attributes, 0, "lua", false) then
Debug.Log("Submitted metrics without buffer.")
AWSMetricsRequestBus.Broadcast.FlushMetrics()
Debug.Log("Flushed the buffered metrics.")
else
Debug.Log("Failed to Submit metrics without buffer.")
end
@ -67,7 +67,7 @@ function metrics:OnTick(deltaTime, timePoint)
Debug.Log("Failed to Submit metrics with buffer.")
end
end
self.numSubmittedMetricsEvents = self.numSubmittedMetricsEvents + 1
self.tickTime = 0
end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -8,7 +8,7 @@ To contribute, please review our [Code of Conduct](https://github.com/o3de/o3de/
## Making contributions with the Developer Certificate of Origin (DCO)
When contributing, your pull requests will require that you have agreed to our DCO found here: [Devloper Certificate of Origin](https://developercertificate.org/)
When contributing, your pull requests will require that you have agreed to our DCO found here: [Developer Certificate of Origin](https://developercertificate.org/). All commits require the --signoff flag to show DCO compliance.
You can do this by using the -s option in git.
Example: ```git commit -s -m 'my commit message'```

@ -54,10 +54,9 @@ private:
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
static XmlNodeRef m_node;
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
static QString m_title;
static QVariant s_pendingPut;
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
QWidget* m_parent;
QTimer m_putDebounce;

@ -16,6 +16,7 @@
#include <AzToolsFramework/Entity/SliceEditorEntityOwnershipServiceBus.h>
#include <AzCore/Component/Component.h>
#include <TimeValue.h>
#include <IEditor.h>
#endif
class CClouds;

@ -15,6 +15,7 @@
#pragma once
#include <vector>
#include <QtCore/QString>
#define DEFINE_UUID(l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
static const GUID uuid() { return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; }
@ -69,7 +70,6 @@ enum
#include "SandboxAPI.h"
class QObject;
class QString;
//! System class IDs
@ -121,19 +121,9 @@ struct IClassDesc
//! create panel.
virtual QString Category() = 0;
#ifdef QSTRING_H
virtual QString MenuSuggestion() { return QString(); }
virtual QString Tooltip() { return QString(); }
virtual QString Description() { return QString(); }
#else
//! This method returns the desired menu in which this plugin class would like to be placed in the editor.
//! It is up to the editor to determine if it can and wants to fulfill this request.
virtual QString MenuSuggestion();
//! This method returns the tooltip for the pane
virtual QString Tooltip();
//! This method returns the description for the pane
virtual QString Description();
#endif
//! This method returns if the plugin should have a menu item for its pane.
virtual bool ShowInMenu() const { return true; }

@ -15,6 +15,8 @@ struct IStatObj;
struct IMaterial;
class CBitmap;
class QImage;
// Note: values are used as array indices
enum EStatObject
{

@ -11,6 +11,10 @@
#define CRYINCLUDE_EDITOR_INCLUDE_IOBJECTMANAGER_H
#pragma once
#include <AzCore/PlatformIncl.h>
#include <CryCommon/platform.h>
#include <CryCommon/Cry_Geo.h>
// forward declarations.
class CEntityObject;
struct DisplayContext;
@ -24,6 +28,8 @@ class CViewport;
struct HitContext;
enum class ImageRotationDegrees;
struct IStatObj;
class CBaseObject;
class XmlNodeRef;
#include "ObjectEvent.h"

@ -11,6 +11,7 @@
#if !defined(Q_MOC_RUN)
#include <AzCore/std/smart_ptr/shared_ptr.h>
#include <AzCore/Component/Component.h>
#include <AzCore/EBus/Event.h>
#include <QComboBox>
#include <QMainWindow>

@ -31,6 +31,7 @@ struct IRenderAuxGeom;
struct IIconManager;
class CDisplaySettings;
class CCamera;
class QPoint;
enum DisplayFlags
{

@ -13,6 +13,7 @@
#include "IEditor.h"
#include "Include/IIconManager.h"
#include "Include/IDisplayViewport.h"
#include <Editor/Util/EditorUtils.h>
#include <QDateTime>
#include <QPoint>

@ -20,6 +20,8 @@ class CBaseObject;
#include "ObjectEvent.h"
#include "Objects/BaseObject.h"
#include <Editor/EditorDefs.h>
/*!
* CSelectionGroup is a named selection group of objects.
*/

@ -6,7 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "ComponentEntityEditorPlugin.h"
#include <LyViewPaneNames.h>

@ -1,33 +0,0 @@
/*
* 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
*
*/
#pragma once
#include <AzCore/PlatformDef.h>
/////////////////////////////////////////////////////////////////////////////
// Engine
/////////////////////////////////////////////////////////////////////////////
#include <Cry_Math.h>
#include <ISystem.h>
#include <ISerialize.h>
#include <CryName.h>
#include <EditorDefs.h>
#include <Resource.h>
/////////////////////////////////////////////////////////////////////////////
// STL
/////////////////////////////////////////////////////////////////////////////
#include <vector>
#include <list>
#include <map>
#include <set>
#include <algorithm>
#ifdef CreateDirectory
#undef CreateDirectory
#endif

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "ComponentEntityObject.h"

@ -5,8 +5,6 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "SandboxIntegration.h"
#include <AzCore/Component/ComponentApplicationBus.h>
@ -83,6 +81,7 @@
#include <Editor/StringDlg.h>
#include <Editor/QtViewPaneManager.h>
#include <Editor/EditorViewportSettings.h>
#include <Editor/Util/PathUtil.h>
#include <IResourceSelectorHost.h>
#include "CryEdit.h"

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include <AzCore/Component/TransformBus.h>
#include <AzCore/UnitTest/TestTypes.h>
#include <AzTest/AzTest.h>

@ -6,15 +6,11 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include <AzTest/AzTest.h>
#include <AzCore/Memory/SystemAllocator.h>
#include <QApplication>
using namespace AZ;
// Handle asserts
class ToolsFrameworkHook
: public AZ::Test::ITestEnvironment
@ -22,12 +18,12 @@ class ToolsFrameworkHook
public:
void SetupEnvironment() override
{
AllocatorInstance<SystemAllocator>::Create();
AZ::AllocatorInstance<AZ::SystemAllocator>::Create();
}
void TeardownEnvironment() override
{
AllocatorInstance<SystemAllocator>::Destroy();
AZ::AllocatorInstance<AZ::SystemAllocator>::Destroy();
}
};

@ -6,8 +6,7 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include <EditorDefs.h>
#include "CryEdit.h"
#include "AssetCatalogModel.h"
#include "Objects/ComponentEntityObject.h"

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "CategoriesList.h"
ComponentCategoryList::ComponentCategoryList(QWidget* parent /*= nullptr*/)

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "ComponentDataModel.h"
#include "Include/IObjectManager.h"

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "ComponentPaletteWindow.h"
#include "ComponentDataModel.h"
#include "FavoriteComponentList.h"
@ -27,6 +25,7 @@
#include <AzToolsFramework/API/ViewPaneOptions.h>
#include <QLabel>
#include <QKeyEvent>
ComponentPaletteWindow::ComponentPaletteWindow(QWidget* parent)
: QMainWindow(parent)

@ -9,7 +9,9 @@
#pragma once
#if !defined(Q_MOC_RUN)
#include <AzCore/PlatformIncl.h>
#include <QMainWindow>
#include <AzCore/Math/Guid.h>
#endif
namespace AzToolsFramework

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "FavoriteComponentList.h"
#include <AzCore/Serialization/SerializeContext.h>
#include <AzCore/Serialization/EditContext.h>

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "ComponentDataModel.h"
#include "FavoriteComponentList.h"
#include "FilteredComponentList.h"

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "InformationPanel.h"
// TODO: LMBR-28174

@ -5,8 +5,6 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "OutlinerDisplayOptionsMenu.h"
#include <QIcon>

@ -5,8 +5,6 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "OutlinerListModel.hxx"
#include <QtCore/QMimeData>
@ -65,6 +63,7 @@
#include <Editor/CryEditDoc.h>
#include <AzCore/Outcome/Outcome.h>
#include <Editor/Util/PathUtil.h>
////////////////////////////////////////////////////////////////////////////
// OutlinerListModel

@ -5,10 +5,9 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "OutlinerSearchWidget.h"
#include <AzCore/Casting/numeric_cast.h>
#include <AzQtComponents/Components/FlowLayout.h>
#include <AzQtComponents/Components/StyleManager.h>
#include <QLabel>
@ -16,6 +15,7 @@
#include <QTextDocument>
#include <QPainter>
#include <QToolButton>
#include <QApplication>
namespace AzQtComponents
{

@ -19,6 +19,7 @@
#if !defined(DEFINED_QMETATYPE_UUID)
#define DEFINED_QMETATYPE_UUID
#include <AzCore/Math/Uuid.h>
Q_DECLARE_METATYPE(AZ::Uuid);
#endif

@ -5,8 +5,6 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "OutlinerSortFilterProxyModel.hxx"
#include <AzCore/Component/ComponentApplication.h>

@ -5,8 +5,6 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "OutlinerTreeView.hxx"
#include "OutlinerListModel.hxx"
@ -19,6 +17,7 @@
#include <QDrag>
#include <QPainter>
#include <QHeaderView>
#include <QMouseEvent>
OutlinerTreeView::OutlinerTreeView(QWidget* pParent)
: QTreeView(pParent)

@ -5,8 +5,8 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include <CryCommon/platform.h>
#include "MainWindow.h" // for MainWindow
#include "OutlinerListModel.hxx"

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "UI/QComponentEntityEditorMainWindow.h"
#include <AzCore/Component/Entity.h>

@ -11,6 +11,8 @@
#include <QMainWindow>
#include <AzCore/Serialization/SerializeContext.h>
#include <CryCommon/ISystem.h>
#endif
class QObjectPropertyModel;

@ -6,8 +6,7 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include <EditorDefs.h>
#include "CryEdit.h"
#include "UI/QComponentEntityEditorOutlinerWindow.h"
#include "UI/Outliner/OutlinerWidget.hxx"

@ -6,8 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
#include "UI/QComponentLevelEntityEditorMainWindow.h"
#include <AzCore/Component/Entity.h>

@ -12,7 +12,6 @@ set(FILES
ComponentEntityEditorPlugin.cpp
SandboxIntegration.h
SandboxIntegration.cpp
ComponentEntityEditorPlugin_precompiled.h
UI/QComponentEntityEditorMainWindow.h
UI/QComponentEntityEditorMainWindow.cpp
UI/QComponentLevelEntityEditorMainWindow.h

@ -6,15 +6,6 @@
*
*/
#include "ComponentEntityEditorPlugin_precompiled.h"
// All plugins suffer from the following warning:
// warning C4273: 'GetIEditor' : inconsistent dll linkage
// GetIEditor() is forward-declared using EDITOR_CORE_API, which without EDITOR_CORE set,
// results in dllimport rather than dllexport. This define ensure it's consistently and
// properly defined for export.
#define EDITOR_CORE
#include <platform.h>
#include <IEditor.h>

@ -6,7 +6,6 @@
*
*/
#include "EditorAssetImporter_precompiled.h"
#include <AssetBrowserContextProvider.h>
#include <AssetImporterPlugin.h>
#include <QtCore/QMimeData>

@ -6,7 +6,6 @@
*
*/
#include "EditorAssetImporter_precompiled.h"
#include <AssetImporterDocument.h>
#include <AzToolsFramework/Debug/TraceContext.h>
#include <SceneAPI/SceneCore/Export/MtlMaterialExporter.h>

@ -6,7 +6,6 @@
*
*/
#include "EditorAssetImporter_precompiled.h"
#include <AssetImporterPlugin.h>
#include <AssetImporterWindow.h>
#include <QtViewPaneManager.h>

@ -6,7 +6,6 @@
*
*/
#include "EditorAssetImporter_precompiled.h"
#include <AssetImporterWindow.h>
#include <ui_AssetImporterWindow.h>
#include <AssetImporterPlugin.h>

@ -15,10 +15,12 @@
/////////////////////////////////////////////////////////////////////////////
#if !defined(Q_MOC_RUN)
#include <AzCore/PlatformIncl.h>
#include <QMainWindow>
#include <AssetImporterDocument.h>
#include <AzCore/std/smart_ptr/shared_ptr.h>
#include <AzCore/std/smart_ptr/unique_ptr.h>
#include <AzCore/Math/Guid.h>
#endif
namespace AZStd

@ -6,7 +6,6 @@
*
*/
#include "EditorAssetImporter_precompiled.h"
#include <ImporterRootDisplay.h>
#include <ui_ImporterRootDisplay.h>

@ -12,14 +12,10 @@
//
/////////////////////////////////////////////////////////////////////////////
#include "EditorAssetImporter_precompiled.h"
#include "AssetImporterPlugin.h"
#if defined(AZ_PLATFORM_WINDOWS)
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
#include <AzCore/PlatformIncl.h>
#include <AzCore/Memory/SystemAllocator.h>
PLUGIN_API IPlugin* CreatePluginInstance(PLUGIN_INIT_PARAM* pInitParam)

@ -6,7 +6,6 @@
*
*/
#include "EditorAssetImporter_precompiled.h"
#include <AzCore/IO/SystemFile.h>
#include <AzCore/std/algorithm.h>
#include <AzCore/std/string/conversions.h>

@ -20,7 +20,6 @@ set(FILES
SceneSerializationHandler.h
SceneSerializationHandler.cpp
Main.cpp
EditorAssetImporter_precompiled.h
AssetImporter.qrc
AssetImporterWindow.ui
ImporterRootDisplay.ui

@ -6,7 +6,6 @@
*
*/
#include "EditorCommon_precompiled.h"
#include <ActionOutput.h>
#include <QWidget>

@ -7,5 +7,4 @@
*/
#include "EditorCommon_precompiled.h"
#include "../../Editor/RenderHelpers/AxisHelperShared.inl"

@ -6,6 +6,4 @@
*
*/
#include "EditorCommon_precompiled.h"
#include "../../Editor/Objects/DisplayContextShared.inl"

@ -7,7 +7,6 @@
*/
#include "EditorCommon_precompiled.h"
#include "Ruler.h"
#include <QPainter>
@ -44,7 +43,7 @@ namespace DrawingPrimitives
const float ticksMinPower = log10f(RULER_MIN_PIXELS_PER_TICK);
const float ticksPowerDelta = ticksMinPower - log10f(pixelsPerUnit);
const int digitsAfterPoint = max(-int(ceil(ticksPowerDelta)) - 1, 0);
const int digitsAfterPoint = AZStd::max(-int(ceil(ticksPowerDelta)) - 1, 0);
if (pRulerPrecision)
{
*pRulerPrecision = digitsAfterPoint;
@ -160,7 +159,7 @@ namespace DrawingPrimitives
char format[16] = "";
sprintf_s(format, "%%.%df", rulerPrecision);
azsprintf(format, "%%.%df", rulerPrecision);
const int height = options.m_rect.height();
const int top = options.m_rect.top();

@ -7,7 +7,6 @@
*/
#include "EditorCommon_precompiled.h"
#include "TimeSlider.h"
#include <QPainter>

@ -5,13 +5,14 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "EditorCommon_precompiled.h"
#include <platform.h>
#include "EditorCommon.h"
#include "EditorCommonAPI.h"
#include <CryCommon/ISystem.h>
CEditorCommonApp::CEditorCommonApp()
{
}

@ -1,22 +0,0 @@
/*
* 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
*
*/
#pragma once
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN
#endif
// These redicilous dependencies are needed just to be able to use
// Sandbox gizmos drawing and hit-testing code =(
#include "ISystem.h"
#include "Include/EditorCoreAPI.h"
#include "Util/EditorUtils.h"

@ -7,7 +7,6 @@
*/
#include "EditorCommon_precompiled.h"
#include "platform.h"
#pragma warning(disable: 4266) // disabled warning from afk overrides

@ -6,7 +6,6 @@
*
*/
#include "EditorCommon_precompiled.h"
#include <SaveUtilities/AsyncSaveRunner.h>
#include <AzToolsFramework/SourceControl/SourceControlAPI.h>
#include <AzCore/IO/SystemFile.h>

@ -6,7 +6,6 @@
*
*/
#include "EditorCommon_precompiled.h"
#include <WinWidget/WinWidgetManager.h>
namespace WinWidget

@ -14,6 +14,8 @@
#include <vector>
#include <functional>
class QWidget;
namespace WinWidget
{
class EDITOR_COMMON_API WinWidgetManager

@ -11,7 +11,6 @@ set(FILES
EditorCommon.cpp
EditorCommon.rc
EditorCommonAPI.h
EditorCommon_precompiled.h
ActionOutput.h
ActionOutput.cpp
UiEditorDLLBus.h

@ -1,14 +0,0 @@
/*
* 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
*
*/
// stdafx.cpp : source file that includes just the standard includes
// EditorCommon.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "EditorCommon_precompiled.h"

@ -7,7 +7,6 @@
*/
#include "FFMPEGPlugin_precompiled.h"
#include "FFMPEGPlugin.h"
#include "CryString.h"
typedef CryStringT<char> string;

@ -1,25 +0,0 @@
/*
* 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
*
*/
#pragma once
#include <AzCore/PlatformDef.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// CRY Stuff ////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
#include <platform.h>
/////////////////////////////////////////////////////////////////////////////
// CRY Stuff ////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
#include <ISystem.h>
#include "EditorCoreAPI.h"

@ -9,7 +9,6 @@
set(FILES
FFMPEGPlugin.rc
main.cpp
FFMPEGPlugin_precompiled.h
FFMPEGPlugin.cpp
FFMPEGPlugin.h
)

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save