Merge branch 'stabilization/2110' of https://github.com/o3de/o3de into Network/olexl/hierarchy_as_multiplayer_input_driver
This commit is contained in:
@@ -1788,6 +1788,11 @@ AZStd::string SandboxIntegrationManager::GetComponentEditorIcon(const AZ::Uuid&
|
||||
return iconPath;
|
||||
}
|
||||
|
||||
AZStd::string SandboxIntegrationManager::GetComponentTypeEditorIcon(const AZ::Uuid& componentType)
|
||||
{
|
||||
return GetComponentEditorIcon(componentType, nullptr);
|
||||
}
|
||||
|
||||
AZStd::string SandboxIntegrationManager::GetComponentIconPath(const AZ::Uuid& componentType,
|
||||
AZ::Crc32 componentIconAttrib, AZ::Component* component)
|
||||
{
|
||||
|
||||
@@ -233,6 +233,7 @@ private:
|
||||
}
|
||||
|
||||
AZStd::string GetComponentEditorIcon(const AZ::Uuid& componentType, AZ::Component* component) override;
|
||||
AZStd::string GetComponentTypeEditorIcon(const AZ::Uuid& componentType) override;
|
||||
AZStd::string GetComponentIconPath(const AZ::Uuid& componentType, AZ::Crc32 componentIconAttrib, AZ::Component* component) override;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
+1
-1
@@ -139,7 +139,7 @@ ComponentDataModel::ComponentDataModel(QObject* parent)
|
||||
if (element.m_elementId == AZ::Edit::ClassElements::EditorData)
|
||||
{
|
||||
AZStd::string iconPath;
|
||||
EBUS_EVENT_RESULT(iconPath, AzToolsFramework::EditorRequests::Bus, GetComponentEditorIcon, classData->m_typeId, nullptr);
|
||||
AzToolsFramework::EditorRequestBus::BroadcastResult(iconPath, &AzToolsFramework::EditorRequests::GetComponentTypeEditorIcon, classData->m_typeId);
|
||||
if (!iconPath.empty())
|
||||
{
|
||||
m_componentIcons[classData->m_typeId] = QIcon(iconPath.c_str());
|
||||
|
||||
@@ -408,7 +408,7 @@ CTrackViewNodesCtrl::CTrackViewNodesCtrl(QWidget* hParentWnd, CTrackViewDialog*
|
||||
serializeContext->EnumerateDerived<AZ::Component>([this](const AZ::SerializeContext::ClassData* classData, const AZ::Uuid&) -> bool
|
||||
{
|
||||
AZStd::string iconPath;
|
||||
EBUS_EVENT_RESULT(iconPath, AzToolsFramework::EditorRequests::Bus, GetComponentEditorIcon, classData->m_typeId, nullptr);
|
||||
AzToolsFramework::EditorRequestBus::BroadcastResult(iconPath, &AzToolsFramework::EditorRequests::GetComponentTypeEditorIcon, classData->m_typeId);
|
||||
if (!iconPath.empty())
|
||||
{
|
||||
m_componentTypeToIconMap[classData->m_typeId] = QIcon(iconPath.c_str());
|
||||
|
||||
@@ -826,6 +826,10 @@ namespace AzToolsFramework
|
||||
/// Path will be empty if component should have no icon.
|
||||
virtual AZStd::string GetComponentEditorIcon(const AZ::Uuid& /*componentType*/, AZ::Component* /*component*/) { return AZStd::string(); }
|
||||
|
||||
//! Return path to icon for component type.
|
||||
//! Path will be empty if component type should have no icon.
|
||||
virtual AZStd::string GetComponentTypeEditorIcon(const AZ::Uuid& /*componentType*/) { return AZStd::string(); }
|
||||
|
||||
/**
|
||||
* Return the icon image path based on the component type and where it is used.
|
||||
* \param componentType component type
|
||||
|
||||
@@ -175,7 +175,7 @@ namespace AzToolsFramework
|
||||
, public AZ::BehaviorEBusHandler
|
||||
{
|
||||
AZ_EBUS_BEHAVIOR_BINDER(ToolsApplicationNotificationBusHandler, "{7EB67956-FF86-461A-91E2-7B08279CFACF}", AZ::SystemAllocator,
|
||||
EntityRegistered, EntityDeregistered);
|
||||
EntityRegistered, EntityDeregistered, AfterEntitySelectionChanged);
|
||||
|
||||
void EntityRegistered(AZ::EntityId entityId) override
|
||||
{
|
||||
@@ -186,6 +186,11 @@ namespace AzToolsFramework
|
||||
{
|
||||
Call(FN_EntityDeregistered, entityId);
|
||||
}
|
||||
|
||||
void AfterEntitySelectionChanged(const EntityIdList& newlySelectedEntities, const EntityIdList& newlyDeselectedEntities) override
|
||||
{
|
||||
Call(FN_AfterEntitySelectionChanged, newlySelectedEntities, newlyDeselectedEntities);
|
||||
}
|
||||
};
|
||||
|
||||
struct ViewPaneCallbackBusHandler final
|
||||
@@ -408,6 +413,7 @@ namespace AzToolsFramework
|
||||
->Handler<Internal::ToolsApplicationNotificationBusHandler>()
|
||||
->Event("EntityRegistered", &ToolsApplicationEvents::EntityRegistered)
|
||||
->Event("EntityDeregistered", &ToolsApplicationEvents::EntityDeregistered)
|
||||
->Event("AfterEntitySelectionChanged", &ToolsApplicationEvents::AfterEntitySelectionChanged)
|
||||
;
|
||||
|
||||
behaviorContext->Class<ViewPaneOptions>()
|
||||
@@ -426,6 +432,7 @@ namespace AzToolsFramework
|
||||
->Attribute(AZ::Script::Attributes::Module, "editor")
|
||||
->Event("RegisterCustomViewPane", &EditorRequests::RegisterCustomViewPane)
|
||||
->Event("UnregisterViewPane", &EditorRequests::UnregisterViewPane)
|
||||
->Event("GetComponentTypeEditorIcon", &EditorRequests::GetComponentTypeEditorIcon)
|
||||
;
|
||||
|
||||
behaviorContext->EBus<EditorEventsBus>("EditorEventBus")
|
||||
|
||||
+1
-1
@@ -90,7 +90,7 @@ namespace AzToolsFramework
|
||||
}
|
||||
|
||||
AZStd::string componentIconPath;
|
||||
EBUS_EVENT_RESULT(componentIconPath, AzToolsFramework::EditorRequests::Bus, GetComponentEditorIcon, componentClass->m_typeId, nullptr);
|
||||
AzToolsFramework::EditorRequestBus::BroadcastResult(componentIconPath, &AzToolsFramework::EditorRequests::GetComponentTypeEditorIcon, componentClass->m_typeId);
|
||||
componentIconTable[componentClass] = QString::fromUtf8(componentIconPath.c_str());
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -583,7 +583,7 @@ namespace AzToolsFramework
|
||||
}
|
||||
|
||||
AZStd::string iconPath;
|
||||
EBUS_EVENT_RESULT(iconPath, AzToolsFramework::EditorRequests::Bus, GetComponentEditorIcon, componentType, const_cast<AZ::Component*>(&componentInstance));
|
||||
AzToolsFramework::EditorRequestBus::BroadcastResult(iconPath, &AzToolsFramework::EditorRequests::GetComponentEditorIcon, componentType, const_cast<AZ::Component*>(&componentInstance));
|
||||
GetHeader()->SetIcon(QIcon(iconPath.c_str()));
|
||||
|
||||
bool isExpanded = true;
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include <AzCore/Serialization/EditContext.h>
|
||||
#include <AzCore/Serialization/SerializeContext.h>
|
||||
#include <AzCore/Settings/SettingsRegistry.h>
|
||||
|
||||
#include <CommonFiles/Preprocessor.h>
|
||||
#include <CommonFiles/GlobalBuildOptions.h>
|
||||
@@ -91,19 +92,31 @@ namespace AZ
|
||||
m_shaderAssetBuilder.BusConnect(shaderAssetBuilderDescriptor.m_busId);
|
||||
AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderAssetBuilderDescriptor);
|
||||
|
||||
// Register Shader Variant Asset Builder
|
||||
AssetBuilderSDK::AssetBuilderDesc shaderVariantAssetBuilderDescriptor;
|
||||
shaderVariantAssetBuilderDescriptor.m_name = "Shader Variant Asset Builder";
|
||||
// Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update
|
||||
// ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder".
|
||||
shaderVariantAssetBuilderDescriptor.m_version = 26; // [AZSL] Changing inlineConstant to rootConstant keyword work.
|
||||
shaderVariantAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
shaderVariantAssetBuilderDescriptor.m_busId = azrtti_typeid<ShaderVariantAssetBuilder>();
|
||||
shaderVariantAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::CreateJobs, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
shaderVariantAssetBuilderDescriptor.m_processJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::ProcessJob, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
// If, either the SettingsRegistry doesn't exist, or the property @EnableShaderVariantAssetBuilderRegistryKey is not found,
|
||||
// the default is to enable the ShaderVariantAssetBuilder.
|
||||
m_enableShaderVariantAssetBuilder = true;
|
||||
auto settingsRegistry = AZ::SettingsRegistry::Get();
|
||||
if (settingsRegistry)
|
||||
{
|
||||
settingsRegistry->Get(m_enableShaderVariantAssetBuilder, EnableShaderVariantAssetBuilderRegistryKey);
|
||||
}
|
||||
|
||||
m_shaderVariantAssetBuilder.BusConnect(shaderVariantAssetBuilderDescriptor.m_busId);
|
||||
AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderVariantAssetBuilderDescriptor);
|
||||
if (m_enableShaderVariantAssetBuilder)
|
||||
{
|
||||
// Register Shader Variant Asset Builder
|
||||
AssetBuilderSDK::AssetBuilderDesc shaderVariantAssetBuilderDescriptor;
|
||||
shaderVariantAssetBuilderDescriptor.m_name = "Shader Variant Asset Builder";
|
||||
// Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update
|
||||
// ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder".
|
||||
shaderVariantAssetBuilderDescriptor.m_version = 26; // [AZSL] Changing inlineConstant to rootConstant keyword work.
|
||||
shaderVariantAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
shaderVariantAssetBuilderDescriptor.m_busId = azrtti_typeid<ShaderVariantAssetBuilder>();
|
||||
shaderVariantAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::CreateJobs, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
shaderVariantAssetBuilderDescriptor.m_processJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::ProcessJob, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
|
||||
m_shaderVariantAssetBuilder.BusConnect(shaderVariantAssetBuilderDescriptor.m_busId);
|
||||
AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderVariantAssetBuilderDescriptor);
|
||||
}
|
||||
|
||||
// Register Precompiled Shader Builder
|
||||
AssetBuilderSDK::AssetBuilderDesc precompiledShaderBuilderDescriptor;
|
||||
@@ -121,7 +134,10 @@ namespace AZ
|
||||
void AzslShaderBuilderSystemComponent::Deactivate()
|
||||
{
|
||||
m_shaderAssetBuilder.BusDisconnect();
|
||||
m_shaderVariantAssetBuilder.BusDisconnect();
|
||||
if (m_enableShaderVariantAssetBuilder)
|
||||
{
|
||||
m_shaderVariantAssetBuilder.BusDisconnect();
|
||||
}
|
||||
m_precompiledShaderBuilder.BusDisconnect();
|
||||
|
||||
RHI::ShaderPlatformInterfaceRegisterBus::Handler::BusDisconnect();
|
||||
|
||||
@@ -61,7 +61,17 @@ namespace AZ
|
||||
|
||||
private:
|
||||
ShaderAssetBuilder m_shaderAssetBuilder;
|
||||
|
||||
// The ShaderVariantAssetBuilder can be disabled with this registry key.
|
||||
// By default it is enabled. A user might want to disable it when doing look development
|
||||
// work with shaders or doing lots of iterative changes to shaders. In these cases
|
||||
// GPU performance doesn't matter at all so it is important to not waste time
|
||||
// building ShaderVariantAssets (Other than the Root ShaderVariantAsset, of course.).
|
||||
static constexpr char EnableShaderVariantAssetBuilderRegistryKey[] = "/O3DE/Atom/Shaders/BuildVariants";
|
||||
bool m_enableShaderVariantAssetBuilder = true;
|
||||
|
||||
ShaderVariantAssetBuilder m_shaderVariantAssetBuilder;
|
||||
|
||||
PrecompiledShaderBuilder m_precompiledShaderBuilder;
|
||||
|
||||
/// Contains the ShaderPlatformInterface for all registered RHIs
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"O3DE": {
|
||||
"Atom": {
|
||||
"Shaders": {
|
||||
"BuildVariants": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -81,7 +81,6 @@ function ProcessEditor(context)
|
||||
context:SetMaterialPropertyVisibility("opacity.textureMap", mainVisibility)
|
||||
context:SetMaterialPropertyVisibility("opacity.textureMapUv", mainVisibility)
|
||||
context:SetMaterialPropertyVisibility("opacity.factor", mainVisibility)
|
||||
context:SetMaterialPropertyVisibility("opacity.doubleSided", mainVisibility)
|
||||
|
||||
if(opacityMode == OpacityMode_Blended or opacityMode == OpacityMode_TintedTransparent) then
|
||||
context:SetMaterialPropertyVisibility("opacity.alphaAffectsSpecular", MaterialPropertyVisibility_Enabled)
|
||||
|
||||
@@ -348,19 +348,7 @@ namespace PhysX
|
||||
LmbrCentral::BoxShapeComponentRequestsBus::EventResult(boxDimensions, GetEntityId(),
|
||||
&LmbrCentral::BoxShapeComponentRequests::GetBoxDimensions);
|
||||
|
||||
if (m_shapeType != ShapeType::Box)
|
||||
{
|
||||
m_shapeConfigs.clear();
|
||||
m_shapeConfigs.emplace_back(AZStd::make_shared<Physics::BoxShapeConfiguration>(boxDimensions));
|
||||
|
||||
m_shapeType = ShapeType::Box;
|
||||
}
|
||||
else
|
||||
{
|
||||
Physics::BoxShapeConfiguration& configuration =
|
||||
static_cast<Physics::BoxShapeConfiguration&>(*m_shapeConfigs.back());
|
||||
configuration = Physics::BoxShapeConfiguration(boxDimensions);
|
||||
}
|
||||
SetShapeConfig(ShapeType::Box, Physics::BoxShapeConfiguration(boxDimensions));
|
||||
|
||||
m_shapeConfigs.back()->m_scale = scale;
|
||||
m_geometryCache.m_boxDimensions = scale * boxDimensions;
|
||||
@@ -374,19 +362,7 @@ namespace PhysX
|
||||
const Physics::CapsuleShapeConfiguration& capsuleShapeConfig =
|
||||
Utils::ConvertFromLmbrCentralCapsuleConfig(lmbrCentralCapsuleShapeConfig);
|
||||
|
||||
if (m_shapeType != ShapeType::Capsule)
|
||||
{
|
||||
m_shapeConfigs.clear();
|
||||
m_shapeConfigs.emplace_back(AZStd::make_shared<Physics::CapsuleShapeConfiguration>(capsuleShapeConfig));
|
||||
|
||||
m_shapeType = ShapeType::Capsule;
|
||||
}
|
||||
else
|
||||
{
|
||||
Physics::CapsuleShapeConfiguration& configuration =
|
||||
static_cast<Physics::CapsuleShapeConfiguration&>(*m_shapeConfigs.back());
|
||||
configuration = capsuleShapeConfig;
|
||||
}
|
||||
SetShapeConfig(ShapeType::Capsule, capsuleShapeConfig);
|
||||
|
||||
m_shapeConfigs.back()->m_scale = scale;
|
||||
const float scalarScale = scale.GetMaxElement();
|
||||
@@ -400,19 +376,7 @@ namespace PhysX
|
||||
LmbrCentral::SphereShapeComponentRequestsBus::EventResult(radius, GetEntityId(),
|
||||
&LmbrCentral::SphereShapeComponentRequests::GetRadius);
|
||||
|
||||
if (m_shapeType != ShapeType::Sphere)
|
||||
{
|
||||
m_shapeConfigs.clear();
|
||||
m_shapeConfigs.emplace_back(AZStd::make_shared<Physics::SphereShapeConfiguration>(radius));
|
||||
|
||||
m_shapeType = ShapeType::Sphere;
|
||||
}
|
||||
else
|
||||
{
|
||||
Physics::SphereShapeConfiguration& configuration =
|
||||
static_cast<Physics::SphereShapeConfiguration&>(*m_shapeConfigs.back());
|
||||
configuration = Physics::SphereShapeConfiguration(radius);
|
||||
}
|
||||
SetShapeConfig(ShapeType::Sphere, Physics::SphereShapeConfiguration(radius));
|
||||
|
||||
m_shapeConfigs.back()->m_scale = scale;
|
||||
m_geometryCache.m_radius = scale.GetMaxElement() * radius;
|
||||
@@ -455,19 +419,7 @@ namespace PhysX
|
||||
|
||||
if (shapeConfig.has_value())
|
||||
{
|
||||
if (m_shapeType != ShapeType::Cylinder)
|
||||
{
|
||||
m_shapeConfigs.clear();
|
||||
m_shapeConfigs.push_back(AZStd::make_shared<Physics::CookedMeshShapeConfiguration>(shapeConfig.value()));
|
||||
|
||||
m_shapeType = ShapeType::Cylinder;
|
||||
}
|
||||
else
|
||||
{
|
||||
Physics::CookedMeshShapeConfiguration& configuration =
|
||||
static_cast<Physics::CookedMeshShapeConfiguration&>(*m_shapeConfigs.back());
|
||||
configuration = Physics::CookedMeshShapeConfiguration(shapeConfig.value());
|
||||
}
|
||||
SetShapeConfig(ShapeType::Cylinder, shapeConfig.value());
|
||||
|
||||
CreateStaticEditorCollider();
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/std/smart_ptr/make_shared.h>
|
||||
#include <AzCore/Component/TransformBus.h>
|
||||
#include <AzCore/Component/NonUniformScaleBus.h>
|
||||
#include <AzFramework/Physics/Shape.h>
|
||||
@@ -90,12 +91,15 @@ namespace PhysX
|
||||
void UpdateBoxConfig(const AZ::Vector3& scale);
|
||||
void UpdateCapsuleConfig(const AZ::Vector3& scale);
|
||||
void UpdateSphereConfig(const AZ::Vector3& scale);
|
||||
void UpdateCylinderConfig(const AZ::Vector3& scale);
|
||||
void UpdatePolygonPrismDecomposition();
|
||||
void UpdatePolygonPrismDecomposition(const AZ::PolygonPrismPtr polygonPrismPtr);
|
||||
|
||||
void RefreshUiProperties();
|
||||
// Helper function to set a specific shape configuration
|
||||
template<typename ConfigType>
|
||||
void SetShapeConfig(ShapeType shapeType, const ConfigType& shapeConfig);
|
||||
|
||||
void UpdateCylinderConfig(const AZ::Vector3& scale);
|
||||
void RefreshUiProperties();
|
||||
|
||||
AZ::u32 OnSubdivisionCountChange();
|
||||
AZ::Crc32 SubdivisionCountVisibility();
|
||||
@@ -154,4 +158,28 @@ namespace PhysX
|
||||
AZ::NonUniformScaleChangedEvent::Handler m_nonUniformScaleChangedHandler; //!< Responds to changes in non-uniform scale.
|
||||
AZ::Vector3 m_currentNonUniformScale = AZ::Vector3::CreateOne(); //!< Caches the current non-uniform scale.
|
||||
};
|
||||
|
||||
template<typename ConfigType>
|
||||
void EditorShapeColliderComponent::SetShapeConfig(ShapeType shapeType, const ConfigType& shapeConfig)
|
||||
{
|
||||
if (m_shapeType != shapeType)
|
||||
{
|
||||
m_shapeConfigs.clear();
|
||||
m_shapeType = shapeType;
|
||||
}
|
||||
|
||||
if (m_shapeConfigs.empty())
|
||||
{
|
||||
m_shapeConfigs.emplace_back(AZStd::make_shared<ConfigType>(shapeConfig));
|
||||
}
|
||||
else
|
||||
{
|
||||
AZ_Assert(m_shapeConfigs.back()->GetShapeType() == shapeConfig.GetShapeType(),
|
||||
"Expected Physics shape configuration with shape type %d but found one with shape type %d.",
|
||||
static_cast<int>(shapeConfig.GetShapeType()), static_cast<int>(m_shapeConfigs.back()->GetShapeType()));
|
||||
ConfigType& configuration =
|
||||
static_cast<ConfigType&>(*m_shapeConfigs.back());
|
||||
configuration = shapeConfig;
|
||||
}
|
||||
}
|
||||
} // namespace PhysX
|
||||
|
||||
@@ -320,7 +320,7 @@ namespace PhysXEditorTests
|
||||
|
||||
TEST_F(PhysXEditorFixture, EditorShapeColliderComponent_ShapeColliderWithCylinderWithNullHeight_HandledGracefully)
|
||||
{
|
||||
ValidateInvalidEditorShapeColliderComponentParams(0.f, 1.f);
|
||||
ValidateInvalidEditorShapeColliderComponentParams(1.f, 0.f);
|
||||
}
|
||||
|
||||
TEST_F(PhysXEditorFixture, EditorShapeColliderComponent_ShapeColliderWithCylinderWithNullRadiusAndNullHeight_HandledGracefully)
|
||||
@@ -338,6 +338,44 @@ namespace PhysXEditorTests
|
||||
ValidateInvalidEditorShapeColliderComponentParams(0.f, -1.f);
|
||||
}
|
||||
|
||||
TEST_F(PhysXEditorFixture, EditorShapeColliderComponent_ShapeColliderWithCylinderSwitchingFromNullHeightToValidHeight_HandledGracefully)
|
||||
{
|
||||
// create an editor entity with a shape collider component and a cylinder shape component
|
||||
EntityPtr editorEntity = CreateInactiveEditorEntity("ShapeColliderComponentEditorEntity");
|
||||
editorEntity->CreateComponent<PhysX::EditorShapeColliderComponent>();
|
||||
editorEntity->CreateComponent(LmbrCentral::EditorCylinderShapeComponentTypeId);
|
||||
editorEntity->Activate();
|
||||
|
||||
const float validRadius = 1.0f;
|
||||
const float nullHeight = 0.0f;
|
||||
const float validHeight = 1.0f;
|
||||
|
||||
LmbrCentral::CylinderShapeComponentRequestsBus::Event(editorEntity->GetId(),
|
||||
&LmbrCentral::CylinderShapeComponentRequests::SetRadius, validRadius);
|
||||
|
||||
{
|
||||
UnitTest::ErrorHandler dimensionWarningHandler("Negative or zero cylinder dimensions are invalid");
|
||||
UnitTest::ErrorHandler colliderWarningHandler("No Collider or Shape information found when creating Rigid body");
|
||||
|
||||
LmbrCentral::CylinderShapeComponentRequestsBus::Event(editorEntity->GetId(),
|
||||
&LmbrCentral::CylinderShapeComponentRequests::SetHeight, nullHeight);
|
||||
|
||||
EXPECT_EQ(dimensionWarningHandler.GetExpectedWarningCount(), 1);
|
||||
EXPECT_EQ(colliderWarningHandler.GetExpectedWarningCount(), 1);
|
||||
}
|
||||
|
||||
{
|
||||
UnitTest::ErrorHandler dimensionWarningHandler("Negative or zero cylinder dimensions are invalid");
|
||||
UnitTest::ErrorHandler colliderWarningHandler("No Collider or Shape information found when creating Rigid body");
|
||||
|
||||
LmbrCentral::CylinderShapeComponentRequestsBus::Event(editorEntity->GetId(),
|
||||
&LmbrCentral::CylinderShapeComponentRequests::SetHeight, validHeight);
|
||||
|
||||
EXPECT_EQ(dimensionWarningHandler.GetExpectedWarningCount(), 0);
|
||||
EXPECT_EQ(colliderWarningHandler.GetExpectedWarningCount(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(PhysXEditorFixture, EditorShapeColliderComponent_ShapeColliderWithBoxAndRigidBody_CorrectRuntimeComponents)
|
||||
{
|
||||
// create an editor entity with a shape collider component and a box shape component
|
||||
|
||||
@@ -33,7 +33,7 @@ ly_associate_package(PACKAGE_NAME mikkelsen-1.0.0.4-linux
|
||||
ly_associate_package(PACKAGE_NAME googletest-1.8.1-rev4-linux TARGETS googletest PACKAGE_HASH 7b7ad330f369450c316a4c4592d17fbb4c14c731c95bd8f37757203e8c2bbc1b)
|
||||
ly_associate_package(PACKAGE_NAME googlebenchmark-1.5.0-rev2-linux TARGETS GoogleBenchmark PACKAGE_HASH 4038878f337fc7e0274f0230f71851b385b2e0327c495fc3dd3d1c18a807928d)
|
||||
ly_associate_package(PACKAGE_NAME unwind-1.2.1-linux TARGETS unwind PACKAGE_HASH 3453265fb056e25432f611a61546a25f60388e315515ad39007b5925dd054a77)
|
||||
ly_associate_package(PACKAGE_NAME qt-5.15.2-rev5-linux TARGETS Qt PACKAGE_HASH 76b395897b941a173002845c7219a5f8a799e44b269ffefe8091acc048130f28)
|
||||
ly_associate_package(PACKAGE_NAME qt-5.15.2-rev6-linux TARGETS Qt PACKAGE_HASH a37bd9989f1e8fe57d94b98cbf9bd5c3caaea740e2f314e5162fa77300551531)
|
||||
ly_associate_package(PACKAGE_NAME libpng-1.6.37-rev1-linux TARGETS libpng PACKAGE_HASH 896451999f1de76375599aec4b34ae0573d8d34620d9ab29cc30b8739c265ba6)
|
||||
ly_associate_package(PACKAGE_NAME libsamplerate-0.2.1-rev2-linux TARGETS libsamplerate PACKAGE_HASH 41643c31bc6b7d037f895f89d8d8d6369e906b92eff42b0fe05ee6a100f06261)
|
||||
ly_associate_package(PACKAGE_NAME OpenSSL-1.1.1b-rev2-linux TARGETS OpenSSL PACKAGE_HASH b779426d1e9c5ddf71160d5ae2e639c3b956e0fb5e9fcaf9ce97c4526024e3bc)
|
||||
|
||||
Reference in New Issue
Block a user