Merge branch 'development' into redcode/driller_removal
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
import azlmbr.bus
|
||||
import azlmbr.math
|
||||
|
||||
from scene_api.scene_data import PrimitiveShape, DecompositionMode
|
||||
from scene_helpers import *
|
||||
|
||||
|
||||
@@ -41,6 +42,35 @@ def add_material_component(entity_id):
|
||||
raise RuntimeError("UpdateComponentForEntity for editor_material_component failed")
|
||||
|
||||
|
||||
def add_physx_meshes(scene_manifest: sceneData.SceneManifest, source_file_name: str, mesh_name_list: List, all_node_paths: List[str]):
|
||||
first_mesh = mesh_name_list[0].get_path()
|
||||
|
||||
# Add a Box Primitive PhysX mesh with a comment
|
||||
physx_box = scene_manifest.add_physx_primitive_mesh_group(source_file_name + "_box", PrimitiveShape.BOX, 0.0, None)
|
||||
scene_manifest.physx_mesh_group_add_comment(physx_box, "This is a box primitive")
|
||||
# Select the first mesh, unselect every other node
|
||||
scene_manifest.physx_mesh_group_add_selected_node(physx_box, first_mesh)
|
||||
|
||||
for node in all_node_paths:
|
||||
if node != first_mesh:
|
||||
scene_manifest.physx_mesh_group_add_unselected_node(physx_box, node)
|
||||
|
||||
# Add a Convex Mesh PhysX mesh with a comment
|
||||
convex_mesh = scene_manifest.add_physx_convex_mesh_group(source_file_name + "_convex", 0.08, .0004,
|
||||
True, True, True, True, True, 24, True, "Glass")
|
||||
scene_manifest.physx_mesh_group_add_comment(convex_mesh, "This is a convex mesh")
|
||||
# Select/Unselect nodes using lists
|
||||
all_except_first_mesh = [x for x in all_node_paths if x != first_mesh]
|
||||
scene_manifest.physx_mesh_group_add_selected_unselected_nodes(convex_mesh, [first_mesh], all_except_first_mesh)
|
||||
|
||||
# Configure mesh decomposition for this mesh
|
||||
scene_manifest.physx_mesh_group_decompose_meshes(convex_mesh, 512, 32, .002, 100100, DecompositionMode.TETRAHEDRON,
|
||||
0.06, 0.055, 0.00015, 3, 3, True, False)
|
||||
|
||||
# Add a Triangle mesh
|
||||
triangle = scene_manifest.add_physx_triangle_mesh_group(source_file_name + "_triangle", False, True, True, True, True, True)
|
||||
scene_manifest.physx_mesh_group_add_selected_unselected_nodes(triangle, [first_mesh], all_except_first_mesh)
|
||||
|
||||
def update_manifest(scene):
|
||||
import uuid, os
|
||||
import azlmbr.scene.graph
|
||||
@@ -62,6 +92,8 @@ def update_manifest(scene):
|
||||
previous_entity_id = azlmbr.entity.InvalidEntityId
|
||||
first_mesh = True
|
||||
|
||||
add_physx_meshes(scene_manifest, source_filename_only, mesh_name_list, all_node_paths)
|
||||
|
||||
# Loop every mesh node in the scene
|
||||
for activeMeshIndex in range(len(mesh_name_list)):
|
||||
mesh_name = mesh_name_list[activeMeshIndex]
|
||||
@@ -106,6 +138,26 @@ def update_manifest(scene):
|
||||
if not result:
|
||||
raise RuntimeError("UpdateComponentForEntity failed for Mesh component")
|
||||
|
||||
# Add a physics component referencing the triangle mesh we made for the first node
|
||||
if previous_entity_id is None:
|
||||
physx_mesh_component = azlmbr.entity.EntityUtilityBus(azlmbr.bus.Broadcast, "GetOrAddComponentByTypeName",
|
||||
entity_id, "{FD429282-A075-4966-857F-D0BBF186CFE6} EditorColliderComponent")
|
||||
|
||||
json_update = json.dumps({
|
||||
"ShapeConfiguration": {
|
||||
"PhysicsAsset": {
|
||||
"Asset": {
|
||||
"assetHint": os.path.join(source_relative_path, source_filename_only + "_triangle.pxmesh")
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
result = azlmbr.entity.EntityUtilityBus(azlmbr.bus.Broadcast, "UpdateComponentForEntity", entity_id, physx_mesh_component, json_update)
|
||||
|
||||
if not result:
|
||||
raise RuntimeError("UpdateComponentForEntity failed for PhysX mesh component")
|
||||
|
||||
# an example of adding a material component to override the default material
|
||||
if previous_entity_id is not None and first_mesh:
|
||||
first_mesh = False
|
||||
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
"""
|
||||
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
|
||||
"""
|
||||
|
||||
class HeightTests:
|
||||
single_gradient_height_correct = (
|
||||
"Successfully retrieved height for gradient1.",
|
||||
"Failed to retrieve height for gradient1."
|
||||
)
|
||||
double_gradient_height_correct = (
|
||||
"Successfully retrieved height when two gradients exist.",
|
||||
"Failed to retrieve height when two gradients exist."
|
||||
)
|
||||
triple_gradient_height_correct = (
|
||||
"Successfully retrieved height when three gradients exist.",
|
||||
"Failed to retrieve height when three gradients exist."
|
||||
)
|
||||
terrain_data_changed_call_count_correct = (
|
||||
"OnTerrainDataChanged called expected number of times.",
|
||||
"OnTerrainDataChanged call count incorrect."
|
||||
)
|
||||
|
||||
def TerrainHeightGradientList_AddRemoveGradientWorks():
|
||||
"""
|
||||
Summary:
|
||||
Test aspects of the TerrainHeightGradientList through the BehaviorContext and the Property Tree.
|
||||
:return: None
|
||||
"""
|
||||
|
||||
import os
|
||||
import math as sys_math
|
||||
|
||||
import azlmbr.legacy.general as general
|
||||
import azlmbr.bus as bus
|
||||
import azlmbr.math as math
|
||||
import azlmbr.terrain as terrain
|
||||
import azlmbr.editor as editor
|
||||
import azlmbr.vegetation as vegetation
|
||||
import azlmbr.entity as EntityId
|
||||
|
||||
import editor_python_test_tools.hydra_editor_utils as hydra
|
||||
from editor_python_test_tools.utils import Report
|
||||
from editor_python_test_tools.utils import TestHelper as helper
|
||||
import editor_python_test_tools.pyside_utils as pyside_utils
|
||||
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||
|
||||
terrain_changed_call_count = 0
|
||||
expected_terrain_changed_calls = 0
|
||||
|
||||
aabb_component_name = "Axis Aligned Box Shape"
|
||||
gradientlist_component_name = "Terrain Height Gradient List"
|
||||
layerspawner_component_name = "Terrain Layer Spawner"
|
||||
|
||||
gradient_value_path = "Configuration|Value"
|
||||
|
||||
def create_entity_at(entity_name, components_to_add, x, y, z):
|
||||
entity = hydra.Entity(entity_name)
|
||||
entity.create_entity(math.Vector3(x, y, z), components_to_add)
|
||||
|
||||
return entity
|
||||
|
||||
def on_terrain_changed(args):
|
||||
nonlocal terrain_changed_call_count
|
||||
|
||||
terrain_changed_call_count += 1
|
||||
|
||||
def set_component_path_val(entity, component, path, value):
|
||||
entity.get_set_test(component, path, value)
|
||||
|
||||
def set_gradients_check_height(main_entity, gradient_list, expected_height, test_results):
|
||||
nonlocal expected_terrain_changed_calls
|
||||
|
||||
test_tolerance = 0.01
|
||||
gradient_list_path = "Configuration|Gradient Entities"
|
||||
|
||||
set_component_path_val(main_entity, 1, gradient_list_path, gradient_list)
|
||||
|
||||
expected_terrain_changed_calls += 1
|
||||
|
||||
# Wait until the terrain data has been updated.
|
||||
helper.wait_for_condition(lambda: terrain_changed_call_count == expected_terrain_changed_calls, 2.0)
|
||||
|
||||
# Get the height at the origin.
|
||||
height = terrain.TerrainDataRequestBus(bus.Broadcast, "GetHeightFromFloats", 0.0, 0.0, 0)
|
||||
|
||||
Report.result(test_results, sys_math.isclose(height, expected_height, abs_tol=test_tolerance))
|
||||
|
||||
helper.init_idle()
|
||||
|
||||
# Open a level.
|
||||
helper.open_level("Physics", "Base")
|
||||
helper.wait_for_condition(lambda: general.get_current_level_name() == "Base", 2.0)
|
||||
|
||||
general.idle_wait_frames(1)
|
||||
|
||||
# Add a terrain world component
|
||||
world_component = hydra.add_level_component("Terrain World")
|
||||
|
||||
aabb_height = 1024.0
|
||||
box_dimensions = math.Vector3(1.0, 1.0, aabb_height);
|
||||
|
||||
# Create a main entity with a LayerSpawner, AAbb and HeightGradientList.
|
||||
main_entity = create_entity_at("entity2", [layerspawner_component_name, gradientlist_component_name, aabb_component_name], 0.0, 0.0, aabb_height/2.0)
|
||||
|
||||
# Create three gradient entities.
|
||||
gradient_entity1 = create_entity_at("Constant Gradient1", ["Constant Gradient"], 0.0, 0.0, 0.0);
|
||||
gradient_entity2 = create_entity_at("Constant Gradient2", ["Constant Gradient"], 0.0, 0.0, 0.0);
|
||||
gradient_entity3 = create_entity_at("Constant Gradient3", ["Constant Gradient"], 0.0, 0.0, 0.0);
|
||||
|
||||
# Give everything a chance to finish initializing.
|
||||
general.idle_wait_frames(1)
|
||||
|
||||
# Set the gradients to different values.
|
||||
gradient_values = [0.5, 0.8, 0.3]
|
||||
set_component_path_val(gradient_entity1, 0, gradient_value_path, gradient_values[0])
|
||||
set_component_path_val(gradient_entity2, 0, gradient_value_path, gradient_values[1])
|
||||
set_component_path_val(gradient_entity3, 0, gradient_value_path, gradient_values[2])
|
||||
|
||||
# Give the TerrainSystem time to tick.
|
||||
general.idle_wait_frames(1)
|
||||
|
||||
# Set the dimensions of the Aabb.
|
||||
set_component_path_val(main_entity, 2, "Axis Aligned Box Shape|Box Configuration|Dimensions", box_dimensions)
|
||||
|
||||
# Set up a handler to wait for notifications from the TerrainSystem.
|
||||
handler = azlmbr.terrain.TerrainDataNotificationBusHandler()
|
||||
handler.connect()
|
||||
handler.add_callback("OnTerrainDataChanged", on_terrain_changed)
|
||||
|
||||
# Add a gradient to GradientList, then check the height returned from the TerrainSystem is correct.
|
||||
set_gradients_check_height(main_entity, [gradient_entity1.id], aabb_height * gradient_values[0], HeightTests.single_gradient_height_correct)
|
||||
|
||||
# Add gradient2 and check height at the origin, this should have changed to match the second gradient value.
|
||||
set_gradients_check_height(main_entity, [gradient_entity1.id, gradient_entity2.id], aabb_height * gradient_values[1], HeightTests.double_gradient_height_correct)
|
||||
|
||||
# Add gradient3, the height should still be the second value, as that was the highest.
|
||||
set_gradients_check_height(main_entity, [gradient_entity1.id, gradient_entity2.id, gradient_entity3.id], aabb_height * gradient_values[1], HeightTests.triple_gradient_height_correct)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
from editor_python_test_tools.utils import Report
|
||||
Report.start_test(TerrainHeightGradientList_AddRemoveGradientWorks)
|
||||
@@ -27,3 +27,6 @@ class TestAutomation(EditorTestSuite):
|
||||
|
||||
class test_Terrain_SupportsPhysics(EditorSharedTest):
|
||||
from .EditorScripts import Terrain_SupportsPhysics as test_module
|
||||
|
||||
class test_TerrainHeightGradientList_AddRemoveGradientWorks(EditorSharedTest):
|
||||
from .EditorScripts import TerrainHeightGradientList_AddRemoveGradientWorks as test_module
|
||||
|
||||
+10
@@ -8,6 +8,8 @@ General Asset Processor Batch Tests
|
||||
"""
|
||||
|
||||
# Import builtin libraries
|
||||
from os import listdir
|
||||
|
||||
import pytest
|
||||
import logging
|
||||
import os
|
||||
@@ -724,3 +726,11 @@ class TestsAssetProcessorBatch_AllPlatforms(object):
|
||||
|
||||
assert error_line_found, "The error could not be found in the newest run of the AP Batch log."
|
||||
|
||||
@pytest.mark.assetpipeline
|
||||
def test_AssetProcessor_Log_On_Failure(self, asset_processor, ap_setup_fixture, workspace):
|
||||
asset_processor.prepare_test_environment(ap_setup_fixture["tests_dir"], "test_AP_Logs")
|
||||
result, output = asset_processor.batch_process(expect_failure=True, capture_output=True)
|
||||
assert result == False, f'AssetProcessorBatch should have failed because there is a bad asset, output was {output}'
|
||||
|
||||
jobLogs = listdir(workspace.paths.ap_job_logs() + "/test_AP_Logs")
|
||||
assert not len(jobLogs) == 0, 'No job logs where output during failure.'
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7c6b33c6137d6bd8c696f180c30a23089c95c1af398a630b4b13e080bec3254d
|
||||
size 18220
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
#include "EditorPreferencesPageViewportManipulator.h"
|
||||
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
|
||||
// Editor
|
||||
#include "EditorViewportSettings.h"
|
||||
#include "Settings.h"
|
||||
@@ -19,7 +21,17 @@ void CEditorPreferencesPage_ViewportManipulator::Reflect(AZ::SerializeContext& s
|
||||
serialize.Class<Manipulators>()
|
||||
->Version(1)
|
||||
->Field("LineBoundWidth", &Manipulators::m_manipulatorLineBoundWidth)
|
||||
->Field("CircleBoundWidth", &Manipulators::m_manipulatorCircleBoundWidth);
|
||||
->Field("CircleBoundWidth", &Manipulators::m_manipulatorCircleBoundWidth)
|
||||
->Field("LinearManipulatorAxisLength", &Manipulators::m_linearManipulatorAxisLength)
|
||||
->Field("PlanarManipulatorAxisLength", &Manipulators::m_planarManipulatorAxisLength)
|
||||
->Field("SurfaceManipulatorRadius", &Manipulators::m_surfaceManipulatorRadius)
|
||||
->Field("SurfaceManipulatorOpacity", &Manipulators::m_surfaceManipulatorOpacity)
|
||||
->Field("LinearManipulatorConeLength", &Manipulators::m_linearManipulatorConeLength)
|
||||
->Field("LinearManipulatorConeRadius", &Manipulators::m_linearManipulatorConeRadius)
|
||||
->Field("ScaleManipulatorBoxHalfExtent", &Manipulators::m_scaleManipulatorBoxHalfExtent)
|
||||
->Field("RotationManipulatorRadius", &Manipulators::m_rotationManipulatorRadius)
|
||||
->Field("ManipulatorViewBaseScale", &Manipulators::m_manipulatorViewBaseScale)
|
||||
->Field("FlipManipulatorAxesTowardsView", &Manipulators::m_flipManipulatorAxesTowardsView);
|
||||
|
||||
serialize.Class<CEditorPreferencesPage_ViewportManipulator>()->Version(2)->Field(
|
||||
"Manipulators", &CEditorPreferencesPage_ViewportManipulator::m_manipulators);
|
||||
@@ -36,7 +48,55 @@ void CEditorPreferencesPage_ViewportManipulator::Reflect(AZ::SerializeContext& s
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_manipulatorCircleBoundWidth, "Circle Bound Width",
|
||||
"Manipulator Circle Bound Width")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.001f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 2.0f);
|
||||
->Attribute(AZ::Edit::Attributes::Max, 2.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_linearManipulatorAxisLength, "Linear Manipulator Axis Length",
|
||||
"Length of default Linear Manipulator (for Translation and Scale Manipulators)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.1f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 5.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_planarManipulatorAxisLength, "Planar Manipulator Axis Length",
|
||||
"Length of default Planar Manipulator (for Translation Manipulators)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.1f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 5.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_surfaceManipulatorRadius, "Surface Manipulator Radius",
|
||||
"Radius of default Surface Manipulator (for Translation Manipulators)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.05f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 1.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_surfaceManipulatorOpacity, "Surface Manipulator Opacity",
|
||||
"Opacity of default Surface Manipulator (for Translation Manipulators)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.01f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 1.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_linearManipulatorConeLength, "Linear Manipulator Cone Length",
|
||||
"Length of cone for default Linear Manipulator (for Translation Manipulators)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.05f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 1.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_linearManipulatorConeRadius, "Linear Manipulator Cone Radius",
|
||||
"Radius of cone for default Linear Manipulator (for Translation Manipulators)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.05f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 0.5f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_scaleManipulatorBoxHalfExtent, "Scale Manipulator Box Half Extent",
|
||||
"Half extent of box for default Scale Manipulator")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.05f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 1.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_rotationManipulatorRadius, "Rotation Manipulator Radius",
|
||||
"Radius of default Angular Manipulators (for Rotation Manipulators)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.5f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 5.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::SpinBox, &Manipulators::m_manipulatorViewBaseScale, "Manipulator View Base Scale",
|
||||
"The base scale to apply to all Manipulator Views (default is 1.0)")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0.5f)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 2.0f)
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::CheckBox, &Manipulators::m_flipManipulatorAxesTowardsView, "Flip Manipulator Axes Towards View",
|
||||
"Determines whether Planar and Linear Manipulators should switch to face the view (camera) in the Editor");
|
||||
|
||||
editContext
|
||||
->Class<CEditorPreferencesPage_ViewportManipulator>("Manipulator Viewport Preferences", "Manipulator Viewport Preferences")
|
||||
@@ -82,10 +142,32 @@ void CEditorPreferencesPage_ViewportManipulator::OnApply()
|
||||
{
|
||||
SandboxEditor::SetManipulatorLineBoundWidth(m_manipulators.m_manipulatorLineBoundWidth);
|
||||
SandboxEditor::SetManipulatorCircleBoundWidth(m_manipulators.m_manipulatorCircleBoundWidth);
|
||||
|
||||
AzToolsFramework::SetLinearManipulatorAxisLength(m_manipulators.m_linearManipulatorAxisLength);
|
||||
AzToolsFramework::SetPlanarManipulatorAxisLength(m_manipulators.m_planarManipulatorAxisLength);
|
||||
AzToolsFramework::SetSurfaceManipulatorRadius(m_manipulators.m_surfaceManipulatorRadius);
|
||||
AzToolsFramework::SetSurfaceManipulatorOpacity(m_manipulators.m_surfaceManipulatorOpacity);
|
||||
AzToolsFramework::SetLinearManipulatorConeLength(m_manipulators.m_linearManipulatorConeLength);
|
||||
AzToolsFramework::SetLinearManipulatorConeRadius(m_manipulators.m_linearManipulatorConeRadius);
|
||||
AzToolsFramework::SetScaleManipulatorBoxHalfExtent(m_manipulators.m_scaleManipulatorBoxHalfExtent);
|
||||
AzToolsFramework::SetRotationManipulatorRadius(m_manipulators.m_rotationManipulatorRadius);
|
||||
AzToolsFramework::SetFlipManipulatorAxesTowardsView(m_manipulators.m_flipManipulatorAxesTowardsView);
|
||||
AzToolsFramework::SetManipulatorViewBaseScale(m_manipulators.m_manipulatorViewBaseScale);
|
||||
}
|
||||
|
||||
void CEditorPreferencesPage_ViewportManipulator::InitializeSettings()
|
||||
{
|
||||
m_manipulators.m_manipulatorLineBoundWidth = SandboxEditor::ManipulatorLineBoundWidth();
|
||||
m_manipulators.m_manipulatorCircleBoundWidth = SandboxEditor::ManipulatorCircleBoundWidth();
|
||||
|
||||
m_manipulators.m_linearManipulatorAxisLength = AzToolsFramework::LinearManipulatorAxisLength();
|
||||
m_manipulators.m_planarManipulatorAxisLength = AzToolsFramework::PlanarManipulatorAxisLength();
|
||||
m_manipulators.m_surfaceManipulatorRadius = AzToolsFramework::SurfaceManipulatorRadius();
|
||||
m_manipulators.m_surfaceManipulatorOpacity = AzToolsFramework::SurfaceManipulatorOpacity();
|
||||
m_manipulators.m_linearManipulatorConeLength = AzToolsFramework::LinearManipulatorConeLength();
|
||||
m_manipulators.m_linearManipulatorConeRadius = AzToolsFramework::LinearManipulatorConeRadius();
|
||||
m_manipulators.m_scaleManipulatorBoxHalfExtent = AzToolsFramework::ScaleManipulatorBoxHalfExtent();
|
||||
m_manipulators.m_rotationManipulatorRadius = AzToolsFramework::RotationManipulatorRadius();
|
||||
m_manipulators.m_flipManipulatorAxesTowardsView = AzToolsFramework::FlipManipulatorAxesTowardsView();
|
||||
m_manipulators.m_manipulatorViewBaseScale = AzToolsFramework::ManipulatorViewBaseScale();
|
||||
}
|
||||
|
||||
@@ -41,6 +41,16 @@ private:
|
||||
|
||||
float m_manipulatorLineBoundWidth = 0.0f;
|
||||
float m_manipulatorCircleBoundWidth = 0.0f;
|
||||
float m_linearManipulatorAxisLength = 0.0f;
|
||||
float m_planarManipulatorAxisLength = 0.0f;
|
||||
float m_surfaceManipulatorRadius = 0.0f;
|
||||
float m_surfaceManipulatorOpacity = 0.0f;
|
||||
float m_linearManipulatorConeLength = 0.0f;
|
||||
float m_linearManipulatorConeRadius = 0.0f;
|
||||
float m_scaleManipulatorBoxHalfExtent = 0.0f;
|
||||
float m_rotationManipulatorRadius = 0.0f;
|
||||
float m_manipulatorViewBaseScale = 0.0f;
|
||||
bool m_flipManipulatorAxesTowardsView = false;
|
||||
};
|
||||
|
||||
Manipulators m_manipulators;
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <AzCore/Settings/SettingsRegistry.h>
|
||||
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
|
||||
#include <AzCore/std/string/string_view.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
|
||||
namespace SandboxEditor
|
||||
{
|
||||
@@ -57,31 +58,6 @@ namespace SandboxEditor
|
||||
constexpr AZStd::string_view CameraDefaultStartingPositionY = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/y";
|
||||
constexpr AZStd::string_view CameraDefaultStartingPositionZ = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/z";
|
||||
|
||||
template<typename T>
|
||||
void SetRegistry(const AZStd::string_view setting, T&& value)
|
||||
{
|
||||
if (auto* registry = AZ::SettingsRegistry::Get())
|
||||
{
|
||||
registry->Set(setting, AZStd::forward<T>(value));
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
AZStd::remove_cvref_t<T> GetRegistry(const AZStd::string_view setting, T&& defaultValue)
|
||||
{
|
||||
AZStd::remove_cvref_t<T> value = AZStd::forward<T>(defaultValue);
|
||||
if (const auto* registry = AZ::SettingsRegistry::Get())
|
||||
{
|
||||
T potentialValue;
|
||||
if (registry->Get(potentialValue, setting))
|
||||
{
|
||||
value = AZStd::move(potentialValue);
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
struct EditorViewportSettingsCallbacksImpl : public EditorViewportSettingsCallbacks
|
||||
{
|
||||
EditorViewportSettingsCallbacksImpl()
|
||||
@@ -118,399 +94,409 @@ namespace SandboxEditor
|
||||
AZ::Vector3 CameraDefaultEditorPosition()
|
||||
{
|
||||
return AZ::Vector3(
|
||||
aznumeric_cast<float>(GetRegistry(CameraDefaultStartingPositionX, 0.0)),
|
||||
aznumeric_cast<float>(GetRegistry(CameraDefaultStartingPositionY, -10.0)),
|
||||
aznumeric_cast<float>(GetRegistry(CameraDefaultStartingPositionZ, 4.0)));
|
||||
aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingPositionX, 0.0)),
|
||||
aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingPositionY, -10.0)),
|
||||
aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingPositionZ, 4.0)));
|
||||
}
|
||||
|
||||
void SetCameraDefaultEditorPosition(const AZ::Vector3& defaultCameraPosition)
|
||||
{
|
||||
SetRegistry(CameraDefaultStartingPositionX, defaultCameraPosition.GetX());
|
||||
SetRegistry(CameraDefaultStartingPositionY, defaultCameraPosition.GetY());
|
||||
SetRegistry(CameraDefaultStartingPositionZ, defaultCameraPosition.GetZ());
|
||||
AzToolsFramework::SetRegistry(CameraDefaultStartingPositionX, defaultCameraPosition.GetX());
|
||||
AzToolsFramework::SetRegistry(CameraDefaultStartingPositionY, defaultCameraPosition.GetY());
|
||||
AzToolsFramework::SetRegistry(CameraDefaultStartingPositionZ, defaultCameraPosition.GetZ());
|
||||
}
|
||||
|
||||
AZ::u64 MaxItemsShownInAssetBrowserSearch()
|
||||
{
|
||||
return GetRegistry(AssetBrowserMaxItemsShownInSearchSetting, aznumeric_cast<AZ::u64>(50));
|
||||
return AzToolsFramework::GetRegistry(AssetBrowserMaxItemsShownInSearchSetting, aznumeric_cast<AZ::u64>(50));
|
||||
}
|
||||
|
||||
void SetMaxItemsShownInAssetBrowserSearch(const AZ::u64 numberOfItemsShown)
|
||||
{
|
||||
SetRegistry(AssetBrowserMaxItemsShownInSearchSetting, numberOfItemsShown);
|
||||
AzToolsFramework::SetRegistry(AssetBrowserMaxItemsShownInSearchSetting, numberOfItemsShown);
|
||||
}
|
||||
|
||||
bool GridSnappingEnabled()
|
||||
{
|
||||
return GetRegistry(GridSnappingSetting, false);
|
||||
return AzToolsFramework::GetRegistry(GridSnappingSetting, false);
|
||||
}
|
||||
|
||||
void SetGridSnapping(const bool enabled)
|
||||
{
|
||||
SetRegistry(GridSnappingSetting, enabled);
|
||||
AzToolsFramework::SetRegistry(GridSnappingSetting, enabled);
|
||||
}
|
||||
|
||||
float GridSnappingSize()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(GridSizeSetting, 0.1));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(GridSizeSetting, 0.1));
|
||||
}
|
||||
|
||||
void SetGridSnappingSize(const float size)
|
||||
{
|
||||
SetRegistry(GridSizeSetting, size);
|
||||
AzToolsFramework::SetRegistry(GridSizeSetting, size);
|
||||
}
|
||||
|
||||
bool AngleSnappingEnabled()
|
||||
{
|
||||
return GetRegistry(AngleSnappingSetting, false);
|
||||
return AzToolsFramework::GetRegistry(AngleSnappingSetting, false);
|
||||
}
|
||||
|
||||
void SetAngleSnapping(const bool enabled)
|
||||
{
|
||||
SetRegistry(AngleSnappingSetting, enabled);
|
||||
AzToolsFramework::SetRegistry(AngleSnappingSetting, enabled);
|
||||
}
|
||||
|
||||
float AngleSnappingSize()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(AngleSizeSetting, 5.0));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(AngleSizeSetting, 5.0));
|
||||
}
|
||||
|
||||
void SetAngleSnappingSize(const float size)
|
||||
{
|
||||
SetRegistry(AngleSizeSetting, size);
|
||||
AzToolsFramework::SetRegistry(AngleSizeSetting, size);
|
||||
}
|
||||
|
||||
bool ShowingGrid()
|
||||
{
|
||||
return GetRegistry(ShowGridSetting, false);
|
||||
return AzToolsFramework::GetRegistry(ShowGridSetting, false);
|
||||
}
|
||||
|
||||
void SetShowingGrid(const bool showing)
|
||||
{
|
||||
SetRegistry(ShowGridSetting, showing);
|
||||
AzToolsFramework::SetRegistry(ShowGridSetting, showing);
|
||||
}
|
||||
|
||||
bool StickySelectEnabled()
|
||||
{
|
||||
return GetRegistry(StickySelectSetting, false);
|
||||
return AzToolsFramework::GetRegistry(StickySelectSetting, false);
|
||||
}
|
||||
|
||||
void SetStickySelectEnabled(const bool enabled)
|
||||
{
|
||||
SetRegistry(StickySelectSetting, enabled);
|
||||
AzToolsFramework::SetRegistry(StickySelectSetting, enabled);
|
||||
}
|
||||
|
||||
float ManipulatorLineBoundWidth()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(ManipulatorLineBoundWidthSetting, 0.1));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(ManipulatorLineBoundWidthSetting, 0.1));
|
||||
}
|
||||
|
||||
void SetManipulatorLineBoundWidth(const float lineBoundWidth)
|
||||
{
|
||||
SetRegistry(ManipulatorLineBoundWidthSetting, lineBoundWidth);
|
||||
AzToolsFramework::SetRegistry(ManipulatorLineBoundWidthSetting, lineBoundWidth);
|
||||
}
|
||||
|
||||
float ManipulatorCircleBoundWidth()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(ManipulatorCircleBoundWidthSetting, 0.1));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(ManipulatorCircleBoundWidthSetting, 0.1));
|
||||
}
|
||||
|
||||
void SetManipulatorCircleBoundWidth(const float circleBoundWidth)
|
||||
{
|
||||
SetRegistry(ManipulatorCircleBoundWidthSetting, circleBoundWidth);
|
||||
AzToolsFramework::SetRegistry(ManipulatorCircleBoundWidthSetting, circleBoundWidth);
|
||||
}
|
||||
|
||||
float CameraTranslateSpeed()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraTranslateSpeedSetting, 10.0));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraTranslateSpeedSetting, 10.0));
|
||||
}
|
||||
|
||||
void SetCameraTranslateSpeed(const float speed)
|
||||
{
|
||||
SetRegistry(CameraTranslateSpeedSetting, speed);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateSpeedSetting, speed);
|
||||
}
|
||||
|
||||
float CameraBoostMultiplier()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraBoostMultiplierSetting, 3.0));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraBoostMultiplierSetting, 3.0));
|
||||
}
|
||||
|
||||
void SetCameraBoostMultiplier(const float multiplier)
|
||||
{
|
||||
SetRegistry(CameraBoostMultiplierSetting, multiplier);
|
||||
AzToolsFramework::SetRegistry(CameraBoostMultiplierSetting, multiplier);
|
||||
}
|
||||
|
||||
float CameraRotateSpeed()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraRotateSpeedSetting, 0.005));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraRotateSpeedSetting, 0.005));
|
||||
}
|
||||
|
||||
void SetCameraRotateSpeed(const float speed)
|
||||
{
|
||||
SetRegistry(CameraRotateSpeedSetting, speed);
|
||||
AzToolsFramework::SetRegistry(CameraRotateSpeedSetting, speed);
|
||||
}
|
||||
|
||||
float CameraScrollSpeed()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraScrollSpeedSetting, 0.02));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraScrollSpeedSetting, 0.02));
|
||||
}
|
||||
|
||||
void SetCameraScrollSpeed(const float speed)
|
||||
{
|
||||
SetRegistry(CameraScrollSpeedSetting, speed);
|
||||
AzToolsFramework::SetRegistry(CameraScrollSpeedSetting, speed);
|
||||
}
|
||||
|
||||
float CameraDollyMotionSpeed()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraDollyMotionSpeedSetting, 0.01));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDollyMotionSpeedSetting, 0.01));
|
||||
}
|
||||
|
||||
void SetCameraDollyMotionSpeed(const float speed)
|
||||
{
|
||||
SetRegistry(CameraDollyMotionSpeedSetting, speed);
|
||||
AzToolsFramework::SetRegistry(CameraDollyMotionSpeedSetting, speed);
|
||||
}
|
||||
|
||||
bool CameraOrbitYawRotationInverted()
|
||||
{
|
||||
return GetRegistry(CameraOrbitYawRotationInvertedSetting, false);
|
||||
return AzToolsFramework::GetRegistry(CameraOrbitYawRotationInvertedSetting, false);
|
||||
}
|
||||
|
||||
void SetCameraOrbitYawRotationInverted(const bool inverted)
|
||||
{
|
||||
SetRegistry(CameraOrbitYawRotationInvertedSetting, inverted);
|
||||
AzToolsFramework::SetRegistry(CameraOrbitYawRotationInvertedSetting, inverted);
|
||||
}
|
||||
|
||||
bool CameraPanInvertedX()
|
||||
{
|
||||
return GetRegistry(CameraPanInvertedXSetting, true);
|
||||
return AzToolsFramework::GetRegistry(CameraPanInvertedXSetting, true);
|
||||
}
|
||||
|
||||
void SetCameraPanInvertedX(const bool inverted)
|
||||
{
|
||||
SetRegistry(CameraPanInvertedXSetting, inverted);
|
||||
AzToolsFramework::SetRegistry(CameraPanInvertedXSetting, inverted);
|
||||
}
|
||||
|
||||
bool CameraPanInvertedY()
|
||||
{
|
||||
return GetRegistry(CameraPanInvertedYSetting, true);
|
||||
return AzToolsFramework::GetRegistry(CameraPanInvertedYSetting, true);
|
||||
}
|
||||
|
||||
void SetCameraPanInvertedY(const bool inverted)
|
||||
{
|
||||
SetRegistry(CameraPanInvertedYSetting, inverted);
|
||||
AzToolsFramework::SetRegistry(CameraPanInvertedYSetting, inverted);
|
||||
}
|
||||
|
||||
float CameraPanSpeed()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraPanSpeedSetting, 0.01));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraPanSpeedSetting, 0.01));
|
||||
}
|
||||
|
||||
void SetCameraPanSpeed(float speed)
|
||||
{
|
||||
SetRegistry(CameraPanSpeedSetting, speed);
|
||||
AzToolsFramework::SetRegistry(CameraPanSpeedSetting, speed);
|
||||
}
|
||||
|
||||
float CameraRotateSmoothness()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraRotateSmoothnessSetting, 5.0));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraRotateSmoothnessSetting, 5.0));
|
||||
}
|
||||
|
||||
void SetCameraRotateSmoothness(const float smoothness)
|
||||
{
|
||||
SetRegistry(CameraRotateSmoothnessSetting, smoothness);
|
||||
AzToolsFramework::SetRegistry(CameraRotateSmoothnessSetting, smoothness);
|
||||
}
|
||||
|
||||
float CameraTranslateSmoothness()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraTranslateSmoothnessSetting, 5.0));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraTranslateSmoothnessSetting, 5.0));
|
||||
}
|
||||
|
||||
void SetCameraTranslateSmoothness(const float smoothness)
|
||||
{
|
||||
SetRegistry(CameraTranslateSmoothnessSetting, smoothness);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateSmoothnessSetting, smoothness);
|
||||
}
|
||||
|
||||
bool CameraRotateSmoothingEnabled()
|
||||
{
|
||||
return GetRegistry(CameraRotateSmoothingSetting, true);
|
||||
return AzToolsFramework::GetRegistry(CameraRotateSmoothingSetting, true);
|
||||
}
|
||||
|
||||
void SetCameraRotateSmoothingEnabled(const bool enabled)
|
||||
{
|
||||
SetRegistry(CameraRotateSmoothingSetting, enabled);
|
||||
AzToolsFramework::SetRegistry(CameraRotateSmoothingSetting, enabled);
|
||||
}
|
||||
|
||||
bool CameraTranslateSmoothingEnabled()
|
||||
{
|
||||
return GetRegistry(CameraTranslateSmoothingSetting, true);
|
||||
return AzToolsFramework::GetRegistry(CameraTranslateSmoothingSetting, true);
|
||||
}
|
||||
|
||||
void SetCameraTranslateSmoothingEnabled(const bool enabled)
|
||||
{
|
||||
SetRegistry(CameraTranslateSmoothingSetting, enabled);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateSmoothingSetting, enabled);
|
||||
}
|
||||
|
||||
bool CameraCaptureCursorForLook()
|
||||
{
|
||||
return GetRegistry(CameraCaptureCursorLookSetting, true);
|
||||
return AzToolsFramework::GetRegistry(CameraCaptureCursorLookSetting, true);
|
||||
}
|
||||
|
||||
void SetCameraCaptureCursorForLook(const bool capture)
|
||||
{
|
||||
SetRegistry(CameraCaptureCursorLookSetting, capture);
|
||||
AzToolsFramework::SetRegistry(CameraCaptureCursorLookSetting, capture);
|
||||
}
|
||||
|
||||
float CameraDefaultOrbitDistance()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(CameraDefaultOrbitDistanceSetting, 20.0));
|
||||
return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultOrbitDistanceSetting, 20.0));
|
||||
}
|
||||
|
||||
void SetCameraDefaultOrbitDistance(const float distance)
|
||||
{
|
||||
SetRegistry(CameraDefaultOrbitDistanceSetting, distance);
|
||||
AzToolsFramework::SetRegistry(CameraDefaultOrbitDistanceSetting, distance);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraTranslateForwardChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(
|
||||
GetRegistry(CameraTranslateForwardIdSetting, AZStd::string("keyboard_key_alphanumeric_W")).c_str());
|
||||
AzToolsFramework::GetRegistry(CameraTranslateForwardIdSetting, AZStd::string("keyboard_key_alphanumeric_W")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraTranslateForwardChannelId(AZStd::string_view cameraTranslateForwardId)
|
||||
{
|
||||
SetRegistry(CameraTranslateForwardIdSetting, cameraTranslateForwardId);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateForwardIdSetting, cameraTranslateForwardId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraTranslateBackwardChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(
|
||||
GetRegistry(CameraTranslateBackwardIdSetting, AZStd::string("keyboard_key_alphanumeric_S")).c_str());
|
||||
AzToolsFramework::GetRegistry(CameraTranslateBackwardIdSetting, AZStd::string("keyboard_key_alphanumeric_S")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraTranslateBackwardChannelId(AZStd::string_view cameraTranslateBackwardId)
|
||||
{
|
||||
SetRegistry(CameraTranslateBackwardIdSetting, cameraTranslateBackwardId);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateBackwardIdSetting, cameraTranslateBackwardId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraTranslateLeftChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraTranslateLeftIdSetting, AZStd::string("keyboard_key_alphanumeric_A")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraTranslateLeftIdSetting, AZStd::string("keyboard_key_alphanumeric_A")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraTranslateLeftChannelId(AZStd::string_view cameraTranslateLeftId)
|
||||
{
|
||||
SetRegistry(CameraTranslateLeftIdSetting, cameraTranslateLeftId);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateLeftIdSetting, cameraTranslateLeftId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraTranslateRightChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(
|
||||
GetRegistry(CameraTranslateRightIdSetting, AZStd::string("keyboard_key_alphanumeric_D")).c_str());
|
||||
AzToolsFramework::GetRegistry(CameraTranslateRightIdSetting, AZStd::string("keyboard_key_alphanumeric_D")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraTranslateRightChannelId(AZStd::string_view cameraTranslateRightId)
|
||||
{
|
||||
SetRegistry(CameraTranslateRightIdSetting, cameraTranslateRightId);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateRightIdSetting, cameraTranslateRightId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraTranslateUpChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraTranslateUpIdSetting, AZStd::string("keyboard_key_alphanumeric_E")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraTranslateUpIdSetting, AZStd::string("keyboard_key_alphanumeric_E")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraTranslateUpChannelId(AZStd::string_view cameraTranslateUpId)
|
||||
{
|
||||
SetRegistry(CameraTranslateUpIdSetting, cameraTranslateUpId);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateUpIdSetting, cameraTranslateUpId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraTranslateDownChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraTranslateDownIdSetting, AZStd::string("keyboard_key_alphanumeric_Q")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraTranslateDownIdSetting, AZStd::string("keyboard_key_alphanumeric_Q")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraTranslateDownChannelId(AZStd::string_view cameraTranslateDownId)
|
||||
{
|
||||
SetRegistry(CameraTranslateDownIdSetting, cameraTranslateDownId);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateDownIdSetting, cameraTranslateDownId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraTranslateBoostChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(
|
||||
GetRegistry(CameraTranslateBoostIdSetting, AZStd::string("keyboard_key_modifier_shift_l")).c_str());
|
||||
AzToolsFramework::GetRegistry(CameraTranslateBoostIdSetting, AZStd::string("keyboard_key_modifier_shift_l")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraTranslateBoostChannelId(AZStd::string_view cameraTranslateBoostId)
|
||||
{
|
||||
SetRegistry(CameraTranslateBoostIdSetting, cameraTranslateBoostId);
|
||||
AzToolsFramework::SetRegistry(CameraTranslateBoostIdSetting, cameraTranslateBoostId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraOrbitChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraOrbitIdSetting, AZStd::string("keyboard_key_modifier_alt_l")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraOrbitIdSetting, AZStd::string("keyboard_key_modifier_alt_l")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraOrbitChannelId(AZStd::string_view cameraOrbitId)
|
||||
{
|
||||
SetRegistry(CameraOrbitIdSetting, cameraOrbitId);
|
||||
AzToolsFramework::SetRegistry(CameraOrbitIdSetting, cameraOrbitId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraFreeLookChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraFreeLookIdSetting, AZStd::string("mouse_button_right")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraFreeLookIdSetting, AZStd::string("mouse_button_right")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraFreeLookChannelId(AZStd::string_view cameraFreeLookId)
|
||||
{
|
||||
SetRegistry(CameraFreeLookIdSetting, cameraFreeLookId);
|
||||
AzToolsFramework::SetRegistry(CameraFreeLookIdSetting, cameraFreeLookId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraFreePanChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraFreePanIdSetting, AZStd::string("mouse_button_middle")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraFreePanIdSetting, AZStd::string("mouse_button_middle")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraFreePanChannelId(AZStd::string_view cameraFreePanId)
|
||||
{
|
||||
SetRegistry(CameraFreePanIdSetting, cameraFreePanId);
|
||||
AzToolsFramework::SetRegistry(CameraFreePanIdSetting, cameraFreePanId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraOrbitLookChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraOrbitLookIdSetting, AZStd::string("mouse_button_left")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraOrbitLookIdSetting, AZStd::string("mouse_button_left")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraOrbitLookChannelId(AZStd::string_view cameraOrbitLookId)
|
||||
{
|
||||
SetRegistry(CameraOrbitLookIdSetting, cameraOrbitLookId);
|
||||
AzToolsFramework::SetRegistry(CameraOrbitLookIdSetting, cameraOrbitLookId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraOrbitDollyChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraOrbitDollyIdSetting, AZStd::string("mouse_button_right")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraOrbitDollyIdSetting, AZStd::string("mouse_button_right")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraOrbitDollyChannelId(AZStd::string_view cameraOrbitDollyId)
|
||||
{
|
||||
SetRegistry(CameraOrbitDollyIdSetting, cameraOrbitDollyId);
|
||||
AzToolsFramework::SetRegistry(CameraOrbitDollyIdSetting, cameraOrbitDollyId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraOrbitPanChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraOrbitPanIdSetting, AZStd::string("mouse_button_middle")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraOrbitPanIdSetting, AZStd::string("mouse_button_middle")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraOrbitPanChannelId(AZStd::string_view cameraOrbitPanId)
|
||||
{
|
||||
SetRegistry(CameraOrbitPanIdSetting, cameraOrbitPanId);
|
||||
AzToolsFramework::SetRegistry(CameraOrbitPanIdSetting, cameraOrbitPanId);
|
||||
}
|
||||
|
||||
AzFramework::InputChannelId CameraFocusChannelId()
|
||||
{
|
||||
return AzFramework::InputChannelId(GetRegistry(CameraFocusIdSetting, AZStd::string("keyboard_key_alphanumeric_X")).c_str());
|
||||
return AzFramework::InputChannelId(
|
||||
AzToolsFramework::GetRegistry(CameraFocusIdSetting, AZStd::string("keyboard_key_alphanumeric_X")).c_str());
|
||||
}
|
||||
|
||||
void SetCameraFocusChannelId(AZStd::string_view cameraFocusId)
|
||||
{
|
||||
SetRegistry(CameraFocusIdSetting, cameraFocusId);
|
||||
AzToolsFramework::SetRegistry(CameraFocusIdSetting, cameraFocusId);
|
||||
}
|
||||
} // namespace SandboxEditor
|
||||
|
||||
@@ -479,9 +479,11 @@ namespace AZ
|
||||
|
||||
// Merge Command Line arguments
|
||||
constexpr bool executeRegDumpCommands = false;
|
||||
SettingsRegistryMergeUtils::MergeSettingsToRegistry_CommandLine(*m_settingsRegistry, m_commandLine, executeRegDumpCommands);
|
||||
|
||||
#if defined(AZ_DEBUG_BUILD) || defined(AZ_PROFILE_BUILD)
|
||||
// Skip over merging the User Registry in non-debug and profile configurations
|
||||
SettingsRegistryMergeUtils::MergeSettingsToRegistry_O3deUserRegistry(*m_settingsRegistry, AZ_TRAIT_OS_PLATFORM_CODENAME, {});
|
||||
#endif
|
||||
SettingsRegistryMergeUtils::MergeSettingsToRegistry_CommandLine(*m_settingsRegistry, m_commandLine, executeRegDumpCommands);
|
||||
SettingsRegistryMergeUtils::MergeSettingsToRegistry_AddRuntimeFilePaths(*m_settingsRegistry);
|
||||
|
||||
|
||||
@@ -12,13 +12,57 @@
|
||||
|
||||
namespace AzFramework::Terrain
|
||||
{
|
||||
// Create a handler that can be accessed from Python scripts to receive terrain change notifications.
|
||||
class TerrainDataNotificationHandler final
|
||||
: public AzFramework::Terrain::TerrainDataNotificationBus::Handler
|
||||
, public AZ::BehaviorEBusHandler
|
||||
{
|
||||
public:
|
||||
AZ_EBUS_BEHAVIOR_BINDER(
|
||||
TerrainDataNotificationHandler,
|
||||
"{A83EF103-295A-4653-8279-F30FBF3F9037}",
|
||||
AZ::SystemAllocator,
|
||||
OnTerrainDataCreateBegin,
|
||||
OnTerrainDataCreateEnd,
|
||||
OnTerrainDataDestroyBegin,
|
||||
OnTerrainDataDestroyEnd,
|
||||
OnTerrainDataChanged);
|
||||
|
||||
void OnTerrainDataCreateBegin() override
|
||||
{
|
||||
Call(FN_OnTerrainDataCreateBegin);
|
||||
}
|
||||
|
||||
void OnTerrainDataCreateEnd() override
|
||||
{
|
||||
Call(FN_OnTerrainDataCreateEnd);
|
||||
}
|
||||
|
||||
void OnTerrainDataDestroyBegin() override
|
||||
{
|
||||
Call(FN_OnTerrainDataDestroyBegin);
|
||||
}
|
||||
|
||||
void OnTerrainDataDestroyEnd() override
|
||||
{
|
||||
Call(FN_OnTerrainDataDestroyEnd);
|
||||
}
|
||||
|
||||
void OnTerrainDataChanged(
|
||||
const AZ::Aabb& dirtyRegion, AzFramework::Terrain::TerrainDataNotifications::TerrainDataChangedMask dataChangedMask) override
|
||||
{
|
||||
Call(FN_OnTerrainDataChanged, dirtyRegion, dataChangedMask);
|
||||
}
|
||||
};
|
||||
|
||||
void TerrainDataRequests::Reflect(AZ::ReflectContext* context)
|
||||
{
|
||||
if (AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
|
||||
{
|
||||
behaviorContext->EBus<AzFramework::Terrain::TerrainDataRequestBus>("TerrainDataRequestBus")
|
||||
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
|
||||
->Attribute(AZ::Script::Attributes::Category, "Terrain")
|
||||
->Event("GetHeight", &AzFramework::Terrain::TerrainDataRequestBus::Events::GetHeight)
|
||||
->Attribute(AZ::Script::Attributes::Module, "terrain")
|
||||
->Event("GetNormal", &AzFramework::Terrain::TerrainDataRequestBus::Events::GetNormal)
|
||||
->Event("GetMaxSurfaceWeight", &AzFramework::Terrain::TerrainDataRequestBus::Events::GetMaxSurfaceWeight)
|
||||
->Event("GetMaxSurfaceWeightFromVector2",
|
||||
@@ -34,8 +78,24 @@ namespace AzFramework::Terrain
|
||||
->Event("GetTerrainAabb", &AzFramework::Terrain::TerrainDataRequestBus::Events::GetTerrainAabb)
|
||||
->Event("GetTerrainHeightQueryResolution",
|
||||
&AzFramework::Terrain::TerrainDataRequestBus::Events::GetTerrainHeightQueryResolution)
|
||||
->Event("GetHeight", &AzFramework::Terrain::TerrainDataRequestBus::Events::GetHeightVal)
|
||||
->Event("GetHeightFromVector2", &AzFramework::Terrain::TerrainDataRequestBus::Events::GetHeightValFromVector2)
|
||||
->Event("GetHeightFromFloats", &AzFramework::Terrain::TerrainDataRequestBus::Events::GetHeightValFromFloats)
|
||||
;
|
||||
|
||||
behaviorContext->EBus<AzFramework::Terrain::TerrainDataNotificationBus>("TerrainDataNotificationBus")
|
||||
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
|
||||
->Attribute(AZ::Script::Attributes::Category, "Terrain")
|
||||
->Attribute(AZ::Script::Attributes::Module, "terrain")
|
||||
->Event("OnTerrainDataCreateBegin", &AzFramework::Terrain::TerrainDataNotifications::OnTerrainDataCreateBegin)
|
||||
->Event("OnTerrainDataCreateEnd", &AzFramework::Terrain::TerrainDataNotifications::OnTerrainDataCreateEnd)
|
||||
->Event("OnTerrainDataDestroyBegin", &AzFramework::Terrain::TerrainDataNotifications::OnTerrainDataDestroyBegin)
|
||||
->Event("OnTerrainDataDestroyEnd", &AzFramework::Terrain::TerrainDataNotifications::OnTerrainDataDestroyEnd)
|
||||
->Event("OnTerrainDataChanged", &AzFramework::Terrain::TerrainDataNotifications::OnTerrainDataChanged)
|
||||
->Handler<AzFramework::Terrain::TerrainDataNotificationHandler>()
|
||||
;
|
||||
}
|
||||
|
||||
//TerrainDataNotificationHandler::Reflect(context);
|
||||
}
|
||||
} // namespace AzFramework::Terrain
|
||||
|
||||
@@ -144,13 +144,31 @@ namespace AzFramework
|
||||
return result;
|
||||
}
|
||||
SurfaceData::SurfacePoint BehaviorContextGetSurfacePointFromVector2(
|
||||
const AZ::Vector2& inPosition,
|
||||
Sampler sampleFilter = Sampler::DEFAULT) const
|
||||
const AZ::Vector2& inPosition, Sampler sampleFilter = Sampler::DEFAULT) const
|
||||
{
|
||||
SurfaceData::SurfacePoint result;
|
||||
GetSurfacePointFromVector2(inPosition, result, sampleFilter);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Functions without the optional bool* parameter that can be used from Python tests.
|
||||
float GetHeightVal(AZ::Vector3 position, Sampler sampler = Sampler::BILINEAR) const
|
||||
{
|
||||
bool terrainExists;
|
||||
return GetHeight(position, sampler, &terrainExists);
|
||||
}
|
||||
|
||||
float GetHeightValFromVector2(AZ::Vector2 position, Sampler sampler = Sampler::BILINEAR) const
|
||||
{
|
||||
bool terrainExists;
|
||||
return GetHeightFromVector2(position, sampler, &terrainExists);
|
||||
}
|
||||
|
||||
float GetHeightValFromFloats(float x, float y, Sampler sampler = Sampler::BILINEAR) const
|
||||
{
|
||||
bool terrainExists;
|
||||
return GetHeightFromFloats(x, y, sampler, &terrainExists);
|
||||
}
|
||||
};
|
||||
using TerrainDataRequestBus = AZ::EBus<TerrainDataRequests>;
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
+3
-3
@@ -52,7 +52,7 @@ namespace AzToolsFramework
|
||||
|
||||
void ReadOnlyEntitySystemComponent::RefreshReadOnlyState(const EntityIdList& entityIds)
|
||||
{
|
||||
for (const AZ::EntityId entityId : entityIds)
|
||||
for (const AZ::EntityId& entityId : entityIds)
|
||||
{
|
||||
bool wasReadOnly = m_readOnlystates[entityId];
|
||||
QueryReadOnlyStateForEntity(entityId);
|
||||
@@ -67,10 +67,10 @@ namespace AzToolsFramework
|
||||
|
||||
void ReadOnlyEntitySystemComponent::RefreshReadOnlyStateForAllEntities()
|
||||
{
|
||||
for (auto elem : m_readOnlystates)
|
||||
for (auto& elem : m_readOnlystates)
|
||||
{
|
||||
AZ::EntityId entityId = elem.first;
|
||||
bool wasReadOnly = m_readOnlystates[entityId];
|
||||
bool wasReadOnly = elem.second;
|
||||
QueryReadOnlyStateForEntity(entityId);
|
||||
|
||||
if (bool isReadOnly = m_readOnlystates[entityId]; wasReadOnly != isReadOnly)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
AZ_CVAR(bool, cl_manipulatorDrawDebug, false, nullptr, AZ::ConsoleFunctorFlags::Null, "Enable debug drawing for Manipulators");
|
||||
AZ_CVAR(bool, ed_manipulatorDrawDebug, false, nullptr, AZ::ConsoleFunctorFlags::Null, "Enable debug drawing for Manipulators");
|
||||
|
||||
const AZ::Color BaseManipulator::s_defaultMouseOverColor = AZ::Color(1.0f, 1.0f, 0.0f, 1.0f); // yellow
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace AzFramework
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
AZ_CVAR_EXTERNED(bool, cl_manipulatorDrawDebug);
|
||||
AZ_CVAR_EXTERNED(bool, ed_manipulatorDrawDebug);
|
||||
|
||||
namespace UndoSystem
|
||||
{
|
||||
|
||||
@@ -207,7 +207,7 @@ namespace AzToolsFramework
|
||||
? AZ::Transform::CreateFromQuaternionAndTranslation(m_visualOrientationOverride, GetLocalPosition())
|
||||
: GetLocalTransform();
|
||||
|
||||
if (cl_manipulatorDrawDebug)
|
||||
if (ed_manipulatorDrawDebug)
|
||||
{
|
||||
if (PerformingAction())
|
||||
{
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <AzToolsFramework/Manipulators/PlanarManipulator.h>
|
||||
#include <AzToolsFramework/Manipulators/SplineSelectionManipulator.h>
|
||||
#include <AzToolsFramework/Maths/TransformUtils.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
#include <AzToolsFramework/ViewportSelection/EditorSelectionUtil.h>
|
||||
|
||||
AZ_CVAR(
|
||||
@@ -30,6 +31,13 @@ AZ_CVAR(
|
||||
nullptr,
|
||||
AZ::ConsoleFunctorFlags::Null,
|
||||
"Display additional debug drawing for manipulator bounds");
|
||||
AZ_CVAR(
|
||||
float,
|
||||
ed_planarManipulatorBoundScaleFactor,
|
||||
1.75f,
|
||||
nullptr,
|
||||
AZ::ConsoleFunctorFlags::Null,
|
||||
"The scale factor to apply to the planar manipulator bounds");
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
@@ -78,7 +86,8 @@ namespace AzToolsFramework
|
||||
{
|
||||
// check if we actually needed to flip the axis, if so, write to shouldCorrect
|
||||
// so we know and are able to draw it differently if we wish (e.g. hollow if flipped)
|
||||
const bool correcting = ShouldFlipCameraAxis(worldFromLocal, localPosition, axis, cameraState);
|
||||
const bool correcting =
|
||||
FlipManipulatorAxesTowardsView() && ShouldFlipCameraAxis(worldFromLocal, localPosition, axis, cameraState);
|
||||
|
||||
// the corrected axis, if no flip was required, output == input
|
||||
correctedAxis = correcting ? -axis : axis;
|
||||
@@ -325,7 +334,8 @@ namespace AzToolsFramework
|
||||
float ManipulatorView::ManipulatorViewScaleMultiplier(
|
||||
const AZ::Vector3& worldPosition, const AzFramework::CameraState& cameraState) const
|
||||
{
|
||||
return ScreenSizeFixed() ? CalculateScreenToWorldMultiplier(worldPosition, cameraState) : 1.0f;
|
||||
const float screenScale = ScreenSizeFixed() ? CalculateScreenToWorldMultiplier(worldPosition, cameraState) : 1.0f;
|
||||
return screenScale * ManipulatorViewBaseScale();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -342,47 +352,77 @@ namespace AzToolsFramework
|
||||
const AZ::Vector3 axis1 = m_axis1;
|
||||
const AZ::Vector3 axis2 = m_axis2;
|
||||
|
||||
CameraCorrectAxis(
|
||||
axis1, m_cameraCorrectedAxis1, managerState, mouseInteraction, manipulatorState.m_worldFromLocal,
|
||||
manipulatorState.m_localPosition, cameraState);
|
||||
CameraCorrectAxis(
|
||||
axis2, m_cameraCorrectedAxis2, managerState, mouseInteraction, manipulatorState.m_worldFromLocal,
|
||||
manipulatorState.m_localPosition, cameraState);
|
||||
// support partial application of CameraCorrectAxis to reduce redundant call site parameters
|
||||
auto cameraCorrectAxisPartialFn =
|
||||
[&manipulatorState, &managerState, &mouseInteraction, &cameraState](const AZ::Vector3& inAxis, AZ::Vector3& outAxis)
|
||||
{
|
||||
CameraCorrectAxis(
|
||||
inAxis, outAxis, managerState, mouseInteraction, manipulatorState.m_worldFromLocal, manipulatorState.m_localPosition,
|
||||
cameraState);
|
||||
};
|
||||
|
||||
const Picking::BoundShapeQuad quadBound = CalculateQuadBound(
|
||||
manipulatorState.m_localPosition, manipulatorState, m_cameraCorrectedAxis1, m_cameraCorrectedAxis2,
|
||||
m_size *
|
||||
ManipulatorViewScaleMultiplier(
|
||||
manipulatorState.m_worldFromLocal.TransformPoint(manipulatorState.m_localPosition), cameraState));
|
||||
cameraCorrectAxisPartialFn(axis1, m_cameraCorrectedAxis1);
|
||||
cameraCorrectAxisPartialFn(axis2, m_cameraCorrectedAxis2);
|
||||
cameraCorrectAxisPartialFn(axis1 * axis1.Dot(m_offset), m_cameraCorrectedOffsetAxis1);
|
||||
cameraCorrectAxisPartialFn(axis2 * axis2.Dot(m_offset), m_cameraCorrectedOffsetAxis2);
|
||||
|
||||
const AZ::Vector3 totalScale =
|
||||
manipulatorState.m_nonUniformScale * AZ::Vector3(manipulatorState.m_worldFromLocal.GetUniformScale());
|
||||
|
||||
const auto cameraCorrectedVisualOffset = (m_cameraCorrectedOffsetAxis1 + m_cameraCorrectedOffsetAxis2) * totalScale.GetReciprocal();
|
||||
const auto viewScale =
|
||||
ManipulatorViewScaleMultiplier(manipulatorState.m_worldFromLocal.TransformPoint(manipulatorState.m_localPosition), cameraState);
|
||||
const Picking::BoundShapeQuad quadBoundVisual = CalculateQuadBound(
|
||||
manipulatorState.m_localPosition + (cameraCorrectedVisualOffset * viewScale), manipulatorState, m_cameraCorrectedAxis1,
|
||||
m_cameraCorrectedAxis2, m_size * viewScale);
|
||||
|
||||
debugDisplay.SetLineWidth(defaultLineWidth(manipulatorState.m_mouseOver));
|
||||
|
||||
debugDisplay.SetColor(ViewColor(manipulatorState.m_mouseOver, m_axis1Color, m_mouseOverColor).GetAsVector4());
|
||||
debugDisplay.DrawLine(quadBound.m_corner4, quadBound.m_corner3);
|
||||
debugDisplay.DrawLine(quadBoundVisual.m_corner4, quadBoundVisual.m_corner3);
|
||||
debugDisplay.DrawLine(quadBoundVisual.m_corner1, quadBoundVisual.m_corner2);
|
||||
|
||||
debugDisplay.SetColor(ViewColor(manipulatorState.m_mouseOver, m_axis2Color, m_mouseOverColor).GetAsVector4());
|
||||
debugDisplay.DrawLine(quadBound.m_corner2, quadBound.m_corner3);
|
||||
debugDisplay.DrawLine(quadBoundVisual.m_corner2, quadBoundVisual.m_corner3);
|
||||
debugDisplay.DrawLine(quadBoundVisual.m_corner1, quadBoundVisual.m_corner4);
|
||||
|
||||
if (manipulatorState.m_mouseOver)
|
||||
{
|
||||
debugDisplay.SetColor(Vector3ToVector4(m_mouseOverColor.GetAsVector3(), 0.5f));
|
||||
|
||||
debugDisplay.CullOff();
|
||||
debugDisplay.DrawQuad(quadBound.m_corner1, quadBound.m_corner2, quadBound.m_corner3, quadBound.m_corner4);
|
||||
debugDisplay.DrawQuad(
|
||||
quadBoundVisual.m_corner1, quadBoundVisual.m_corner2, quadBoundVisual.m_corner3, quadBoundVisual.m_corner4);
|
||||
debugDisplay.CullOn();
|
||||
}
|
||||
|
||||
RefreshBoundInternal(managerId, manipulatorId, quadBound);
|
||||
// total size of bounds to use for mouse intersection
|
||||
const float hitSize = m_size * ed_planarManipulatorBoundScaleFactor;
|
||||
// size of edge bounds (the 'margin/border' outside the visual representation)
|
||||
const float edgeSize = (hitSize - m_size) * 0.5f;
|
||||
const AZ::Vector3 edgeOffset =
|
||||
((m_cameraCorrectedAxis1 * edgeSize + m_cameraCorrectedAxis2 * edgeSize) * totalScale.GetReciprocal());
|
||||
const auto cameraCorrectedHitOffset = cameraCorrectedVisualOffset - edgeOffset;
|
||||
const Picking::BoundShapeQuad quadBoundHit = CalculateQuadBound(
|
||||
manipulatorState.m_localPosition + (cameraCorrectedHitOffset * viewScale), manipulatorState, m_cameraCorrectedAxis1,
|
||||
m_cameraCorrectedAxis2, hitSize * viewScale);
|
||||
|
||||
if (ed_manipulatorDisplayBoundDebug)
|
||||
{
|
||||
debugDisplay.DrawQuad(quadBoundHit.m_corner1, quadBoundHit.m_corner2, quadBoundHit.m_corner3, quadBoundHit.m_corner4);
|
||||
}
|
||||
|
||||
RefreshBoundInternal(managerId, manipulatorId, quadBoundHit);
|
||||
}
|
||||
|
||||
void ManipulatorViewQuadBillboard::Draw(
|
||||
const ManipulatorManagerId managerId,
|
||||
const ManipulatorManagerState& /*managerState*/,
|
||||
[[maybe_unused]] const ManipulatorManagerState& managerState,
|
||||
const ManipulatorId manipulatorId,
|
||||
const ManipulatorState& manipulatorState,
|
||||
AzFramework::DebugDisplayRequests& debugDisplay,
|
||||
const AzFramework::CameraState& cameraState,
|
||||
const ViewportInteraction::MouseInteraction& /*mouseInteraction*/)
|
||||
[[maybe_unused]] const ViewportInteraction::MouseInteraction& mouseInteraction)
|
||||
{
|
||||
const Picking::BoundShapeQuad quadBound = CalculateQuadBoundBillboard(
|
||||
manipulatorState.m_localPosition, manipulatorState.m_worldFromLocal,
|
||||
@@ -442,7 +482,7 @@ namespace AzToolsFramework
|
||||
|
||||
void ManipulatorViewLineSelect::Draw(
|
||||
const ManipulatorManagerId managerId,
|
||||
const ManipulatorManagerState& /*managerState*/,
|
||||
[[maybe_unused]] const ManipulatorManagerState& managerState,
|
||||
const ManipulatorId manipulatorId,
|
||||
const ManipulatorState& manipulatorState,
|
||||
AzFramework::DebugDisplayRequests& debugDisplay,
|
||||
@@ -570,7 +610,7 @@ namespace AzToolsFramework
|
||||
|
||||
void ManipulatorViewSphere::Draw(
|
||||
const ManipulatorManagerId managerId,
|
||||
const ManipulatorManagerState& /*managerState*/,
|
||||
[[maybe_unused]] const ManipulatorManagerState& managerState,
|
||||
const ManipulatorId manipulatorId,
|
||||
const ManipulatorState& manipulatorState,
|
||||
AzFramework::DebugDisplayRequests& debugDisplay,
|
||||
@@ -599,12 +639,12 @@ namespace AzToolsFramework
|
||||
|
||||
void ManipulatorViewCircle::Draw(
|
||||
const ManipulatorManagerId managerId,
|
||||
const ManipulatorManagerState& /*managerState*/,
|
||||
[[maybe_unused]] const ManipulatorManagerState& managerState,
|
||||
const ManipulatorId manipulatorId,
|
||||
const ManipulatorState& manipulatorState,
|
||||
AzFramework::DebugDisplayRequests& debugDisplay,
|
||||
const AzFramework::CameraState& cameraState,
|
||||
const ViewportInteraction::MouseInteraction& /*mouseInteraction*/)
|
||||
[[maybe_unused]] const ViewportInteraction::MouseInteraction& mouseInteraction)
|
||||
{
|
||||
const float viewScale =
|
||||
ManipulatorViewScaleMultiplier(manipulatorState.m_worldFromLocal.TransformPoint(manipulatorState.m_localPosition), cameraState);
|
||||
@@ -665,7 +705,7 @@ namespace AzToolsFramework
|
||||
|
||||
void ManipulatorViewSplineSelect::Draw(
|
||||
const ManipulatorManagerId managerId,
|
||||
const ManipulatorManagerState& /*managerState*/,
|
||||
[[maybe_unused]] const ManipulatorManagerState& managerState,
|
||||
const ManipulatorId manipulatorId,
|
||||
const ManipulatorState& manipulatorState,
|
||||
AzFramework::DebugDisplayRequests& debugDisplay,
|
||||
@@ -698,12 +738,17 @@ namespace AzToolsFramework
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
AZStd::unique_ptr<ManipulatorViewQuad> CreateManipulatorViewQuad(
|
||||
const PlanarManipulator& planarManipulator, const AZ::Color& axis1Color, const AZ::Color& axis2Color, const float size)
|
||||
const PlanarManipulator& planarManipulator,
|
||||
const AZ::Color& axis1Color,
|
||||
const AZ::Color& axis2Color,
|
||||
const AZ::Vector3& offset,
|
||||
const float size)
|
||||
{
|
||||
AZStd::unique_ptr<ManipulatorViewQuad> viewQuad = AZStd::make_unique<ManipulatorViewQuad>();
|
||||
viewQuad->m_axis1 = planarManipulator.GetAxis1();
|
||||
viewQuad->m_axis2 = planarManipulator.GetAxis2();
|
||||
viewQuad->m_size = size;
|
||||
viewQuad->m_offset = offset;
|
||||
viewQuad->m_axis1Color = axis1Color;
|
||||
viewQuad->m_axis2Color = axis2Color;
|
||||
return viewQuad;
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace AzToolsFramework
|
||||
AZ_RTTI(ManipulatorView, "{7529E3E9-39B3-4D15-899A-FA13770113B2}")
|
||||
|
||||
ManipulatorView();
|
||||
ManipulatorView(bool screenSizeFixed);
|
||||
explicit ManipulatorView(bool screenSizeFixed);
|
||||
virtual ~ManipulatorView();
|
||||
ManipulatorView(ManipulatorView&&) = default;
|
||||
ManipulatorView& operator=(ManipulatorView&&) = default;
|
||||
@@ -117,13 +117,16 @@ namespace AzToolsFramework
|
||||
|
||||
AZ::Vector3 m_axis1 = AZ::Vector3(1.0f, 0.0f, 0.0f);
|
||||
AZ::Vector3 m_axis2 = AZ::Vector3(0.0f, 1.0f, 0.0f);
|
||||
AZ::Vector3 m_offset = AZ::Vector3::CreateZero();
|
||||
AZ::Color m_axis1Color = AZ::Color(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
AZ::Color m_axis2Color = AZ::Color(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
float m_size = 0.06f; //!< size to render and do mouse ray intersection tests against.
|
||||
|
||||
private:
|
||||
AZ::Vector3 m_cameraCorrectedAxis1;
|
||||
AZ::Vector3 m_cameraCorrectedAxis2;
|
||||
AZ::Vector3 m_cameraCorrectedAxis1; //!< First axis of quad (should be orthogonal to second axis).
|
||||
AZ::Vector3 m_cameraCorrectedAxis2; //!< Second axis of quad (should be orthogonal to first axis).
|
||||
AZ::Vector3 m_cameraCorrectedOffsetAxis1; //!< Offset along first axis (parallel with first axis).
|
||||
AZ::Vector3 m_cameraCorrectedOffsetAxis2; //!< Offset along second axis (parallel with second axis).
|
||||
};
|
||||
|
||||
//! A screen aligned quad, centered at the position of the manipulator, display filled.
|
||||
@@ -379,7 +382,11 @@ namespace AzToolsFramework
|
||||
// Helpers to create various manipulator views.
|
||||
|
||||
AZStd::unique_ptr<ManipulatorViewQuad> CreateManipulatorViewQuad(
|
||||
const PlanarManipulator& planarManipulator, const AZ::Color& axis1Color, const AZ::Color& axis2Color, float size);
|
||||
const PlanarManipulator& planarManipulator,
|
||||
const AZ::Color& axis1Color,
|
||||
const AZ::Color& axis2Color,
|
||||
const AZ::Vector3& offset,
|
||||
float size);
|
||||
|
||||
AZStd::unique_ptr<ManipulatorViewQuadBillboard> CreateManipulatorViewQuadBillboard(const AZ::Color& color, float size);
|
||||
|
||||
|
||||
+1
-1
@@ -132,7 +132,7 @@ namespace AzToolsFramework
|
||||
const AzFramework::CameraState& cameraState,
|
||||
const ViewportInteraction::MouseInteraction& mouseInteraction)
|
||||
{
|
||||
if (cl_manipulatorDrawDebug)
|
||||
if (ed_manipulatorDrawDebug)
|
||||
{
|
||||
const AZ::Transform combined = TransformUniformScale(GetSpace()) * GetLocalTransform();
|
||||
for (const auto& fixed : m_fixedAxes)
|
||||
|
||||
@@ -171,7 +171,7 @@ namespace AzToolsFramework
|
||||
const AzFramework::CameraState& cameraState,
|
||||
const ViewportInteraction::MouseInteraction& mouseInteraction)
|
||||
{
|
||||
if (cl_manipulatorDrawDebug)
|
||||
if (ed_manipulatorDrawDebug)
|
||||
{
|
||||
if (PerformingAction())
|
||||
{
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "ScaleManipulators.h"
|
||||
|
||||
#include <AzToolsFramework/Maths/TransformUtils.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
@@ -120,25 +121,25 @@ namespace AzToolsFramework
|
||||
void ScaleManipulators::ConfigureView(
|
||||
const float axisLength, const AZ::Color& axis1Color, const AZ::Color& axis2Color, const AZ::Color& axis3Color)
|
||||
{
|
||||
const float boxSize = 0.1f;
|
||||
const float boxHalfExtent = ScaleManipulatorBoxHalfExtent();
|
||||
const AZ::Color colors[] = { axis1Color, axis2Color, axis3Color };
|
||||
|
||||
for (size_t manipulatorIndex = 0; manipulatorIndex < m_axisScaleManipulators.size(); ++manipulatorIndex)
|
||||
{
|
||||
const auto lineLength = axisLength - boxSize;
|
||||
const auto lineLength = axisLength - (2.0f * boxHalfExtent);
|
||||
|
||||
ManipulatorViews views;
|
||||
views.emplace_back(
|
||||
CreateManipulatorViewLine(*m_axisScaleManipulators[manipulatorIndex], colors[manipulatorIndex], axisLength, m_lineBoundWidth));
|
||||
views.emplace_back(CreateManipulatorViewLine(
|
||||
*m_axisScaleManipulators[manipulatorIndex], colors[manipulatorIndex], axisLength, m_lineBoundWidth));
|
||||
views.emplace_back(CreateManipulatorViewBox(
|
||||
AZ::Transform::CreateIdentity(), colors[manipulatorIndex],
|
||||
m_axisScaleManipulators[manipulatorIndex]->GetAxis() * lineLength, AZ::Vector3(boxSize)));
|
||||
m_axisScaleManipulators[manipulatorIndex]->GetAxis() * (lineLength + boxHalfExtent), AZ::Vector3(boxHalfExtent)));
|
||||
m_axisScaleManipulators[manipulatorIndex]->SetViews(AZStd::move(views));
|
||||
}
|
||||
|
||||
ManipulatorViews views;
|
||||
views.emplace_back(CreateManipulatorViewBox(
|
||||
AZ::Transform::CreateIdentity(), AZ::Color::CreateOne(), AZ::Vector3::CreateZero(), AZ::Vector3(boxSize)));
|
||||
AZ::Transform::CreateIdentity(), AZ::Color::CreateOne(), AZ::Vector3::CreateZero(), AZ::Vector3(boxHalfExtent)));
|
||||
m_uniformScaleManipulator->SetViews(AZStd::move(views));
|
||||
}
|
||||
|
||||
|
||||
+23
-20
@@ -10,13 +10,10 @@
|
||||
|
||||
#include <AzCore/Math/VectorConversions.h>
|
||||
#include <AzToolsFramework/Manipulators/ManipulatorView.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
static const float SurfaceManipulatorTransparency = 0.75f;
|
||||
static const float LinearManipulatorAxisLength = 2.0f;
|
||||
static const float SurfaceManipulatorRadius = 0.1f;
|
||||
|
||||
static const AZ::Color LinearManipulatorXAxisColor = AZ::Color(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
static const AZ::Color LinearManipulatorYAxisColor = AZ::Color(0.0f, 1.0f, 0.0f, 1.0f);
|
||||
static const AZ::Color LinearManipulatorZAxisColor = AZ::Color(0.0f, 0.0f, 1.0f, 1.0f);
|
||||
@@ -240,18 +237,16 @@ namespace AzToolsFramework
|
||||
const AZ::Color& axis2Color,
|
||||
const AZ::Color& axis3Color /*= AZ::Color(0.0f, 0.0f, 1.0f, 0.5f)*/)
|
||||
{
|
||||
const float coneLength = 0.28f;
|
||||
const float coneRadius = 0.07f;
|
||||
|
||||
const AZ::Color axesColor[] = { axis1Color, axis2Color, axis3Color };
|
||||
|
||||
const auto configureLinearView = [lineBoundWidth = m_lineBoundWidth, coneLength, axisLength,
|
||||
coneRadius](LinearManipulator* linearManipulator, const AZ::Color& color)
|
||||
const auto configureLinearView =
|
||||
[lineBoundWidth = m_lineBoundWidth, coneLength = LinearManipulatorConeLength(), axisLength,
|
||||
coneRadius = LinearManipulatorConeRadius()](LinearManipulator* linearManipulator, const AZ::Color& color)
|
||||
{
|
||||
const auto lineLength = axisLength - coneLength;
|
||||
|
||||
ManipulatorViews views;
|
||||
views.emplace_back(CreateManipulatorViewLine(*linearManipulator, color, lineLength, lineBoundWidth));
|
||||
views.emplace_back(CreateManipulatorViewLine(*linearManipulator, color, axisLength, lineBoundWidth));
|
||||
views.emplace_back(
|
||||
CreateManipulatorViewCone(*linearManipulator, color, linearManipulator->GetAxis() * lineLength, coneLength, coneRadius));
|
||||
linearManipulator->SetViews(AZStd::move(views));
|
||||
@@ -264,17 +259,23 @@ namespace AzToolsFramework
|
||||
}
|
||||
|
||||
void TranslationManipulators::ConfigurePlanarView(
|
||||
const float planeSize,
|
||||
const AZ::Color& plane1Color,
|
||||
const AZ::Color& plane2Color /*= AZ::Color(0.0f, 1.0f, 0.0f, 0.5f)*/,
|
||||
const AZ::Color& plane3Color /*= AZ::Color(0.0f, 0.0f, 1.0f, 0.5f)*/)
|
||||
{
|
||||
const float planeSize = 0.6f;
|
||||
const AZ::Color planesColor[] = { plane1Color, plane2Color, plane3Color };
|
||||
|
||||
const float linearAxisLength = LinearManipulatorAxisLength();
|
||||
const float linearConeLength = LinearManipulatorConeLength();
|
||||
for (size_t manipulatorIndex = 0; manipulatorIndex < m_planarManipulators.size(); ++manipulatorIndex)
|
||||
{
|
||||
const auto& planarManipulator = *m_planarManipulators[manipulatorIndex];
|
||||
const AZStd::shared_ptr<ManipulatorViewQuad> manipulatorView = CreateManipulatorViewQuad(
|
||||
*m_planarManipulators[manipulatorIndex], planesColor[manipulatorIndex], planesColor[(manipulatorIndex + 1) % 3], planeSize);
|
||||
*m_planarManipulators[manipulatorIndex], planesColor[manipulatorIndex], planesColor[(manipulatorIndex + 1) % 3],
|
||||
(planarManipulator.GetAxis1() + planarManipulator.GetAxis2()) *
|
||||
(((linearAxisLength - linearConeLength) * 0.5f) - (planeSize * 0.5f)),
|
||||
planeSize);
|
||||
|
||||
m_planarManipulators[manipulatorIndex]->SetViews(ManipulatorViews{ manipulatorView });
|
||||
}
|
||||
@@ -286,12 +287,11 @@ namespace AzToolsFramework
|
||||
{
|
||||
m_surfaceManipulator->SetView(CreateManipulatorViewSphere(
|
||||
color, radius,
|
||||
[](const ViewportInteraction::MouseInteraction& /*mouseInteraction*/, bool mouseOver,
|
||||
[]([[maybe_unused]] const ViewportInteraction::MouseInteraction& mouseInteraction, bool mouseOver,
|
||||
const AZ::Color& defaultColor) -> AZ::Color
|
||||
{
|
||||
const AZ::Color color[2] = {
|
||||
defaultColor,
|
||||
Vector3ToVector4(BaseManipulator::s_defaultMouseOverColor.GetAsVector3(), SurfaceManipulatorTransparency)
|
||||
defaultColor, Vector3ToVector4(BaseManipulator::s_defaultMouseOverColor.GetAsVector3(), SurfaceManipulatorOpacity())
|
||||
};
|
||||
|
||||
return color[mouseOver];
|
||||
@@ -325,16 +325,19 @@ namespace AzToolsFramework
|
||||
void ConfigureTranslationManipulatorAppearance3d(TranslationManipulators* translationManipulators)
|
||||
{
|
||||
translationManipulators->SetAxes(AZ::Vector3::CreateAxisX(), AZ::Vector3::CreateAxisY(), AZ::Vector3::CreateAxisZ());
|
||||
translationManipulators->ConfigurePlanarView(LinearManipulatorXAxisColor, LinearManipulatorYAxisColor, LinearManipulatorZAxisColor);
|
||||
translationManipulators->ConfigurePlanarView(
|
||||
PlanarManipulatorAxisLength(), LinearManipulatorXAxisColor, LinearManipulatorYAxisColor, LinearManipulatorZAxisColor);
|
||||
translationManipulators->ConfigureLinearView(
|
||||
LinearManipulatorAxisLength, LinearManipulatorXAxisColor, LinearManipulatorYAxisColor, LinearManipulatorZAxisColor);
|
||||
translationManipulators->ConfigureSurfaceView(SurfaceManipulatorRadius, SurfaceManipulatorColor);
|
||||
LinearManipulatorAxisLength(), LinearManipulatorXAxisColor, LinearManipulatorYAxisColor, LinearManipulatorZAxisColor);
|
||||
translationManipulators->ConfigureSurfaceView(SurfaceManipulatorRadius(), SurfaceManipulatorColor);
|
||||
}
|
||||
|
||||
void ConfigureTranslationManipulatorAppearance2d(TranslationManipulators* translationManipulators)
|
||||
{
|
||||
translationManipulators->SetAxes(AZ::Vector3::CreateAxisX(), AZ::Vector3::CreateAxisY());
|
||||
translationManipulators->ConfigurePlanarView(LinearManipulatorXAxisColor);
|
||||
translationManipulators->ConfigureLinearView(LinearManipulatorAxisLength, LinearManipulatorXAxisColor, LinearManipulatorYAxisColor);
|
||||
translationManipulators->ConfigurePlanarView(
|
||||
PlanarManipulatorAxisLength(), LinearManipulatorXAxisColor, LinearManipulatorYAxisColor);
|
||||
translationManipulators->ConfigureLinearView(
|
||||
LinearManipulatorAxisLength(), LinearManipulatorXAxisColor, LinearManipulatorYAxisColor);
|
||||
}
|
||||
} // namespace AzToolsFramework
|
||||
|
||||
+1
@@ -53,6 +53,7 @@ namespace AzToolsFramework
|
||||
void SetAxes(const AZ::Vector3& axis1, const AZ::Vector3& axis2, const AZ::Vector3& axis3 = AZ::Vector3::CreateAxisZ());
|
||||
|
||||
void ConfigurePlanarView(
|
||||
float planeSize,
|
||||
const AZ::Color& plane1Color,
|
||||
const AZ::Color& plane2Color = AZ::Color(0.0f, 1.0f, 0.0f, 0.5f),
|
||||
const AZ::Color& plane3Color = AZ::Color(0.0f, 0.0f, 1.0f, 0.5f));
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
* 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
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
constexpr AZStd::string_view FlipManipulatorAxesTowardsViewSetting = "/Amazon/Preferences/Editor/Manipulator/FlipManipulatorAxesTowardsView";
|
||||
constexpr AZStd::string_view LinearManipulatorAxisLengthSetting = "/Amazon/Preferences/Editor/Manipulator/LinearManipulatorAxisLength";
|
||||
constexpr AZStd::string_view PlanarManipulatorAxisLengthSetting = "/Amazon/Preferences/Editor/Manipulator/PlanarManipulatorAxisLength";
|
||||
constexpr AZStd::string_view SurfaceManipulatorRadiusSetting = "/Amazon/Preferences/Editor/Manipulator/SurfaceManipulatorRadius";
|
||||
constexpr AZStd::string_view SurfaceManipulatorOpacitySetting = "/Amazon/Preferences/Editor/Manipulator/SurfaceManipulatorOpacity";
|
||||
constexpr AZStd::string_view LinearManipulatorConeLengthSetting = "/Amazon/Preferences/Editor/Manipulator/LinearManipulatorConeLength";
|
||||
constexpr AZStd::string_view LinearManipulatorConeRadiusSetting = "/Amazon/Preferences/Editor/Manipulator/LinearManipulatorConeRadius";
|
||||
constexpr AZStd::string_view ScaleManipulatorBoxHalfExtentSetting = "/Amazon/Preferences/Editor/Manipulator/ScaleManipulatorBoxHalfExtent";
|
||||
constexpr AZStd::string_view RotationManipulatorRadiusSetting = "/Amazon/Preferences/Editor/Manipulator/RotationManipulatorRadius";
|
||||
constexpr AZStd::string_view ManipulatorViewBaseScaleSetting = "/Amazon/Preferences/Editor/Manipulator/ViewBaseScale";
|
||||
|
||||
bool FlipManipulatorAxesTowardsView()
|
||||
{
|
||||
return GetRegistry(FlipManipulatorAxesTowardsViewSetting, true);
|
||||
}
|
||||
|
||||
void SetFlipManipulatorAxesTowardsView(const bool enabled)
|
||||
{
|
||||
SetRegistry(FlipManipulatorAxesTowardsViewSetting, enabled);
|
||||
}
|
||||
|
||||
float LinearManipulatorAxisLength()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(LinearManipulatorAxisLengthSetting, 2.0));
|
||||
}
|
||||
|
||||
void SetLinearManipulatorAxisLength(const float length)
|
||||
{
|
||||
SetRegistry(LinearManipulatorAxisLengthSetting, length);
|
||||
}
|
||||
|
||||
float PlanarManipulatorAxisLength()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(PlanarManipulatorAxisLengthSetting, 0.6));
|
||||
}
|
||||
|
||||
void SetPlanarManipulatorAxisLength(const float length)
|
||||
{
|
||||
SetRegistry(PlanarManipulatorAxisLengthSetting, length);
|
||||
}
|
||||
|
||||
float SurfaceManipulatorRadius()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(SurfaceManipulatorRadiusSetting, 0.1));
|
||||
}
|
||||
|
||||
void SetSurfaceManipulatorRadius(const float radius)
|
||||
{
|
||||
SetRegistry(SurfaceManipulatorRadiusSetting, radius);
|
||||
}
|
||||
|
||||
float SurfaceManipulatorOpacity()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(SurfaceManipulatorOpacitySetting, 0.75));
|
||||
}
|
||||
|
||||
void SetSurfaceManipulatorOpacity(const float opacity)
|
||||
{
|
||||
SetRegistry(SurfaceManipulatorOpacitySetting, opacity);
|
||||
}
|
||||
|
||||
float LinearManipulatorConeLength()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(LinearManipulatorConeLengthSetting, 0.28));
|
||||
}
|
||||
|
||||
void SetLinearManipulatorConeLength(const float length)
|
||||
{
|
||||
SetRegistry(LinearManipulatorConeLengthSetting, length);
|
||||
}
|
||||
|
||||
float LinearManipulatorConeRadius()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(LinearManipulatorConeRadiusSetting, 0.1));
|
||||
}
|
||||
|
||||
void SetLinearManipulatorConeRadius(const float radius)
|
||||
{
|
||||
SetRegistry(LinearManipulatorConeRadiusSetting, radius);
|
||||
}
|
||||
|
||||
float ScaleManipulatorBoxHalfExtent()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(ScaleManipulatorBoxHalfExtentSetting, 0.1));
|
||||
}
|
||||
|
||||
void SetScaleManipulatorBoxHalfExtent(const float size)
|
||||
{
|
||||
SetRegistry(ScaleManipulatorBoxHalfExtentSetting, size);
|
||||
}
|
||||
|
||||
float RotationManipulatorRadius()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(RotationManipulatorRadiusSetting, 2.0));
|
||||
}
|
||||
|
||||
void SetRotationManipulatorRadius(const float radius)
|
||||
{
|
||||
SetRegistry(RotationManipulatorRadiusSetting, radius);
|
||||
}
|
||||
|
||||
float ManipulatorViewBaseScale()
|
||||
{
|
||||
return aznumeric_cast<float>(GetRegistry(ManipulatorViewBaseScaleSetting, 1.0));
|
||||
}
|
||||
|
||||
void SetManipulatorViewBaseScale(const float scale)
|
||||
{
|
||||
SetRegistry(ManipulatorViewBaseScaleSetting, scale);
|
||||
}
|
||||
} // namespace AzToolsFramework
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* 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/Settings/SettingsRegistry.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
template<typename T>
|
||||
void SetRegistry(const AZStd::string_view setting, T&& value)
|
||||
{
|
||||
if (auto* registry = AZ::SettingsRegistry::Get())
|
||||
{
|
||||
registry->Set(setting, AZStd::forward<T>(value));
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
AZStd::remove_cvref_t<T> GetRegistry(const AZStd::string_view setting, T&& defaultValue)
|
||||
{
|
||||
AZStd::remove_cvref_t<T> value = AZStd::forward<T>(defaultValue);
|
||||
if (const auto* registry = AZ::SettingsRegistry::Get())
|
||||
{
|
||||
T potentialValue;
|
||||
if (registry->Get(potentialValue, setting))
|
||||
{
|
||||
value = AZStd::move(potentialValue);
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
bool FlipManipulatorAxesTowardsView();
|
||||
void SetFlipManipulatorAxesTowardsView(bool enabled);
|
||||
|
||||
float LinearManipulatorAxisLength();
|
||||
void SetLinearManipulatorAxisLength(float length);
|
||||
|
||||
float PlanarManipulatorAxisLength();
|
||||
void SetPlanarManipulatorAxisLength(float length);
|
||||
|
||||
float SurfaceManipulatorRadius();
|
||||
void SetSurfaceManipulatorRadius(float radius);
|
||||
|
||||
float SurfaceManipulatorOpacity();
|
||||
void SetSurfaceManipulatorOpacity(float opacity);
|
||||
|
||||
float LinearManipulatorConeLength();
|
||||
void SetLinearManipulatorConeLength(float length);
|
||||
|
||||
float LinearManipulatorConeRadius();
|
||||
void SetLinearManipulatorConeRadius(float radius);
|
||||
|
||||
float ScaleManipulatorBoxHalfExtent();
|
||||
void SetScaleManipulatorBoxHalfExtent(float halfExtent);
|
||||
|
||||
float RotationManipulatorRadius();
|
||||
void SetRotationManipulatorRadius(float radius);
|
||||
|
||||
float ManipulatorViewBaseScale();
|
||||
void SetManipulatorViewBaseScale(float scale);
|
||||
} // namespace AzToolsFramework
|
||||
+4
-2
@@ -33,6 +33,7 @@
|
||||
#include <AzToolsFramework/ToolsComponents/EditorVisibilityBus.h>
|
||||
#include <AzToolsFramework/ToolsComponents/TransformComponent.h>
|
||||
#include <AzToolsFramework/Viewport/ActionBus.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
#include <AzToolsFramework/ViewportSelection/EditorSelectionUtil.h>
|
||||
#include <AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.h>
|
||||
#include <Entity/EditorEntityContextBus.h>
|
||||
@@ -1376,7 +1377,7 @@ namespace AzToolsFramework
|
||||
// view
|
||||
rotationManipulators->SetLocalAxes(AZ::Vector3::CreateAxisX(), AZ::Vector3::CreateAxisY(), AZ::Vector3::CreateAxisZ());
|
||||
rotationManipulators->ConfigureView(
|
||||
2.0f, AzFramework::ViewportColors::XAxisColor, AzFramework::ViewportColors::YAxisColor,
|
||||
RotationManipulatorRadius(), AzFramework::ViewportColors::XAxisColor, AzFramework::ViewportColors::YAxisColor,
|
||||
AzFramework::ViewportColors::ZAxisColor);
|
||||
|
||||
struct SharedRotationState
|
||||
@@ -1535,7 +1536,8 @@ namespace AzToolsFramework
|
||||
RecalculateAverageManipulatorTransform(m_entityIdManipulators.m_lookups, m_pivotOverrideFrame, m_pivotMode, m_referenceFrame));
|
||||
|
||||
scaleManipulators->SetAxes(AZ::Vector3::CreateAxisX(), AZ::Vector3::CreateAxisY(), AZ::Vector3::CreateAxisZ());
|
||||
scaleManipulators->ConfigureView(2.0f, AZ::Color::CreateOne(), AZ::Color::CreateOne(), AZ::Color::CreateOne());
|
||||
scaleManipulators->ConfigureView(
|
||||
LinearManipulatorAxisLength(), AZ::Color::CreateOne(), AZ::Color::CreateOne(), AZ::Color::CreateOne());
|
||||
|
||||
struct SharedScaleState
|
||||
{
|
||||
|
||||
@@ -506,6 +506,8 @@ set(FILES
|
||||
Viewport/ViewportMessages.cpp
|
||||
Viewport/ViewportTypes.h
|
||||
Viewport/ViewportTypes.cpp
|
||||
Viewport/ViewportSettings.h
|
||||
Viewport/ViewportSettings.cpp
|
||||
ViewportUi/Button.h
|
||||
ViewportUi/Button.cpp
|
||||
ViewportUi/ButtonGroup.h
|
||||
|
||||
@@ -294,7 +294,7 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
else if (numChangedDependencies > 1)
|
||||
{
|
||||
notification += tr("%1 Gem %2").arg(QString(numChangedDependencies), tr("dependencies"));
|
||||
notification += tr("%1 Gem %2").arg(numChangedDependencies).arg(tr("dependencies"));
|
||||
}
|
||||
notification += (added ? tr(" activated") : tr(" deactivated"));
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <QFileInfo>
|
||||
#include <QDesktopServices>
|
||||
#include <QMessageBox>
|
||||
#include <QMouseEvent>
|
||||
|
||||
namespace O3DE::ProjectManager
|
||||
{
|
||||
@@ -109,11 +110,11 @@ namespace O3DE::ProjectManager
|
||||
vLayout->addWidget(m_progressBar);
|
||||
}
|
||||
|
||||
void LabelButton::mousePressEvent([[maybe_unused]] QMouseEvent* event)
|
||||
void LabelButton::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
if(m_enabled)
|
||||
{
|
||||
emit triggered();
|
||||
emit triggered(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,52 +202,64 @@ namespace O3DE::ProjectManager
|
||||
projectNameLabel->setToolTip(m_projectInfo.m_path);
|
||||
hLayout->addWidget(projectNameLabel);
|
||||
|
||||
QMenu* menu = new QMenu(this);
|
||||
menu->addAction(tr("Edit Project Settings..."), this, [this]() { emit EditProject(m_projectInfo.m_path); });
|
||||
menu->addAction(tr("Configure Gems..."), this, [this]() { emit EditProjectGems(m_projectInfo.m_path); });
|
||||
menu->addAction(tr("Build"), this, [this]() { emit BuildProject(m_projectInfo); });
|
||||
menu->addAction(tr("Open CMake GUI..."), this, [this]() { emit OpenCMakeGUI(m_projectInfo); });
|
||||
menu->addSeparator();
|
||||
menu->addAction(tr("Open Project folder..."), this, [this]()
|
||||
{
|
||||
AzQtComponents::ShowFileOnDesktop(m_projectInfo.m_path);
|
||||
});
|
||||
|
||||
#if AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT
|
||||
menu->addAction(tr("Create Editor desktop shortcut..."), this, [this]()
|
||||
{
|
||||
AZ::IO::FixedMaxPath editorExecutablePath = ProjectUtils::GetEditorExecutablePath(m_projectInfo.m_path.toUtf8().constData());
|
||||
|
||||
const QString shortcutName = QString("%1 Editor").arg(m_projectInfo.m_displayName);
|
||||
const QString arg = QString("--regset=\"/Amazon/AzCore/Bootstrap/project_path=%1\"").arg(m_projectInfo.m_path);
|
||||
|
||||
auto result = ProjectUtils::CreateDesktopShortcut(shortcutName, editorExecutablePath.c_str(), { arg });
|
||||
if(result.IsSuccess())
|
||||
{
|
||||
QMessageBox::information(this, tr("Desktop Shortcut Created"), result.GetValue());
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::critical(this, tr("Failed to create shortcut"), result.GetError());
|
||||
}
|
||||
});
|
||||
#endif // AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT
|
||||
|
||||
menu->addSeparator();
|
||||
menu->addAction(tr("Duplicate"), this, [this]() { emit CopyProject(m_projectInfo); });
|
||||
menu->addSeparator();
|
||||
menu->addAction(tr("Remove from O3DE"), this, [this]() { emit RemoveProject(m_projectInfo.m_path); });
|
||||
menu->addAction(tr("Delete this Project"), this, [this]() { emit DeleteProject(m_projectInfo.m_path); });
|
||||
|
||||
m_projectMenuButton = new QPushButton(this);
|
||||
m_projectMenuButton->setObjectName("projectMenuButton");
|
||||
m_projectMenuButton->setMenu(menu);
|
||||
m_projectMenuButton->setMenu(CreateProjectMenu());
|
||||
hLayout->addWidget(m_projectMenuButton);
|
||||
}
|
||||
|
||||
vLayout->addWidget(projectFooter);
|
||||
|
||||
connect(m_projectImageLabel->GetOpenEditorButton(), &QPushButton::clicked, [this](){ emit OpenProject(m_projectInfo.m_path); });
|
||||
connect(m_projectImageLabel, &LabelButton::triggered, [this](QMouseEvent* event) {
|
||||
if (event->button() == Qt::RightButton)
|
||||
{
|
||||
m_projectMenuButton->menu()->move(event->globalPos());
|
||||
m_projectMenuButton->menu()->show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
QMenu* ProjectButton::CreateProjectMenu()
|
||||
{
|
||||
QMenu* menu = new QMenu(this);
|
||||
menu->addAction(tr("Edit Project Settings..."), this, [this]() { emit EditProject(m_projectInfo.m_path); });
|
||||
menu->addAction(tr("Configure Gems..."), this, [this]() { emit EditProjectGems(m_projectInfo.m_path); });
|
||||
menu->addAction(tr("Build"), this, [this]() { emit BuildProject(m_projectInfo); });
|
||||
menu->addAction(tr("Open CMake GUI..."), this, [this]() { emit OpenCMakeGUI(m_projectInfo); });
|
||||
menu->addSeparator();
|
||||
menu->addAction(tr("Open Project folder..."), this, [this]()
|
||||
{
|
||||
AzQtComponents::ShowFileOnDesktop(m_projectInfo.m_path);
|
||||
});
|
||||
|
||||
#if AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT
|
||||
menu->addAction(tr("Create Editor desktop shortcut..."), this, [this]()
|
||||
{
|
||||
AZ::IO::FixedMaxPath editorExecutablePath = ProjectUtils::GetEditorExecutablePath(m_projectInfo.m_path.toUtf8().constData());
|
||||
|
||||
const QString shortcutName = QString("%1 Editor").arg(m_projectInfo.m_displayName);
|
||||
const QString arg = QString("--regset=\"/Amazon/AzCore/Bootstrap/project_path=%1\"").arg(m_projectInfo.m_path);
|
||||
|
||||
auto result = ProjectUtils::CreateDesktopShortcut(shortcutName, editorExecutablePath.c_str(), { arg });
|
||||
if(result.IsSuccess())
|
||||
{
|
||||
QMessageBox::information(this, tr("Desktop Shortcut Created"), result.GetValue());
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::critical(this, tr("Failed to create shortcut"), result.GetError());
|
||||
}
|
||||
});
|
||||
#endif // AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT
|
||||
|
||||
menu->addSeparator();
|
||||
menu->addAction(tr("Duplicate"), this, [this]() { emit CopyProject(m_projectInfo); });
|
||||
menu->addSeparator();
|
||||
menu->addAction(tr("Remove from O3DE"), this, [this]() { emit RemoveProject(m_projectInfo.m_path); });
|
||||
menu->addAction(tr("Delete this Project"), this, [this]() { emit DeleteProject(m_projectInfo.m_path); });
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
const ProjectInfo& ProjectButton::GetProjectInfo() const
|
||||
|
||||
@@ -24,6 +24,7 @@ QT_FORWARD_DECLARE_CLASS(QProgressBar)
|
||||
QT_FORWARD_DECLARE_CLASS(QLayout)
|
||||
QT_FORWARD_DECLARE_CLASS(QVBoxLayout)
|
||||
QT_FORWARD_DECLARE_CLASS(QEvent)
|
||||
QT_FORWARD_DECLARE_CLASS(QMenu)
|
||||
|
||||
namespace O3DE::ProjectManager
|
||||
{
|
||||
@@ -49,7 +50,7 @@ namespace O3DE::ProjectManager
|
||||
QLayout* GetBuildOverlayLayout();
|
||||
|
||||
signals:
|
||||
void triggered();
|
||||
void triggered(QMouseEvent* event);
|
||||
|
||||
public slots:
|
||||
void mousePressEvent(QMouseEvent* event) override;
|
||||
@@ -108,6 +109,8 @@ namespace O3DE::ProjectManager
|
||||
void ShowWarning(bool show, const QString& warning);
|
||||
void ShowDefaultBuildButton();
|
||||
|
||||
QMenu* CreateProjectMenu();
|
||||
|
||||
ProjectInfo m_projectInfo;
|
||||
|
||||
LabelButton* m_projectImageLabel = nullptr;
|
||||
|
||||
@@ -63,8 +63,9 @@ namespace AZ
|
||||
#if defined(USE_RENDERDOC)
|
||||
// If RenderDoc is requested, we need to load the library as early as possible (before device queries/factories are made)
|
||||
bool enableRenderDoc = RHI::QueryCommandLineOption("enableRenderDoc");
|
||||
#if defined(USE_PIX)
|
||||
s_pixGpuMarkersEnabled = s_pixGpuMarkersEnabled || enableRenderDoc;
|
||||
|
||||
#endif
|
||||
if (enableRenderDoc && AZ_TRAIT_RENDERDOC_MODULE && !s_renderDocModule)
|
||||
{
|
||||
s_renderDocModule = DynamicModuleHandle::Create(AZ_TRAIT_RENDERDOC_MODULE);
|
||||
|
||||
@@ -43,6 +43,10 @@ namespace AZ
|
||||
// Rendering -> Idle
|
||||
// -> Queued (Rendering will transition to Queued if a pass was queued with the PassSystem during Rendering)
|
||||
//
|
||||
// Any State -> Orphaned (transition to Orphaned state can be outside the jurisdiction of the pass and so can happen from any state)
|
||||
// Orphaned -> Queued (When coming out of Orphaned state, pass will queue itself for build. In practice this
|
||||
// (almost?) never happens as orphaned passes are re-created in most if not all cases.)
|
||||
//
|
||||
enum class PassState : u8
|
||||
{
|
||||
// Default value, you should only ever see this in the Pass constructor
|
||||
@@ -92,7 +96,10 @@ namespace AZ
|
||||
// |
|
||||
// V
|
||||
// Pass is currently rendering. Pass must be in Idle state before entering this state
|
||||
Rendering
|
||||
Rendering,
|
||||
|
||||
// Special state: Orphaned State, pass was removed from it's parent and is awaiting deletion
|
||||
Orphaned
|
||||
};
|
||||
|
||||
// This enum keeps track of what actions the pass is queued for with the pass system
|
||||
|
||||
@@ -147,6 +147,11 @@ namespace AZ
|
||||
m_treeDepth = m_parent->m_treeDepth + 1;
|
||||
m_path = ConcatPassName(m_parent->m_path, m_name);
|
||||
m_flags.m_partOfHierarchy = m_parent->m_flags.m_partOfHierarchy;
|
||||
|
||||
if (m_state == PassState::Orphaned)
|
||||
{
|
||||
QueueForBuildAndInitialization();
|
||||
}
|
||||
}
|
||||
|
||||
void Pass::RemoveFromParent()
|
||||
@@ -154,7 +159,7 @@ namespace AZ
|
||||
AZ_RPI_PASS_ASSERT(m_parent != nullptr, "Trying to remove pass from parent but pointer to the parent pass is null.");
|
||||
m_parent->RemoveChild(Ptr<Pass>(this));
|
||||
m_queueState = PassQueueState::NoQueue;
|
||||
m_state = PassState::Idle;
|
||||
m_state = PassState::Orphaned;
|
||||
}
|
||||
|
||||
void Pass::OnOrphan()
|
||||
@@ -162,6 +167,8 @@ namespace AZ
|
||||
m_parent = nullptr;
|
||||
m_flags.m_partOfHierarchy = false;
|
||||
m_treeDepth = 0;
|
||||
m_queueState = PassQueueState::NoQueue;
|
||||
m_state = PassState::Orphaned;
|
||||
}
|
||||
|
||||
// --- Getters & Setters ---
|
||||
|
||||
@@ -225,6 +225,36 @@ namespace AudioControls
|
||||
{
|
||||
pItem->setFlags(pItem->flags() & ~Qt::ItemIsDragEnabled);
|
||||
}
|
||||
|
||||
if (compatibleType == EACEControlType::eACET_SWITCH_STATE)
|
||||
{
|
||||
IAudioSystemControl* pControl = pAudioSystemEditorImpl->GetControl(GetItemId(pItem));
|
||||
if (pControl && !pControl->IsLocalized())
|
||||
{
|
||||
size_t nConnect = 0;
|
||||
for (int i = 0; i < pControl->GetParent()->ChildCount(); ++i)
|
||||
{
|
||||
IAudioSystemControl* child = pControl->GetParent()->GetChildAt(i);
|
||||
if (child && child->IsConnected())
|
||||
{
|
||||
++nConnect;
|
||||
}
|
||||
}
|
||||
|
||||
QTreeWidgetItem* pParentItem = GetItem(pControl->GetParent()->GetId(), pControl->GetParent()->IsLocalized());
|
||||
if (pParentItem)
|
||||
{
|
||||
if (nConnect > 0 && nConnect == pControl->GetParent()->ChildCount())
|
||||
{
|
||||
pParentItem->setForeground(0, m_connectedColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
pParentItem->setForeground(0, m_disconnectedColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -382,6 +382,9 @@ namespace GraphCanvas
|
||||
m_translationAssets.push_back(assetId);
|
||||
}
|
||||
};
|
||||
|
||||
m_translationAssets.clear();
|
||||
|
||||
AZ::Data::AssetCatalogRequestBus::Broadcast(&AZ::Data::AssetCatalogRequestBus::Events::EnumerateAssets, nullptr, collectAssetsCb, postEnumerateCb);
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ namespace LmbrCentral
|
||||
using EditorPolygonPrismShapeComponentManipulatorFixture =
|
||||
UnitTest::IndirectCallManipulatorViewportInteractionFixtureMixin<EditorPolygonPrismShapeComponentFixture>;
|
||||
|
||||
TEST_F(EditorPolygonPrismShapeComponentManipulatorFixture, PolygonPrismNonUniformScale_ManipulatorsScaleCorrectly)
|
||||
TEST_F(EditorPolygonPrismShapeComponentManipulatorFixture, PolygonPrismNonUniformScaleManipulatorsScaleCorrectly)
|
||||
{
|
||||
// set the non-uniform scale and enter the polygon prism shape component's component mode
|
||||
const AZ::Vector3 nonUniformScale(2.0f, 3.0f, 4.0f);
|
||||
@@ -171,8 +171,8 @@ namespace LmbrCentral
|
||||
const auto screenStart = AzFramework::WorldToScreen(worldStart, m_cameraState);
|
||||
const auto screenEnd = AzFramework::WorldToScreen(worldEnd, m_cameraState);
|
||||
|
||||
// small diagonal offset to ensure we interact with the planar manipulator and not one of the linear manipulators
|
||||
const AzFramework::ScreenVector offset(5, -5);
|
||||
// diagonal offset to ensure we interact with the planar manipulator and not one of the linear manipulators
|
||||
const AzFramework::ScreenVector offset(50, -50);
|
||||
|
||||
m_actionDispatcher
|
||||
->CameraState(m_cameraState)
|
||||
|
||||
+23
-22
@@ -17,6 +17,7 @@
|
||||
#include <AzToolsFramework/Manipulators/ManipulatorManager.h>
|
||||
#include <AzToolsFramework/Manipulators/ManipulatorView.h>
|
||||
#include <AzToolsFramework/Manipulators/PlanarManipulator.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportSettings.h>
|
||||
|
||||
#include <Editor/Source/ComponentModes/Joints/JointsComponentModeCommon.h>
|
||||
#include <PhysX/EditorJointBus.h>
|
||||
@@ -34,22 +35,22 @@ namespace PhysX
|
||||
const float XRotationManipulatorWidth = 0.05f;
|
||||
} // namespace Internal
|
||||
|
||||
JointsSubComponentModeAngleCone::JointsSubComponentModeAngleCone(
|
||||
const AZStd::string& propertyName, float max, float min)
|
||||
JointsSubComponentModeAngleCone::JointsSubComponentModeAngleCone(const AZStd::string& propertyName, float max, float min)
|
||||
: m_propertyName(propertyName)
|
||||
, m_max(max)
|
||||
, m_min(min)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void JointsSubComponentModeAngleCone::Setup(const AZ::EntityComponentIdPair& idPair)
|
||||
{
|
||||
m_entityComponentIdPair = idPair;
|
||||
EditorJointRequestBus::EventResult(
|
||||
m_resetPostion, m_entityComponentIdPair, &PhysX::EditorJointRequests::GetVector3Value, JointsComponentModeCommon::ParamaterNames::Position);
|
||||
m_resetPostion, m_entityComponentIdPair, &PhysX::EditorJointRequests::GetVector3Value,
|
||||
JointsComponentModeCommon::ParamaterNames::Position);
|
||||
EditorJointRequestBus::EventResult(
|
||||
m_resetRotation, m_entityComponentIdPair, &PhysX::EditorJointRequests::GetVector3Value, JointsComponentModeCommon::ParamaterNames::Rotation);
|
||||
m_resetRotation, m_entityComponentIdPair, &PhysX::EditorJointRequests::GetVector3Value,
|
||||
JointsComponentModeCommon::ParamaterNames::Rotation);
|
||||
EditorJointRequestBus::EventResult(
|
||||
m_resetLimits, m_entityComponentIdPair, &EditorJointRequests::GetLinearValuePair, m_propertyName);
|
||||
|
||||
@@ -57,7 +58,8 @@ namespace PhysX
|
||||
|
||||
AZ::Transform localTransform = AZ::Transform::CreateIdentity();
|
||||
EditorJointRequestBus::EventResult(
|
||||
localTransform, m_entityComponentIdPair, &EditorJointRequests::GetTransformValue, JointsComponentModeCommon::ParamaterNames::Transform);
|
||||
localTransform, m_entityComponentIdPair, &EditorJointRequests::GetTransformValue,
|
||||
JointsComponentModeCommon::ParamaterNames::Transform);
|
||||
const AZ::Quaternion localRotation = localTransform.GetRotation();
|
||||
|
||||
// Initialize manipulators used to resize the base of the cone.
|
||||
@@ -105,10 +107,10 @@ namespace PhysX
|
||||
{
|
||||
AngleLimitsFloatPair m_startValues;
|
||||
};
|
||||
auto sharedState = AZStd::make_shared<SharedState>();
|
||||
|
||||
auto sharedState = AZStd::make_shared<SharedState>();
|
||||
m_yLinearManipulator->InstallLeftMouseDownCallback(
|
||||
[this, sharedState](const AzToolsFramework::LinearManipulator::Action& /*action*/) mutable
|
||||
[this, sharedState](const AzToolsFramework::LinearManipulator::Action& /*action*/)
|
||||
{
|
||||
AngleLimitsFloatPair currentValue;
|
||||
EditorJointRequestBus::EventResult(
|
||||
@@ -137,7 +139,7 @@ namespace PhysX
|
||||
});
|
||||
|
||||
m_zLinearManipulator->InstallLeftMouseDownCallback(
|
||||
[this, sharedState](const AzToolsFramework::LinearManipulator::Action& /*action*/) mutable
|
||||
[this, sharedState](const AzToolsFramework::LinearManipulator::Action& /*action*/)
|
||||
{
|
||||
AngleLimitsFloatPair currentValue;
|
||||
EditorJointRequestBus::EventResult(
|
||||
@@ -166,7 +168,7 @@ namespace PhysX
|
||||
});
|
||||
|
||||
m_yzPlanarManipulator->InstallLeftMouseDownCallback(
|
||||
[this, sharedState]([[maybe_unused]]const AzToolsFramework::PlanarManipulator::Action& action) mutable
|
||||
[this, sharedState]([[maybe_unused]] const AzToolsFramework::PlanarManipulator::Action& action)
|
||||
{
|
||||
AngleLimitsFloatPair currentValue;
|
||||
EditorJointRequestBus::EventResult(
|
||||
@@ -207,9 +209,8 @@ namespace PhysX
|
||||
{
|
||||
AZ::Transform m_startTM;
|
||||
};
|
||||
auto sharedStateXRotate = AZStd::make_shared<SharedStateXRotate>();
|
||||
|
||||
auto mouseDownCallback = [this, sharedRotationState](const AzToolsFramework::AngularManipulator::Action& action) mutable -> void
|
||||
auto mouseDownCallback = [this, sharedRotationState](const AzToolsFramework::AngularManipulator::Action& action)
|
||||
{
|
||||
AZ::Quaternion normalizedStart = action.m_start.m_rotation.GetNormalized();
|
||||
sharedRotationState->m_axis = AZ::Vector3(normalizedStart.GetX(), normalizedStart.GetY(), normalizedStart.GetZ());
|
||||
@@ -222,8 +223,9 @@ namespace PhysX
|
||||
sharedRotationState->m_valuePair = currentValue;
|
||||
};
|
||||
|
||||
auto sharedStateXRotate = AZStd::make_shared<SharedStateXRotate>();
|
||||
auto mouseDownRotateXCallback =
|
||||
[this, sharedStateXRotate]([[maybe_unused]] const AzToolsFramework::AngularManipulator::Action& action) mutable -> void
|
||||
[this, sharedStateXRotate]([[maybe_unused]] const AzToolsFramework::AngularManipulator::Action& action)
|
||||
{
|
||||
PhysX::EditorJointRequestBus::EventResult(
|
||||
sharedStateXRotate->m_startTM, m_entityComponentIdPair, &PhysX::EditorJointRequests::GetTransformValue,
|
||||
@@ -233,7 +235,7 @@ namespace PhysX
|
||||
m_xRotationManipulator->InstallLeftMouseDownCallback(mouseDownRotateXCallback);
|
||||
|
||||
m_xRotationManipulator->InstallMouseMoveCallback(
|
||||
[this, sharedStateXRotate](const AzToolsFramework::AngularManipulator::Action& action) mutable -> void
|
||||
[this, sharedStateXRotate](const AzToolsFramework::AngularManipulator::Action& action)
|
||||
{
|
||||
const AZ::Quaternion manipulatorOrientation = action.m_start.m_rotation * action.m_current.m_delta;
|
||||
|
||||
@@ -241,11 +243,11 @@ namespace PhysX
|
||||
newTransform = sharedStateXRotate->m_startTM * AZ::Transform::CreateFromQuaternion(action.m_current.m_delta);
|
||||
|
||||
PhysX::EditorJointRequestBus::Event(
|
||||
m_entityComponentIdPair, &PhysX::EditorJointRequests::SetVector3Value, JointsComponentModeCommon::ParamaterNames::Position,
|
||||
newTransform.GetTranslation());
|
||||
m_entityComponentIdPair, &PhysX::EditorJointRequests::SetVector3Value,
|
||||
JointsComponentModeCommon::ParamaterNames::Position, newTransform.GetTranslation());
|
||||
PhysX::EditorJointRequestBus::Event(
|
||||
m_entityComponentIdPair, &PhysX::EditorJointRequests::SetVector3Value, JointsComponentModeCommon::ParamaterNames::Rotation,
|
||||
newTransform.GetRotation().GetEulerDegrees());
|
||||
m_entityComponentIdPair, &PhysX::EditorJointRequests::SetVector3Value,
|
||||
JointsComponentModeCommon::ParamaterNames::Rotation, newTransform.GetRotation().GetEulerDegrees());
|
||||
|
||||
m_yLinearManipulator->SetLocalOrientation(manipulatorOrientation);
|
||||
m_zLinearManipulator->SetLocalOrientation(manipulatorOrientation);
|
||||
@@ -332,8 +334,7 @@ namespace PhysX
|
||||
{
|
||||
AzToolsFramework::ManipulatorViews views;
|
||||
views.emplace_back(CreateManipulatorViewLine(
|
||||
*linearManipulator, color, axisLength,
|
||||
AzToolsFramework::ManipulatorLineBoundWidth(AzFramework::InvalidViewportId)));
|
||||
*linearManipulator, color, axisLength, AzToolsFramework::ManipulatorLineBoundWidth(AzFramework::InvalidViewportId)));
|
||||
views.emplace_back(CreateManipulatorViewCone(
|
||||
*linearManipulator, color, linearManipulator->GetAxis() * (axisLength - coneLength), coneLength, coneRadius));
|
||||
linearManipulator->SetViews(AZStd::move(views));
|
||||
@@ -345,9 +346,9 @@ namespace PhysX
|
||||
|
||||
void JointsSubComponentModeAngleCone::ConfigurePlanarView(const AZ::Color& planeColor, const AZ::Color& plane2Color)
|
||||
{
|
||||
const float planeSize = 0.6f;
|
||||
AzToolsFramework::ManipulatorViews views;
|
||||
views.emplace_back(CreateManipulatorViewQuad(*m_yzPlanarManipulator, planeColor, plane2Color, planeSize));
|
||||
views.emplace_back(CreateManipulatorViewQuad(
|
||||
*m_yzPlanarManipulator, planeColor, plane2Color, AZ::Vector3::CreateZero(), AzToolsFramework::PlanarManipulatorAxisLength()));
|
||||
m_yzPlanarManipulator->SetViews(AZStd::move(views));
|
||||
}
|
||||
|
||||
|
||||
@@ -864,7 +864,8 @@ namespace PhysX
|
||||
{
|
||||
if (auto* physicsSystem = AZ::Interface<AzPhysics::SystemInterface>::Get())
|
||||
{
|
||||
if (const auto* physicsConfiguration = physicsSystem->GetConfiguration())
|
||||
if (const auto* physicsConfiguration = physicsSystem->GetConfiguration();
|
||||
physicsConfiguration && physicsConfiguration->m_materialLibraryAsset)
|
||||
{
|
||||
const auto& materials = physicsConfiguration->m_materialLibraryAsset->GetMaterialsData();
|
||||
|
||||
|
||||
@@ -1,38 +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/EBus/EBus.h>
|
||||
#include <AzCore/Asset/AssetCommon.h>
|
||||
|
||||
namespace PythonAssetBuilder
|
||||
{
|
||||
//! A request bus to help produce Open 3D Engine asset data
|
||||
class PythonBuilderRequests
|
||||
: public AZ::EBusTraits
|
||||
{
|
||||
public:
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// EBusTraits overrides
|
||||
static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
|
||||
static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! Creates an AZ::Entity populated with Editor components and a name
|
||||
virtual AZ::Outcome<AZ::EntityId, AZStd::string> CreateEditorEntity(const AZStd::string& name) = 0;
|
||||
|
||||
//! Writes out a .SLICE file with a given list of entities; optionally can be set to dynamic
|
||||
virtual AZ::Outcome<AZ::Data::AssetType, AZStd::string> WriteSliceFile(
|
||||
AZStd::string_view filename,
|
||||
AZStd::vector<AZ::EntityId> entityList,
|
||||
bool makeDynamic) = 0;
|
||||
};
|
||||
|
||||
using PythonBuilderRequestBus = AZ::EBus<PythonBuilderRequests>;
|
||||
}
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
#include <PythonAssetBuilderSystemComponent.h>
|
||||
#include <PythonAssetBuilder/PythonAssetBuilderBus.h>
|
||||
#include <PythonAssetBuilder/PythonBuilderRequestBus.h>
|
||||
|
||||
#include <AzCore/IO/Path/Path.h>
|
||||
#include <AzCore/Serialization/SerializeContext.h>
|
||||
@@ -57,13 +56,6 @@ namespace PythonAssetBuilder
|
||||
->Event("RegisterAssetBuilder", &PythonAssetBuilderRequestBus::Events::RegisterAssetBuilder)
|
||||
->Event("GetExecutableFolder", &PythonAssetBuilderRequestBus::Events::GetExecutableFolder)
|
||||
;
|
||||
|
||||
behaviorContext->EBus<PythonBuilderRequestBus>("PythonBuilderRequestBus")
|
||||
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation)
|
||||
->Attribute(AZ::Script::Attributes::Module, "asset.entity")
|
||||
->Event("WriteSliceFile", &PythonBuilderRequestBus::Events::WriteSliceFile)
|
||||
->Event("CreateEditorEntity", &PythonBuilderRequestBus::Events::CreateEditorEntity)
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,13 +89,10 @@ namespace PythonAssetBuilder
|
||||
{
|
||||
pythonInterface->StartPython(true);
|
||||
}
|
||||
|
||||
PythonBuilderRequestBus::Handler::BusConnect();
|
||||
}
|
||||
|
||||
void PythonAssetBuilderSystemComponent::Deactivate()
|
||||
{
|
||||
PythonBuilderRequestBus::Handler::BusDisconnect();
|
||||
m_messageSink.reset();
|
||||
|
||||
if (PythonAssetBuilderRequestBus::HasHandlers())
|
||||
@@ -148,109 +137,4 @@ namespace PythonAssetBuilder
|
||||
}
|
||||
return AZ::Failure(AZStd::string("GetExecutableFolder access is missing."));
|
||||
}
|
||||
|
||||
AZ::Outcome<AZ::EntityId, AZStd::string> PythonAssetBuilderSystemComponent::CreateEditorEntity(const AZStd::string& name)
|
||||
{
|
||||
AZ::EntityId entityId;
|
||||
AzToolsFramework::EditorEntityContextRequestBus::BroadcastResult(
|
||||
entityId,
|
||||
&AzToolsFramework::EditorEntityContextRequestBus::Events::CreateNewEditorEntity,
|
||||
name.c_str());
|
||||
|
||||
if (entityId.IsValid() == false)
|
||||
{
|
||||
return AZ::Failure<AZStd::string>("Failed to CreateNewEditorEntity.");
|
||||
}
|
||||
|
||||
AZ::Entity* entity = nullptr;
|
||||
AZ::ComponentApplicationBus::BroadcastResult(entity, &AZ::ComponentApplicationRequests::FindEntity, entityId);
|
||||
|
||||
if (entity == nullptr)
|
||||
{
|
||||
return AZ::Failure<AZStd::string>(AZStd::string::format("Failed to find created entityId %s", entityId.ToString().c_str()));
|
||||
}
|
||||
|
||||
entity->Deactivate();
|
||||
|
||||
AzToolsFramework::EditorEntityContextRequestBus::Broadcast(
|
||||
&AzToolsFramework::EditorEntityContextRequestBus::Events::AddRequiredComponents,
|
||||
*entity);
|
||||
|
||||
entity->Activate();
|
||||
|
||||
return AZ::Success(entityId);
|
||||
}
|
||||
|
||||
AZ::Outcome<AZ::Data::AssetType, AZStd::string> PythonAssetBuilderSystemComponent::WriteSliceFile(
|
||||
AZStd::string_view filename,
|
||||
AZStd::vector<AZ::EntityId> entityList,
|
||||
bool makeDynamic)
|
||||
{
|
||||
using namespace AzToolsFramework::SliceUtilities;
|
||||
|
||||
AZ::SerializeContext* serializeContext = nullptr;
|
||||
AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext);
|
||||
if (serializeContext == nullptr)
|
||||
{
|
||||
return AZ::Failure<AZStd::string>("GetSerializeContext failed");
|
||||
}
|
||||
|
||||
// transaction->Commit() requires the "@user@" alias
|
||||
auto settingsRegistry = AZ::SettingsRegistry::Get();
|
||||
auto ioBase = AZ::IO::FileIOBase::GetInstance();
|
||||
if (ioBase->GetAlias("@user@") == nullptr)
|
||||
{
|
||||
if (AZ::IO::Path userPath; settingsRegistry->Get(userPath.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_ProjectUserPath))
|
||||
{
|
||||
userPath /= "AssetProcessorTemp";
|
||||
ioBase->SetAlias("@user@", userPath.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
// transaction->Commit() expects the file to exist and write-able
|
||||
AZ::IO::HandleType fileHandle;
|
||||
AZ::IO::LocalFileIO::GetInstance()->Open(filename.data(), AZ::IO::OpenMode::ModeWrite, fileHandle);
|
||||
if (fileHandle == AZ::IO::InvalidHandle)
|
||||
{
|
||||
return AZ::Failure<AZStd::string>(
|
||||
AZStd::string::format("Failed to create slice file %.*s", aznumeric_cast<int>(filename.size()), filename.data()));
|
||||
}
|
||||
AZ::IO::LocalFileIO::GetInstance()->Close(fileHandle);
|
||||
|
||||
AZ::u32 creationFlags = 0;
|
||||
if (makeDynamic)
|
||||
{
|
||||
creationFlags |= SliceTransaction::CreateAsDynamic;
|
||||
}
|
||||
|
||||
SliceTransaction::TransactionPtr transaction = SliceTransaction::BeginNewSlice(nullptr, serializeContext, creationFlags);
|
||||
|
||||
// add entities
|
||||
for (const AZ::EntityId& entityId : entityList)
|
||||
{
|
||||
auto addResult = transaction->AddEntity(entityId, SliceTransaction::SliceAddEntityFlags::DiscardSliceAncestry);
|
||||
if (!addResult)
|
||||
{
|
||||
return AZ::Failure<AZStd::string>(AZStd::string::format("Failed slice add entity: %s", addResult.GetError().c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
// commit to a file
|
||||
AZ::Data::AssetType sliceAssetType;
|
||||
auto resultCommit = transaction->Commit(filename.data(), nullptr, [&sliceAssetType](
|
||||
SliceTransaction::TransactionPtr transactionPtr,
|
||||
[[maybe_unused]] const char* fullPath,
|
||||
const SliceTransaction::SliceAssetPtr& sliceAssetPtr)
|
||||
{
|
||||
sliceAssetType = sliceAssetPtr->GetType();
|
||||
return AZ::Success();
|
||||
});
|
||||
|
||||
if (!resultCommit)
|
||||
{
|
||||
return AZ::Failure<AZStd::string>(AZStd::string::format("Failed commit slice: %s", resultCommit.GetError().c_str()));
|
||||
}
|
||||
|
||||
return AZ::Success(sliceAssetType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#include <AzCore/Component/Component.h>
|
||||
|
||||
#include <PythonAssetBuilder/PythonAssetBuilderBus.h>
|
||||
#include <PythonAssetBuilder/PythonBuilderRequestBus.h>
|
||||
|
||||
namespace PythonAssetBuilder
|
||||
{
|
||||
@@ -21,7 +20,6 @@ namespace PythonAssetBuilder
|
||||
class PythonAssetBuilderSystemComponent
|
||||
: public AZ::Component
|
||||
, protected PythonAssetBuilderRequestBus::Handler
|
||||
, protected PythonBuilderRequestBus::Handler
|
||||
{
|
||||
public:
|
||||
AZ_COMPONENT(PythonAssetBuilderSystemComponent, "{E2872C13-D103-4534-9A95-76A66C8DDB5D}");
|
||||
@@ -42,13 +40,6 @@ namespace PythonAssetBuilder
|
||||
AZ::Outcome<bool, AZStd::string> RegisterAssetBuilder(const AssetBuilderSDK::AssetBuilderDesc& desc) override;
|
||||
AZ::Outcome<AZStd::string, AZStd::string> GetExecutableFolder() const override;
|
||||
|
||||
// PythonBuilderRequestBus
|
||||
AZ::Outcome<AZ::EntityId, AZStd::string> CreateEditorEntity(const AZStd::string& name) override;
|
||||
AZ::Outcome<AZ::Data::AssetType, AZStd::string> WriteSliceFile(
|
||||
AZStd::string_view filename,
|
||||
AZStd::vector<AZ::EntityId> entityList,
|
||||
bool makeDynamic) override;
|
||||
|
||||
private:
|
||||
using PythonBuilderWorkerPointer = AZStd::shared_ptr<PythonBuilderWorker>;
|
||||
using PythonBuilderWorkerMap = AZStd::unordered_map<AZ::Uuid, PythonBuilderWorkerPointer>;
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
#include "Source/PythonAssetBuilderSystemComponent.h"
|
||||
#include <PythonAssetBuilder/PythonAssetBuilderBus.h>
|
||||
#include <PythonAssetBuilder/PythonBuilderRequestBus.h>
|
||||
#include <AzCore/Asset/AssetCommon.h>
|
||||
#include <AssetBuilderSDK/AssetBuilderSDK.h>
|
||||
|
||||
@@ -87,65 +86,6 @@ namespace UnitTest
|
||||
&PythonAssetBuilderRequestBus::Events::GetExecutableFolder);
|
||||
EXPECT_TRUE(result.IsSuccess());
|
||||
}
|
||||
|
||||
// test bus API exists
|
||||
|
||||
TEST_F(PythonAssetBuilderTest, PythonBuilderRequestBus_CreateEditorEntity_Exists)
|
||||
{
|
||||
using namespace PythonAssetBuilder;
|
||||
|
||||
EXPECT_FALSE(PythonBuilderRequestBus::HasHandlers());
|
||||
|
||||
// Some static tests to make sure the public API has not changed since that
|
||||
// would break Python asset builders using this EBus
|
||||
{
|
||||
AZ::Outcome<AZ::EntityId, AZStd::string> result;
|
||||
AZStd::string name;
|
||||
PythonBuilderRequestBus::BroadcastResult(
|
||||
result,
|
||||
&PythonBuilderRequestBus::Events::CreateEditorEntity,
|
||||
name);
|
||||
EXPECT_FALSE(result.IsSuccess());
|
||||
}
|
||||
|
||||
m_app->RegisterComponentDescriptor(PythonAssetBuilderSystemComponent::CreateDescriptor());
|
||||
m_systemEntity->CreateComponent<PythonAssetBuilderSystemComponent>();
|
||||
m_systemEntity->Init();
|
||||
m_systemEntity->Activate();
|
||||
|
||||
EXPECT_TRUE(PythonBuilderRequestBus::HasHandlers());
|
||||
}
|
||||
|
||||
TEST_F(PythonAssetBuilderTest, PythonBuilderRequestBus_WriteSliceFile_Exists)
|
||||
{
|
||||
using namespace PythonAssetBuilder;
|
||||
|
||||
EXPECT_FALSE(PythonBuilderRequestBus::HasHandlers());
|
||||
|
||||
// Some static tests to make sure the public API has not changed since that
|
||||
// would break Python asset builders using this EBus
|
||||
{
|
||||
AZ::Outcome<AZ::Data::AssetType, AZStd::string> result;
|
||||
AZStd::string_view filename;
|
||||
AZStd::vector<AZ::EntityId> entities;
|
||||
bool makeDynamic = {};
|
||||
PythonBuilderRequestBus::BroadcastResult(
|
||||
result,
|
||||
&PythonBuilderRequestBus::Events::WriteSliceFile,
|
||||
filename,
|
||||
entities,
|
||||
makeDynamic);
|
||||
EXPECT_FALSE(result.IsSuccess());
|
||||
}
|
||||
|
||||
m_app->RegisterComponentDescriptor(PythonAssetBuilderSystemComponent::CreateDescriptor());
|
||||
m_systemEntity->CreateComponent<PythonAssetBuilderSystemComponent>();
|
||||
m_systemEntity->Init();
|
||||
m_systemEntity->Activate();
|
||||
|
||||
EXPECT_TRUE(PythonBuilderRequestBus::HasHandlers());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);
|
||||
|
||||
@@ -106,17 +106,4 @@ namespace UnitTest
|
||||
PythonBuilderNotificationBus::Event(builderId, &PythonBuilderNotificationBus::Events::OnCancel);
|
||||
EXPECT_EQ(1, mockJobHandler.m_onCancelCount);
|
||||
}
|
||||
|
||||
TEST_F(PythonBuilderProcessJobTest, PythonBuilderRequestBus_Behavior_Exists)
|
||||
{
|
||||
using namespace PythonAssetBuilder;
|
||||
using namespace AssetBuilderSDK;
|
||||
|
||||
RegisterAssetBuilder(m_app.get(), m_systemEntity);
|
||||
|
||||
auto entry = m_app->GetBehaviorContext()->m_ebuses.find("PythonBuilderRequestBus");
|
||||
ASSERT_NE(m_app->GetBehaviorContext()->m_ebuses.end(), entry);
|
||||
EXPECT_NE(entry->second->m_events.end(), entry->second->m_events.find("WriteSliceFile"));
|
||||
EXPECT_NE(entry->second->m_events.end(), entry->second->m_events.find("CreateEditorEntity"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
set(FILES
|
||||
Include/PythonAssetBuilder/PythonAssetBuilderBus.h
|
||||
Include/PythonAssetBuilder/PythonBuilderNotificationBus.h
|
||||
Include/PythonAssetBuilder/PythonBuilderRequestBus.h
|
||||
Source/PythonAssetBuilderSystemComponent.cpp
|
||||
Source/PythonAssetBuilderSystemComponent.h
|
||||
Source/PythonBuilderMessageSink.cpp
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
set(FILES
|
||||
Include/PythonAssetBuilder/PythonAssetBuilderBus.h
|
||||
Include/PythonAssetBuilder/PythonBuilderNotificationBus.h
|
||||
Include/PythonAssetBuilder/PythonBuilderRequestBus.h
|
||||
Source/PythonAssetBuilderSystemComponent.cpp
|
||||
Source/PythonAssetBuilderSystemComponent.h
|
||||
Source/PythonBuilderMessageSink.cpp
|
||||
|
||||
@@ -4,8 +4,11 @@ For complete copyright and license terms please see the LICENSE at the root of t
|
||||
|
||||
SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
"""
|
||||
import azlmbr.scene as sceneApi
|
||||
import typing
|
||||
import json
|
||||
import azlmbr.scene as sceneApi
|
||||
from enum import Enum, IntEnum
|
||||
|
||||
|
||||
# Wraps the AZ.SceneAPI.Containers.SceneGraph.NodeIndex internal class
|
||||
class SceneGraphNodeIndex:
|
||||
@@ -24,6 +27,7 @@ class SceneGraphNodeIndex:
|
||||
def equal(self, other) -> bool:
|
||||
return self.nodeIndex.Equal(other)
|
||||
|
||||
|
||||
# Wraps AZ.SceneAPI.Containers.SceneGraph.Name internal class
|
||||
class SceneGraphName():
|
||||
def __init__(self, sceneGraphName) -> None:
|
||||
@@ -35,6 +39,7 @@ class SceneGraphName():
|
||||
def get_name(self) -> str:
|
||||
return self.name.GetName()
|
||||
|
||||
|
||||
# Wraps AZ.SceneAPI.Containers.SceneGraph class
|
||||
class SceneGraph():
|
||||
def __init__(self, sceneGraphInstance) -> None:
|
||||
@@ -90,13 +95,26 @@ class SceneGraph():
|
||||
def get_node_content(self, node):
|
||||
return self.sceneGraph.GetNodeContent(node)
|
||||
|
||||
|
||||
class PrimitiveShape(IntEnum):
|
||||
BEST_FIT = 0
|
||||
SPHERE = 1
|
||||
BOX = 2
|
||||
CAPSULE = 3
|
||||
|
||||
|
||||
class DecompositionMode(IntEnum):
|
||||
VOXEL = 0
|
||||
TETRAHEDRON = 1
|
||||
|
||||
|
||||
# Contains a dictionary to contain and export AZ.SceneAPI.Containers.SceneManifest
|
||||
class SceneManifest():
|
||||
def __init__(self):
|
||||
self.manifest = {'values': []}
|
||||
|
||||
def add_mesh_group(self, name: str) -> dict:
|
||||
meshGroup = {}
|
||||
meshGroup = {}
|
||||
meshGroup['$type'] = '{07B356B7-3635-40B5-878A-FAC4EFD5AD86} MeshGroup'
|
||||
meshGroup['name'] = name
|
||||
meshGroup['nodeSelectionList'] = {'selectedNodes': [], 'unselectedNodes': []}
|
||||
@@ -272,5 +290,242 @@ class SceneManifest():
|
||||
|
||||
mesh_group['rules']['rules'].append(rule)
|
||||
|
||||
def __add_physx_base_mesh_group(self, name: str, physics_material: typing.Optional[str]) -> dict:
|
||||
import azlmbr.math
|
||||
group = {
|
||||
'$type': '{5B03C8E6-8CEE-4DA0-A7FA-CD88689DD45B} MeshGroup',
|
||||
'id': azlmbr.math.Uuid_CreateRandom().ToString(),
|
||||
'name': name,
|
||||
'NodeSelectionList': {
|
||||
'selectedNodes': [],
|
||||
'unselectedNodes': []
|
||||
},
|
||||
"MaterialSlots": [
|
||||
"Material"
|
||||
],
|
||||
"PhysicsMaterials": [
|
||||
self.__default_or_value(physics_material, "<Default Physics Material>")
|
||||
],
|
||||
"rules": {
|
||||
"rules": []
|
||||
}
|
||||
}
|
||||
self.manifest['values'].append(group)
|
||||
|
||||
return group
|
||||
|
||||
def add_physx_triangle_mesh_group(self, name: str, merge_meshes: bool = True, weld_vertices: bool = False,
|
||||
disable_clean_mesh: bool = False,
|
||||
force_32bit_indices: bool = False,
|
||||
suppress_triangle_mesh_remap_table: bool = False,
|
||||
build_triangle_adjacencies: bool = False,
|
||||
mesh_weld_tolerance: float = 0.0,
|
||||
num_tris_per_leaf: int = 4,
|
||||
physics_material: typing.Optional[str] = None) -> dict:
|
||||
"""
|
||||
Adds a Triangle type PhysX Mesh Group to the scene.
|
||||
|
||||
:param name: Name of the mesh group.
|
||||
:param merge_meshes: When true, all selected nodes will be merged into a single collision mesh.
|
||||
:param weld_vertices: When true, mesh welding is performed. Clean mesh must be enabled.
|
||||
:param disable_clean_mesh: When true, mesh cleaning is disabled. This makes cooking faster.
|
||||
:param force_32bit_indices: When true, 32-bit indices will always be created regardless of triangle count.
|
||||
:param suppress_triangle_mesh_remap_table: When true, the face remap table is not created.
|
||||
This saves a significant amount of memory, but the SDK will not be able to provide the remap
|
||||
information for internal mesh triangles returned by collisions, sweeps or raycasts hits.
|
||||
:param build_triangle_adjacencies: When true, the triangle adjacency information is created.
|
||||
:param mesh_weld_tolerance: If mesh welding is enabled, this controls the distance at
|
||||
which vertices are welded. If mesh welding is not enabled, this value defines the
|
||||
acceptance distance for mesh validation. Provided no two vertices are within this
|
||||
distance, the mesh is considered to be clean. If not, a warning will be emitted.
|
||||
:param num_tris_per_leaf: Mesh cooking hint for max triangles per leaf limit. Fewer triangles per leaf
|
||||
produces larger meshes with better runtime performance and worse cooking performance.
|
||||
:param physics_material: Configure which physics material to use.
|
||||
:return: The newly created mesh group.
|
||||
"""
|
||||
group = self.__add_physx_base_mesh_group(name, physics_material)
|
||||
group["export method"] = 0
|
||||
group["TriangleMeshAssetParams"] = {
|
||||
"MergeMeshes": merge_meshes,
|
||||
"WeldVertices": weld_vertices,
|
||||
"DisableCleanMesh": disable_clean_mesh,
|
||||
"Force32BitIndices": force_32bit_indices,
|
||||
"SuppressTriangleMeshRemapTable": suppress_triangle_mesh_remap_table,
|
||||
"BuildTriangleAdjacencies": build_triangle_adjacencies,
|
||||
"MeshWeldTolerance": mesh_weld_tolerance,
|
||||
"NumTrisPerLeaf": num_tris_per_leaf
|
||||
}
|
||||
|
||||
return group
|
||||
|
||||
def add_physx_convex_mesh_group(self, name: str, area_test_epsilon: float = 0.059, plane_tolerance: float = 0.0006,
|
||||
use_16bit_indices: bool = False,
|
||||
check_zero_area_triangles: bool = False,
|
||||
quantize_input: bool = False,
|
||||
use_plane_shifting: bool = False,
|
||||
shift_vertices: bool = False,
|
||||
gauss_map_limit: int = 32,
|
||||
build_gpu_data: bool = False,
|
||||
physics_material: typing.Optional[str] = None) -> dict:
|
||||
"""
|
||||
Adds a Convex type PhysX Mesh Group to the scene.
|
||||
|
||||
:param name: Name of the mesh group.
|
||||
:param area_test_epsilon: If the area of a triangle of the hull is below this value, the triangle will be
|
||||
rejected. This test is done only if Check Zero Area Triangles is used.
|
||||
:param plane_tolerance: The value is used during hull construction. When a new point is about to be added
|
||||
to the hull it gets dropped when the point is closer to the hull than the planeTolerance.
|
||||
:param use_16bit_indices: Denotes the use of 16-bit vertex indices in Convex triangles or polygons.
|
||||
:param check_zero_area_triangles: Checks and removes almost zero-area triangles during convex hull computation.
|
||||
The rejected area size is specified in Area Test Epsilon.
|
||||
:param quantize_input: Quantizes the input vertices using the k-means clustering.
|
||||
:param use_plane_shifting: Enables plane shifting vertex limit algorithm. Plane shifting is an alternative
|
||||
algorithm for the case when the computed hull has more vertices than the specified vertex
|
||||
limit.
|
||||
:param shift_vertices: Convex hull input vertices are shifted to be around origin to provide better
|
||||
computation stability
|
||||
:param gauss_map_limit: Vertex limit beyond which additional acceleration structures are computed for each
|
||||
convex mesh. Increase that limit to reduce memory usage. Computing the extra structures
|
||||
all the time does not guarantee optimal performance.
|
||||
:param build_gpu_data: When true, additional information required for GPU-accelerated rigid body
|
||||
simulation is created. This can increase memory usage and cooking times for convex meshes
|
||||
and triangle meshes. Convex hulls are created with respect to GPU simulation limitations.
|
||||
Vertex limit is set to 64 and vertex limit per face is internally set to 32.
|
||||
:param physics_material: Configure which physics material to use.
|
||||
:return: The newly created mesh group.
|
||||
"""
|
||||
group = self.__add_physx_base_mesh_group(name, physics_material)
|
||||
group["export method"] = 1
|
||||
group["ConvexAssetParams"] = {
|
||||
"AreaTestEpsilon": area_test_epsilon,
|
||||
"PlaneTolerance": plane_tolerance,
|
||||
"Use16bitIndices": use_16bit_indices,
|
||||
"CheckZeroAreaTriangles": check_zero_area_triangles,
|
||||
"QuantizeInput": quantize_input,
|
||||
"UsePlaneShifting": use_plane_shifting,
|
||||
"ShiftVertices": shift_vertices,
|
||||
"GaussMapLimit": gauss_map_limit,
|
||||
"BuildGpuData": build_gpu_data
|
||||
}
|
||||
|
||||
return group
|
||||
|
||||
def add_physx_primitive_mesh_group(self, name: str,
|
||||
primitive_shape_target: PrimitiveShape = PrimitiveShape.BEST_FIT,
|
||||
volume_term_coefficient: float = 0.0,
|
||||
physics_material: typing.Optional[str] = None) -> dict:
|
||||
"""
|
||||
Adds a Primitive Shape type PhysX Mesh Group to the scene
|
||||
|
||||
:param name: Name of the mesh group.
|
||||
:param primitive_shape_target: The shape that should be fitted to this mesh. If BEST_FIT is selected, the
|
||||
algorithm will determine which of the shapes fits best.
|
||||
:param volume_term_coefficient: This parameter controls how aggressively the primitive fitting algorithm will try
|
||||
to minimize the volume of the fitted primitive. A value of 0 (no volume minimization) is
|
||||
recommended for most meshes, especially those with moderate to high vertex counts.
|
||||
:param physics_material: Configure which physics material to use.
|
||||
:return: The newly created mesh group.
|
||||
"""
|
||||
group = self.__add_physx_base_mesh_group(name, physics_material)
|
||||
group["export method"] = 2
|
||||
group["PrimitiveAssetParams"] = {
|
||||
"PrimitiveShapeTarget": int(primitive_shape_target),
|
||||
"VolumeTermCoefficient": volume_term_coefficient
|
||||
}
|
||||
|
||||
return group
|
||||
|
||||
def physx_mesh_group_decompose_meshes(self, mesh_group: dict, max_convex_hulls: int = 1024,
|
||||
max_num_vertices_per_convex_hull: int = 64,
|
||||
concavity: float = .001,
|
||||
resolution: float = 100000,
|
||||
mode: DecompositionMode = DecompositionMode.VOXEL,
|
||||
alpha: float = .05,
|
||||
beta: float = .05,
|
||||
min_volume_per_convex_hull: float = 0.0001,
|
||||
plane_downsampling: int = 4,
|
||||
convex_hull_downsampling: int = 4,
|
||||
pca: bool = False,
|
||||
project_hull_vertices: bool = True) -> None:
|
||||
"""
|
||||
Enables and configures mesh decomposition for a PhysX Mesh Group.
|
||||
Only valid for convex or primitive mesh types.
|
||||
|
||||
:param mesh_group: Mesh group to configure decomposition for.
|
||||
:param max_convex_hulls: Controls the maximum number of hulls to generate.
|
||||
:param max_num_vertices_per_convex_hull: Controls the maximum number of triangles per convex hull.
|
||||
:param concavity: Maximum concavity of each approximate convex hull.
|
||||
:param resolution: Maximum number of voxels generated during the voxelization stage.
|
||||
:param mode: Select voxel-based approximate convex decomposition or tetrahedron-based
|
||||
approximate convex decomposition.
|
||||
:param alpha: Controls the bias toward clipping along symmetry planes.
|
||||
:param beta: Controls the bias toward clipping along revolution axes.
|
||||
:param min_volume_per_convex_hull: Controls the adaptive sampling of the generated convex hulls.
|
||||
:param plane_downsampling: Controls the granularity of the search for the best clipping plane.
|
||||
:param convex_hull_downsampling: Controls the precision of the convex hull generation process
|
||||
during the clipping plane selection stage.
|
||||
:param pca: Enable or disable normalizing the mesh before applying the convex decomposition.
|
||||
:param project_hull_vertices: Project the output convex hull vertices onto the original source mesh to increase
|
||||
the floating point accuracy of the results.
|
||||
"""
|
||||
mesh_group['DecomposeMeshes'] = True
|
||||
mesh_group['ConvexDecompositionParams'] = {
|
||||
"MaxConvexHulls": max_convex_hulls,
|
||||
"MaxNumVerticesPerConvexHull": max_num_vertices_per_convex_hull,
|
||||
"Concavity": concavity,
|
||||
"Resolution": resolution,
|
||||
"Mode": int(mode),
|
||||
"Alpha": alpha,
|
||||
"Beta": beta,
|
||||
"MinVolumePerConvexHull": min_volume_per_convex_hull,
|
||||
"PlaneDownsampling": plane_downsampling,
|
||||
"ConvexHullDownsampling": convex_hull_downsampling,
|
||||
"PCA": pca,
|
||||
"ProjectHullVertices": project_hull_vertices
|
||||
}
|
||||
|
||||
def physx_mesh_group_add_selected_node(self, mesh_group: dict, node: str) -> None:
|
||||
"""
|
||||
Adds a node to the selected nodes list
|
||||
|
||||
:param mesh_group: Mesh group to add to.
|
||||
:param node: Node path to add.
|
||||
"""
|
||||
mesh_group['NodeSelectionList']['selectedNodes'].append(node)
|
||||
|
||||
def physx_mesh_group_add_unselected_node(self, mesh_group: dict, node: str) -> None:
|
||||
"""
|
||||
Adds a node to the unselected nodes list
|
||||
|
||||
:param mesh_group: Mesh group to add to.
|
||||
:param node: Node path to add.
|
||||
"""
|
||||
mesh_group['NodeSelectionList']['unselectedNodes'].append(node)
|
||||
|
||||
def physx_mesh_group_add_selected_unselected_nodes(self, mesh_group: dict, selected: typing.List[str],
|
||||
unselected: typing.List[str]) -> None:
|
||||
"""
|
||||
Adds a set of nodes to the selected/unselected node lists
|
||||
|
||||
:param mesh_group: Mesh group to add to.
|
||||
:param selected: List of node paths to add to the selected list.
|
||||
:param unselected: List of node paths to add to the unselected list.
|
||||
"""
|
||||
mesh_group['NodeSelectionList']['selectedNodes'].extend(selected)
|
||||
mesh_group['NodeSelectionList']['unselectedNodes'].extend(unselected)
|
||||
|
||||
def physx_mesh_group_add_comment(self, mesh_group: dict, comment: str) -> None:
|
||||
"""
|
||||
Adds a comment rule
|
||||
|
||||
:param mesh_group: Mesh group to add the rule to.
|
||||
:param comment: Comment string.
|
||||
"""
|
||||
rule = {
|
||||
"$type": "CommentRule",
|
||||
"comment": comment
|
||||
}
|
||||
mesh_group['rules']['rules'].append(rule)
|
||||
|
||||
def export(self):
|
||||
return json.dumps(self.manifest)
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "AuthorityToAutonomousNoParams Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Authority To Autonomous No Params Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "AuthorityToAutonomousNoParams Notify Event",
|
||||
"details": {
|
||||
"name": "AuthorityToAutonomousNoParams Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "AuthorityToAutonomous Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Authority To Autonomous Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "someFloat",
|
||||
"details": {
|
||||
"name": "someFloat"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToAutonomous Notify Event",
|
||||
"details": {
|
||||
"name": "AuthorityToAutonomous Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "AuthorityToClientNoParams Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Authority To Client No Params Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "AuthorityToClientNoParams Notify Event",
|
||||
"details": {
|
||||
"name": "AuthorityToClientNoParams Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "AuthorityToClient Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Authority To Client Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "someFloat",
|
||||
"details": {
|
||||
"name": "someFloat"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToClient Notify Event",
|
||||
"details": {
|
||||
"name": "AuthorityToClient Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "AutonomousToAuthorityNoParams Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Autonomous To Authority No Params Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "AutonomousToAuthorityNoParams Notify Event",
|
||||
"details": {
|
||||
"name": "AutonomousToAuthorityNoParams Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "AutonomousToAuthority Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Autonomous To Authority Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "someFloat",
|
||||
"details": {
|
||||
"name": "someFloat"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "AutonomousToAuthority Notify Event",
|
||||
"details": {
|
||||
"name": "AutonomousToAuthority Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "ServerToAuthorityNoParam Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Server To Authority No Param Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "ServerToAuthorityNoParam Notify Event",
|
||||
"details": {
|
||||
"name": "ServerToAuthorityNoParam Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "ServerToAuthority Notify Event",
|
||||
"context": "AZEventHandler",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Server To Authority Notify Event"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "someFloat",
|
||||
"details": {
|
||||
"name": "someFloat"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "ServerToAuthority Notify Event",
|
||||
"details": {
|
||||
"name": "ServerToAuthority Notify Event"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Connect",
|
||||
"details": {
|
||||
"name": "Connect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Disconnect",
|
||||
"details": {
|
||||
"name": "Disconnect"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Connected",
|
||||
"details": {
|
||||
"name": "On Connected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "On Disconnected",
|
||||
"details": {
|
||||
"name": "On Disconnected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "OnEvent",
|
||||
"details": {
|
||||
"name": "OnEvent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "Entity Transform",
|
||||
"context": "BehaviorClass",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Entity Transform"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"base": "Rotate",
|
||||
"context": "Entity Transform",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Rotate"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Rotate is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Entity Transform::Rotate",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "const EntityId&",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}",
|
||||
"details": {
|
||||
"name": "const Vector3&"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -5,8 +5,7 @@
|
||||
"context": "BehaviorClass",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Material Data",
|
||||
"category": "Rendering"
|
||||
"name": "Material Data"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
@@ -433,6 +432,7 @@
|
||||
},
|
||||
{
|
||||
"base": "GetNormal",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Normal"
|
||||
},
|
||||
@@ -440,13 +440,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Normal"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetDiffuse",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Diffuse"
|
||||
},
|
||||
@@ -454,13 +455,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Diffuse"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetSpecular",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Specular"
|
||||
},
|
||||
@@ -468,13 +470,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Specular"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetBump",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Bump"
|
||||
},
|
||||
@@ -482,13 +485,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Bump"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetEmissive",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Emissive"
|
||||
},
|
||||
@@ -496,13 +500,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Emissive"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetRoughness",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Roughness"
|
||||
},
|
||||
@@ -510,13 +515,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Roughness"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetBaseColor",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Base Color"
|
||||
},
|
||||
@@ -524,13 +530,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Base Color"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetAmbientOcclusion",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Ambient Occlusion"
|
||||
},
|
||||
@@ -538,13 +545,14 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Ambient Occlusion"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "GetMetallic",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "Get Metallic"
|
||||
},
|
||||
@@ -552,7 +560,7 @@
|
||||
{
|
||||
"typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}",
|
||||
"details": {
|
||||
"name": "int"
|
||||
"name": "Metallic"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,438 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "NetworkTestPlayerComponent",
|
||||
"context": "BehaviorClass",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"base": "AutonomousToAuthority",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Autonomous To Authority"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Autonomous To Authority is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Autonomous To Authority"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ServerToAuthority",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Server To Authority"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Server To Authority is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Server To Authority"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AutonomousToAuthorityByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Autonomous To Authority By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Autonomous To Authority By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Autonomous To Authority By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "some Float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ServerToAuthorityByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Server To Authority By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Server To Authority By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Server To Authority By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "some Float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AutonomousToAuthorityNoParams",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Autonomous To Authority No Params"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Autonomous To Authority No Params is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Autonomous To Authority No Params"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToAutonomous",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Autonomous"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Autonomous is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Autonomous"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToClientNoParams",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Client No Params"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Client No Params is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Client No Params"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToClientByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Client By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Client By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Client By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "some Float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToClient",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Client"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Client is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Client"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToAutonomousNoParams",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Autonomous No Params"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Autonomous No Params is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Autonomous No Params"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ServerToAuthorityNoParamByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Server To Authority No Param By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Server To Authority No Param By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Server To Authority No Param By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToClientNoParamsByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Client No Params By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Client No Params By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Client No Params By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToAutonomousByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Autonomous By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Autonomous By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Autonomous By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "some Float"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AutonomousToAuthorityNoParamsByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Autonomous To Authority No Params By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Autonomous To Authority No Params By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Autonomous To Authority No Params By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AuthorityToAutonomousNoParamsByEntityId",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Authority To Autonomous No Params By Entity Id"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Authority To Autonomous No Params By Entity Id is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Authority To Autonomous No Params By Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Source",
|
||||
"tooltip": "The Source containing the NetworkTestPlayerComponentController"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ServerToAuthorityNoParam",
|
||||
"context": "NetworkTestPlayerComponent",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Server To Authority No Param"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Server To Authority No Param is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Server To Authority No Param"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{CA5E5C37-98A6-04D2-E15C-1B4BFEE4C7DD}",
|
||||
"details": {
|
||||
"name": "Network Test Player Component"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
-17
@@ -5,8 +5,7 @@
|
||||
"context": "BehaviorClass",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Network Test Player Component Network Input",
|
||||
"category": "Automated Testing"
|
||||
"name": "Network Test Player Component Network Input"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
@@ -27,13 +26,7 @@
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "Forward Back"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "Left Right"
|
||||
"name": "left Right"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -47,9 +40,9 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "FwdBack",
|
||||
"base": "GetFwdBack",
|
||||
"details": {
|
||||
"name": "Get Forward Back"
|
||||
"name": "Get Fwd Back"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
@@ -63,15 +56,15 @@
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "Forward Back"
|
||||
"name": "Fwd Back"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "FwdBack",
|
||||
"base": "SetFwdBack",
|
||||
"details": {
|
||||
"name": "Set Forward Back"
|
||||
"name": "Set Fwd Back"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
@@ -83,13 +76,13 @@
|
||||
{
|
||||
"typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
|
||||
"details": {
|
||||
"name": "Forward Back"
|
||||
"name": "Fwd Back"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "LeftRight",
|
||||
"base": "GetLeftRight",
|
||||
"details": {
|
||||
"name": "Get Left Right"
|
||||
},
|
||||
@@ -111,7 +104,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "LeftRight",
|
||||
"base": "SetLeftRight",
|
||||
"details": {
|
||||
"name": "Set Left Right"
|
||||
},
|
||||
|
||||
@@ -5,19 +5,32 @@
|
||||
"context": "BehaviorClass",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "ReferenceShapeConfig"
|
||||
"name": "Reference Shape Config"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"base": "shapeEntityId",
|
||||
"base": "GetshapeEntityId",
|
||||
"context": "Getter",
|
||||
"details": {
|
||||
"name": "ReferenceShapeConfig::shapeEntityId::Getter"
|
||||
"name": "Getshape Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{3E49974D-2EE0-4AF9-92B9-229A22B515C3}",
|
||||
"details": {
|
||||
"name": "ReferenceShapeConfig*"
|
||||
"name": "Vegetation Reference Shape"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "",
|
||||
"details": {
|
||||
"name": "shape Entity Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "",
|
||||
"details": {
|
||||
"name": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -25,28 +38,29 @@
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "EntityId&",
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "shapeEntityId",
|
||||
"base": "SetshapeEntityId",
|
||||
"context": "Setter",
|
||||
"details": {
|
||||
"name": "ReferenceShapeConfig::shapeEntityId::Setter"
|
||||
"name": "Setshape Entity Id"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{3E49974D-2EE0-4AF9-92B9-229A22B515C3}",
|
||||
"details": {
|
||||
"name": "ReferenceShapeConfig*"
|
||||
"name": "Vegetation Reference Shape"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "const EntityId&",
|
||||
"name": "shape Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,471 +0,0 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "Unit Testing",
|
||||
"context": "BehaviorClass",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Unit Testing",
|
||||
"category": "Tests"
|
||||
},
|
||||
"methods": [
|
||||
{
|
||||
"base": "ExpectLessThanEqual",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectLessThanEqual"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectLessThanEqual is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Expect Less Than Equal",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "Candidate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "Reference"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ExpectGreaterThanEqual",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectGreaterThanEqual"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectGreaterThanEqual is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Unit Testing::Expect Greater Than Equal",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "Candidate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "Reference"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "MarkComplete",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke MarkComplete"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after MarkComplete is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Mark Complete",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ExpectTrue",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectTrue"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectTrue is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Expect True",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}",
|
||||
"details": {
|
||||
"name": "Candidate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "Checkpoint",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Checkpoint"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Checkpoint is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Checkpoint",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ExpectFalse",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectFalse"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectFalse is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Expect False",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}",
|
||||
"details": {
|
||||
"name": "Candidate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ExpectEqual",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectEqual"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectEqual is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Expect Equal",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}",
|
||||
"details": {
|
||||
"name": "Candidate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}",
|
||||
"details": {
|
||||
"name": "Reference"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ExpectLessThan",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectLessThan"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectLessThan is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Expect Less Than",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "Candidate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "Reference"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AddSuccess",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke Add Success"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after Add Success is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Add Success",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ExpectNotEqual",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectNotEqual"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectNotEqual is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Expect Not Equal",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}",
|
||||
"details": {
|
||||
"name": "Aabb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}",
|
||||
"details": {
|
||||
"name": "Aabb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "ExpectGreaterThan",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke ExpectGreaterThan"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after ExpectGreaterThan is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Expect Greater Than",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "double"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}",
|
||||
"details": {
|
||||
"name": "double"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"base": "AddFailure",
|
||||
"context": "Unit Testing",
|
||||
"entry": {
|
||||
"name": "In",
|
||||
"tooltip": "When signaled, this will invoke AddFailure"
|
||||
},
|
||||
"exit": {
|
||||
"name": "Out",
|
||||
"tooltip": "Signaled after AddFailure is invoked"
|
||||
},
|
||||
"details": {
|
||||
"name": "Add Failure",
|
||||
"category": "Other"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}",
|
||||
"details": {
|
||||
"name": "Entity Id",
|
||||
"tooltip": "Entity Unique Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}",
|
||||
"details": {
|
||||
"name": "Report"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -7,31 +7,30 @@
|
||||
"details": {
|
||||
"name": "Add Element at End",
|
||||
"category": "Containers",
|
||||
"tooltip": "Adds the provided element at the end of the container",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Adds the provided element at the end of the container"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Container",
|
||||
"base": "DataOutput_Container_0",
|
||||
"details": {
|
||||
"name": "Container"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Input signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out",
|
||||
"tooltip": "Output signal"
|
||||
|
||||
@@ -7,30 +7,29 @@
|
||||
"details": {
|
||||
"name": "Clear All Elements",
|
||||
"category": "Containers",
|
||||
"tooltip": "Eliminates all the elements in the container",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Eliminates all the elements in the container"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Container",
|
||||
"base": "DataOutput_Container_0",
|
||||
"details": {
|
||||
"name": "Container"
|
||||
}
|
||||
|
||||
@@ -7,38 +7,37 @@
|
||||
"details": {
|
||||
"name": "Erase",
|
||||
"category": "Containers",
|
||||
"tooltip": "Erase the element at the specified Index or with the specified Key",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Erase the element at the specified Index or with the specified Key"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Container",
|
||||
"base": "DataOutput_Container_0",
|
||||
"details": {
|
||||
"name": "Container"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Input signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out",
|
||||
"tooltip": "Output signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Element Not Found",
|
||||
"base": "Output_Element Not Found_1",
|
||||
"details": {
|
||||
"name": "Element Not Found",
|
||||
"tooltip": "Triggered if the specified element was not found"
|
||||
|
||||
@@ -11,34 +11,34 @@
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Signaled upon node entry"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Break",
|
||||
"base": "Input_Break_1",
|
||||
"details": {
|
||||
"name": "Break",
|
||||
"tooltip": "Stops the iteration when signaled"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Each",
|
||||
"base": "Output_Each_0",
|
||||
"details": {
|
||||
"name": "Each",
|
||||
"tooltip": "Signalled after each element of the container"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Finished",
|
||||
"base": "Output_Finished_1",
|
||||
"details": {
|
||||
"name": "Finished",
|
||||
"tooltip": "The container has been fully iterated over"
|
||||
|
||||
@@ -7,32 +7,31 @@
|
||||
"details": {
|
||||
"name": "Get Element",
|
||||
"category": "Containers",
|
||||
"tooltip": "Returns the element at the specified Index or Key",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Returns the element at the specified Index or Key"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Input signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out",
|
||||
"tooltip": "Output signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Key Not Found",
|
||||
"base": "Output_Key Not Found_1",
|
||||
"details": {
|
||||
"name": "Key Not Found",
|
||||
"tooltip": "Triggered if the specified key was not found"
|
||||
|
||||
@@ -7,25 +7,24 @@
|
||||
"details": {
|
||||
"name": "Get First Element",
|
||||
"category": "Containers",
|
||||
"tooltip": "Retrieves the first element in the container",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Retrieves the first element in the container"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Input signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out",
|
||||
"tooltip": "Output signal"
|
||||
|
||||
@@ -7,25 +7,24 @@
|
||||
"details": {
|
||||
"name": "Get Last Element",
|
||||
"category": "Containers",
|
||||
"tooltip": "Get Last Element",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Get Last Element"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Input signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out",
|
||||
"tooltip": "Output signal"
|
||||
|
||||
@@ -7,30 +7,29 @@
|
||||
"details": {
|
||||
"name": "Get Size",
|
||||
"category": "Containers",
|
||||
"tooltip": "Get the number of elements in the specified container",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Get the number of elements in the specified container"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataOutput_Size",
|
||||
"base": "DataOutput_Size_0",
|
||||
"details": {
|
||||
"name": "Size"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
|
||||
@@ -7,31 +7,30 @@
|
||||
"details": {
|
||||
"name": "Insert",
|
||||
"category": "Containers",
|
||||
"tooltip": "Inserts an element into the container at the specified Index or Key",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Inserts an element into the container at the specified Index or Key"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Container",
|
||||
"base": "DataOutput_Container_0",
|
||||
"details": {
|
||||
"name": "Container"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Input signal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out",
|
||||
"tooltip": "Output signal"
|
||||
|
||||
@@ -7,44 +7,43 @@
|
||||
"details": {
|
||||
"name": "Is Empty",
|
||||
"category": "Containers",
|
||||
"tooltip": "Returns whether the container is empty",
|
||||
"subtitle": "Containers"
|
||||
"tooltip": "Returns whether the container is empty"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "DataOutput_Is Empty",
|
||||
"base": "DataOutput_Is Empty_0",
|
||||
"details": {
|
||||
"name": "Is Empty"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_True",
|
||||
"base": "Output_True_1",
|
||||
"details": {
|
||||
"name": "True",
|
||||
"tooltip": "The container is empty"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_False",
|
||||
"base": "Output_False_2",
|
||||
"details": {
|
||||
"name": "False",
|
||||
"tooltip": "The container is not empty"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
|
||||
@@ -11,35 +11,35 @@
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_Connect",
|
||||
"base": "Input_Connect_0",
|
||||
"details": {
|
||||
"name": "Connect",
|
||||
"tooltip": "Connect the AZ Event to this AZ Event Handler."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Disconnect",
|
||||
"base": "Input_Disconnect_1",
|
||||
"details": {
|
||||
"name": "Disconnect",
|
||||
"tooltip": "Disconnect current AZ Event from this AZ Event Handler."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Connected",
|
||||
"base": "Output_On Connected_0",
|
||||
"details": {
|
||||
"name": "On Connected",
|
||||
"tooltip": "Signaled when a connection has taken place."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Disconnected",
|
||||
"base": "Output_On Disconnected_1",
|
||||
"details": {
|
||||
"name": "On Disconnected",
|
||||
"tooltip": "Signaled when this event handler is disconnected."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_OnEvent",
|
||||
"base": "Output_OnEvent_2",
|
||||
"details": {
|
||||
"name": "OnEvent",
|
||||
"tooltip": "Triggered when the AZ Event invokes Signal() function."
|
||||
|
||||
@@ -11,35 +11,35 @@
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_Connect",
|
||||
"base": "Input_Connect_0",
|
||||
"details": {
|
||||
"name": "Connect",
|
||||
"tooltip": "Connect this event handler to the specified entity."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Disconnect",
|
||||
"base": "Input_Disconnect_1",
|
||||
"details": {
|
||||
"name": "Disconnect",
|
||||
"tooltip": "Disconnect this event handler."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_OnConnected",
|
||||
"base": "Output_OnConnected_0",
|
||||
"details": {
|
||||
"name": "OnConnected",
|
||||
"tooltip": "Signaled when a connection has taken place."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_OnDisconnected",
|
||||
"base": "Output_OnDisconnected_1",
|
||||
"details": {
|
||||
"name": "OnDisconnected",
|
||||
"tooltip": "Signaled when this event handler is disconnected."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_OnFailure",
|
||||
"base": "Output_OnFailure_2",
|
||||
"details": {
|
||||
"name": "OnFailure",
|
||||
"tooltip": "Signaled when it is not possible to connect this handler."
|
||||
|
||||
@@ -7,18 +7,17 @@
|
||||
"details": {
|
||||
"name": "Function Definition",
|
||||
"category": "Core",
|
||||
"tooltip": "Represents either an execution entry or exit node.",
|
||||
"subtitle": "Core"
|
||||
"tooltip": "Represents either an execution entry or exit node."
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_ ",
|
||||
"base": "Input_ _0",
|
||||
"details": {
|
||||
"name": " "
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_ ",
|
||||
"base": "Output_ _0",
|
||||
"details": {
|
||||
"name": " "
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "MethodOverloaded",
|
||||
"name": "Method Overloaded",
|
||||
"category": "Core",
|
||||
"tooltip": "MethodOverloaded"
|
||||
}
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
"details": {
|
||||
"name": "Nodeling",
|
||||
"category": "Core",
|
||||
"tooltip": "Represents either an execution entry or exit node",
|
||||
"subtitle": "Core"
|
||||
"tooltip": "Represents either an execution entry or exit node"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -11,35 +11,35 @@
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_Connect",
|
||||
"base": "Input_Connect_0",
|
||||
"details": {
|
||||
"name": "Connect",
|
||||
"tooltip": "Connect this event handler to the specified entity."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Disconnect",
|
||||
"base": "Input_Disconnect_1",
|
||||
"details": {
|
||||
"name": "Disconnect",
|
||||
"tooltip": "Disconnect this event handler."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_OnConnected",
|
||||
"base": "Output_OnConnected_0",
|
||||
"details": {
|
||||
"name": "OnConnected",
|
||||
"tooltip": "Signaled when a connection has taken place."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_OnDisconnected",
|
||||
"base": "Output_OnDisconnected_1",
|
||||
"details": {
|
||||
"name": "OnDisconnected",
|
||||
"tooltip": "Signaled when this event handler is disconnected."
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_OnFailure",
|
||||
"base": "Output_OnFailure_2",
|
||||
"details": {
|
||||
"name": "OnFailure",
|
||||
"tooltip": "Signaled when it is not possible to connect this handler."
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In",
|
||||
"tooltip": "Fires the specified ScriptEvent when signaled"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out",
|
||||
"tooltip": "Trigged after the ScriptEvent has been signaled and returns"
|
||||
|
||||
@@ -7,38 +7,37 @@
|
||||
"details": {
|
||||
"name": "Add",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Add (+), it provides contextual type and slots",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Add (+), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Matrix3x3: A",
|
||||
"base": "DataInput_A_0",
|
||||
"details": {
|
||||
"name": "Matrix3x3: A"
|
||||
"name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Matrix3x3: B",
|
||||
"base": "DataInput_B_1",
|
||||
"details": {
|
||||
"name": "Matrix3x3: B"
|
||||
"name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Matrix3x3",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Matrix3x3"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -5,40 +5,39 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "DivideByNumber",
|
||||
"name": "Divide By Number",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "returns matrix created from multiply the source matrix by 1/Divisor",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "returns matrix created from multiply the source matrix by 1/Divisor"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Matrix3x3: Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Matrix3x3: Source"
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Number: Divisor",
|
||||
"base": "DataInput_Divisor_1",
|
||||
"details": {
|
||||
"name": "Number: Divisor"
|
||||
"name": "Divisor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Matrix3x3",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Matrix3x3"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,44 +1,43 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "{57BA2085-2225-5E7E-B132-9CCD0AFC55EA}",
|
||||
"base": "{DF3A38B7-2C72-5CE5-BB8C-3293C7431F60}",
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "DivideByVector",
|
||||
"name": "Divide By Vector",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Divide (/), it provides contextual type and slot configurations.",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Divide (/), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Vector3: Numerator",
|
||||
"base": "DataInput_Numerator_0",
|
||||
"details": {
|
||||
"name": "Vector3: Numerator"
|
||||
"name": "Numerator"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Vector3: Divisor",
|
||||
"base": "DataInput_Divisor_1",
|
||||
"details": {
|
||||
"name": "Vector3: Divisor"
|
||||
"name": "Divisor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Vector3",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Vector3"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -7,32 +7,31 @@
|
||||
"details": {
|
||||
"name": "Length",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use the Length node, it provides contextual type and slot configurations",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use the Length node, it provides contextual type and slot configurations"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Quaternion: Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Quaternion: Source"
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Number",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Number"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -5,40 +5,39 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "MultiplyByColor",
|
||||
"name": "Multiply By Color",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Color: A",
|
||||
"base": "DataInput_A_0",
|
||||
"details": {
|
||||
"name": "Color: A"
|
||||
"name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Color: B",
|
||||
"base": "DataInput_B_1",
|
||||
"details": {
|
||||
"name": "Color: B"
|
||||
"name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Color",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Color"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+11
-12
@@ -1,44 +1,43 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "{FDB0FF00-F185-5CCF-851A-BBD5116C43EC}",
|
||||
"base": "{29187DB1-2573-5243-86EB-190B64E00C54}",
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "MultiplyByMatrix",
|
||||
"name": "Multiply By Matrix",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Matrix3x3: A",
|
||||
"base": "DataInput_A_0",
|
||||
"details": {
|
||||
"name": "Matrix3x3: A"
|
||||
"name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Matrix3x3: B",
|
||||
"base": "DataInput_B_1",
|
||||
"details": {
|
||||
"name": "Matrix3x3: B"
|
||||
"name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Matrix3x3",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Matrix3x3"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+10
-11
@@ -5,40 +5,39 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "MultiplyByRotation",
|
||||
"name": "Multiply By Rotation",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Quaternion: A",
|
||||
"base": "DataInput_A_0",
|
||||
"details": {
|
||||
"name": "Quaternion: A"
|
||||
"name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Quaternion: B",
|
||||
"base": "DataInput_B_1",
|
||||
"details": {
|
||||
"name": "Quaternion: B"
|
||||
"name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Quaternion",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Quaternion"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+10
-11
@@ -5,40 +5,39 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "MultiplyByTransform",
|
||||
"name": "Multiply By Transform",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Transform: A",
|
||||
"base": "DataInput_A_0",
|
||||
"details": {
|
||||
"name": "Transform: A"
|
||||
"name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Transform: B",
|
||||
"base": "DataInput_B_1",
|
||||
"details": {
|
||||
"name": "Transform: B"
|
||||
"name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Transform",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Transform"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+10
-11
@@ -5,40 +5,39 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "MultiplyByVector",
|
||||
"name": "Multiply By Vector",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Multiply (*), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Vector4: Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Vector4: Source"
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Vector4: Multiplier",
|
||||
"base": "DataInput_Multiplier_1",
|
||||
"details": {
|
||||
"name": "Vector4: Multiplier"
|
||||
"name": "Multiplier"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Vector4",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Vector4"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -7,32 +7,31 @@
|
||||
"details": {
|
||||
"name": "Negate",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "returns Source with every element multiplied by -1",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "returns Source with every element multiplied by -1"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Color: Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Color: Source"
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Color",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Color"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,44 +1,43 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "{C94009EE-73ED-5CA2-B1AC-026EB08D1EF5}",
|
||||
"base": "{36F01867-D157-5540-ADB8-3E71F96D2187}",
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Subtract",
|
||||
"category": "Deprecated",
|
||||
"tooltip": "This node is deprecated, use Subtract (-), it provides contextual type and slots",
|
||||
"subtitle": "Deprecated"
|
||||
"tooltip": "This node is deprecated, use Subtract (-), it provides contextual type and slots"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Vector3: A",
|
||||
"base": "DataInput_A_0",
|
||||
"details": {
|
||||
"name": "Vector3: A"
|
||||
"name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Vector3: B",
|
||||
"base": "DataInput_B_1",
|
||||
"details": {
|
||||
"name": "Vector3: B"
|
||||
"name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result: Vector3",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result: Vector3"
|
||||
"name": "Result"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "WrapperMock",
|
||||
"name": "Wrapper Mock",
|
||||
"category": "Developer",
|
||||
"tooltip": "Node for Mocking Wrapper Node visuals"
|
||||
}
|
||||
|
||||
+6
-6
@@ -7,35 +7,35 @@
|
||||
"details": {
|
||||
"name": "Get Entity Forward",
|
||||
"category": "Entity/Entity",
|
||||
"tooltip": "Returns the forward direction vector from the specified entity' world transform, scaled by a given value (O3DE uses Z up, right handed)"
|
||||
"tooltip": "returns the forward direction vector from the specified entity' world transform, scaled by a given value (O3DE uses Z up, right handed)"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_EntityId",
|
||||
"base": "DataInput_EntityId_0",
|
||||
"details": {
|
||||
"name": "EntityId"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Scale",
|
||||
"base": "DataInput_Scale_1",
|
||||
"details": {
|
||||
"name": "Scale"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result"
|
||||
}
|
||||
|
||||
@@ -7,35 +7,35 @@
|
||||
"details": {
|
||||
"name": "Get Entity Right",
|
||||
"category": "Entity/Entity",
|
||||
"tooltip": "Returns the right direction vector from the specified entity's world transform, scaled by a given value (O3DE uses Z up, right handed)"
|
||||
"tooltip": "returns the right direction vector from the specified entity's world transform, scaled by a given value (O3DE uses Z up, right handed)"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_EntityId",
|
||||
"base": "DataInput_EntityId_0",
|
||||
"details": {
|
||||
"name": "EntityId"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Scale",
|
||||
"base": "DataInput_Scale_1",
|
||||
"details": {
|
||||
"name": "Scale"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result"
|
||||
}
|
||||
|
||||
@@ -7,35 +7,35 @@
|
||||
"details": {
|
||||
"name": "Get Entity Up",
|
||||
"category": "Entity/Entity",
|
||||
"tooltip": "Returns the up direction vector from the specified entity's world transform, scaled by a given value (O3DE uses Z up, right handed)"
|
||||
"tooltip": "returns the up direction vector from the specified entity's world transform, scaled by a given value (O3DE uses Z up, right handed)"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_EntityId",
|
||||
"base": "DataInput_EntityId_0",
|
||||
"details": {
|
||||
"name": "EntityId"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Scale",
|
||||
"base": "DataInput_Scale_1",
|
||||
"details": {
|
||||
"name": "Scale"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result"
|
||||
}
|
||||
|
||||
@@ -7,29 +7,29 @@
|
||||
"details": {
|
||||
"name": "Is Active",
|
||||
"category": "Entity/Entity",
|
||||
"tooltip": "Returns true if entity with the provided Id is valid and active."
|
||||
"tooltip": "returns true if entity with the provided Id is valid and active."
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Entity Id",
|
||||
"base": "DataInput_Entity Id_0",
|
||||
"details": {
|
||||
"name": "Entity Id"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result"
|
||||
}
|
||||
|
||||
@@ -7,29 +7,29 @@
|
||||
"details": {
|
||||
"name": "Is Valid",
|
||||
"category": "Entity/Entity",
|
||||
"tooltip": "Returns true if Source is valid, else false"
|
||||
"tooltip": "returns true if Source is valid, else false"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result"
|
||||
}
|
||||
|
||||
@@ -7,29 +7,29 @@
|
||||
"details": {
|
||||
"name": "To String",
|
||||
"category": "Entity/Entity",
|
||||
"tooltip": "Returns a string representation of Source"
|
||||
"tooltip": "returns a string representation of Source"
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_Out",
|
||||
"base": "Output_Out_0",
|
||||
"details": {
|
||||
"name": "Out"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Source",
|
||||
"base": "DataInput_Source_0",
|
||||
"details": {
|
||||
"name": "Source"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result",
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result"
|
||||
}
|
||||
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"base": "{FDD3D684-2C9A-0C05-D2A3-FD67685D8F26}",
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "Branch Input Type Example",
|
||||
"category": "Examples",
|
||||
"tooltip": "Example of branch passing as input by value, pointer and reference."
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_Get Internal Vector_0",
|
||||
"details": {
|
||||
"name": "Get Internal Vector"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Get Internal Vector_0",
|
||||
"details": {
|
||||
"name": "On Get Internal Vector"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Result_0",
|
||||
"details": {
|
||||
"name": "Result"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Branches On Input Type_1",
|
||||
"details": {
|
||||
"name": "Branches On Input Type"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Input Type_0",
|
||||
"details": {
|
||||
"name": "Input Type"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_By Value_1",
|
||||
"details": {
|
||||
"name": "By Value"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Value Input_1",
|
||||
"details": {
|
||||
"name": "Value Input"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_By Pointer_2",
|
||||
"details": {
|
||||
"name": "By Pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Pointer Input_2",
|
||||
"details": {
|
||||
"name": "Pointer Input"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+12
-13
@@ -5,62 +5,61 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "InputTypeExample",
|
||||
"category": "Tests",
|
||||
"tooltip": "Example of passing as input by value, pointer and reference.",
|
||||
"subtitle": "Tests"
|
||||
"name": "Input Type Example",
|
||||
"category": "Examples",
|
||||
"tooltip": "Example of passing as input by value, pointer and reference."
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_Clear By Value",
|
||||
"base": "Input_Clear By Value_0",
|
||||
"details": {
|
||||
"name": "Clear By Value"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Value Input",
|
||||
"base": "DataInput_Value Input_0",
|
||||
"details": {
|
||||
"name": "Value Input"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Clear By Value",
|
||||
"base": "Output_On Clear By Value_0",
|
||||
"details": {
|
||||
"name": "On Clear By Value"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Clear By Pointer",
|
||||
"base": "Input_Clear By Pointer_1",
|
||||
"details": {
|
||||
"name": "Clear By Pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Pointer Input",
|
||||
"base": "DataInput_Pointer Input_1",
|
||||
"details": {
|
||||
"name": "Pointer Input"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Clear By Pointer",
|
||||
"base": "Output_On Clear By Pointer_1",
|
||||
"details": {
|
||||
"name": "On Clear By Pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Clear By Reference",
|
||||
"base": "Input_Clear By Reference_2",
|
||||
"details": {
|
||||
"name": "Clear By Reference"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataInput_Reference Input",
|
||||
"base": "DataInput_Reference Input_2",
|
||||
"details": {
|
||||
"name": "Reference Input"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Clear By Reference",
|
||||
"base": "Output_On Clear By Reference_2",
|
||||
"details": {
|
||||
"name": "On Clear By Reference"
|
||||
}
|
||||
+5
-6
@@ -5,20 +5,19 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "PropertyExample",
|
||||
"category": "Tests",
|
||||
"tooltip": "Example of using properties.",
|
||||
"subtitle": "Tests"
|
||||
"name": "Property Example",
|
||||
"category": "Examples",
|
||||
"tooltip": "Example of using properties."
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_In",
|
||||
"base": "Input_In_0",
|
||||
"details": {
|
||||
"name": "In"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On In",
|
||||
"base": "Output_On In_0",
|
||||
"details": {
|
||||
"name": "On In"
|
||||
}
|
||||
+12
-13
@@ -5,62 +5,61 @@
|
||||
"context": "ScriptCanvas::Node",
|
||||
"variant": "",
|
||||
"details": {
|
||||
"name": "ReturnTypeExample",
|
||||
"category": "Tests",
|
||||
"tooltip": "Example of returning by value, pointer and reference.",
|
||||
"subtitle": "Tests"
|
||||
"name": "Return Type Example",
|
||||
"category": "Examples",
|
||||
"tooltip": "Example of returning by value, pointer and reference."
|
||||
},
|
||||
"slots": [
|
||||
{
|
||||
"base": "Input_Return By Value",
|
||||
"base": "Input_Return By Value_0",
|
||||
"details": {
|
||||
"name": "Return By Value"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Return By Value",
|
||||
"base": "Output_On Return By Value_0",
|
||||
"details": {
|
||||
"name": "On Return By Value"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Value",
|
||||
"base": "DataOutput_Value_0",
|
||||
"details": {
|
||||
"name": "Value"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Return By Pointer",
|
||||
"base": "Input_Return By Pointer_1",
|
||||
"details": {
|
||||
"name": "Return By Pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Return By Pointer",
|
||||
"base": "Output_On Return By Pointer_1",
|
||||
"details": {
|
||||
"name": "On Return By Pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Pointer",
|
||||
"base": "DataOutput_Pointer_1",
|
||||
"details": {
|
||||
"name": "Pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Input_Return By Reference",
|
||||
"base": "Input_Return By Reference_2",
|
||||
"details": {
|
||||
"name": "Return By Reference"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "Output_On Return By Reference",
|
||||
"base": "Output_On Return By Reference_2",
|
||||
"details": {
|
||||
"name": "On Return By Reference"
|
||||
}
|
||||
},
|
||||
{
|
||||
"base": "DataOutput_Reference",
|
||||
"base": "DataOutput_Reference_2",
|
||||
"details": {
|
||||
"name": "Reference"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user