Merge branch 'main' into JsonSerializationTypeIdBug
@@ -118,6 +118,7 @@ namespace AZ
|
||||
const static AZ::Crc32 StringLineEditingCompleteNotify = AZ_CRC("StringLineEditingCompleteNotify", 0x139e5fa9);
|
||||
|
||||
const static AZ::Crc32 NameLabelOverride = AZ_CRC("NameLabelOverride", 0x9ff79cab);
|
||||
const static AZ::Crc32 AssetPickerTitle = AZ_CRC_CE("AssetPickerTitle");
|
||||
const static AZ::Crc32 ChildNameLabelOverride = AZ_CRC("ChildNameLabelOverride", 0x73dd2909);
|
||||
//! Container attribute that is used to override labels for its elements given the index of the element
|
||||
const static AZ::Crc32 IndexedChildNameLabelOverride = AZ_CRC("IndexedChildNameLabelOverride", 0x5f313ac2);
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace Physics
|
||||
float m_minimumMovementDistance = 0.001f; //!< To avoid jittering, the controller will not attempt to move distances below this.
|
||||
float m_maximumSpeed = 100.0f; //!< If the accumulated requested velocity for a tick exceeds this magnitude, it will be clamped.
|
||||
AZStd::string m_colliderTag; //!< Used to identify the collider associated with the character controller.
|
||||
AZStd::shared_ptr<Physics::ShapeConfiguration> m_shapeConfig = nullptr; //!< The shape to use when creating the character controller.
|
||||
AZStd::shared_ptr<Physics::ShapeConfiguration> m_shapeConfig; //!< The shape to use when creating the character controller.
|
||||
AZStd::vector<AZStd::shared_ptr<Physics::Shape>> m_colliders; //!< The list of colliders to attach to the character controller.
|
||||
};
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace AzPhysics
|
||||
|
||||
//! Flag to determine if the body is part of the simulation.
|
||||
//! When true the body will be affected by any forces, collisions, and found with scene queries.
|
||||
bool m_simulating = true;
|
||||
bool m_simulating = false;
|
||||
|
||||
//! Helper functions for setting user data.
|
||||
//! @param userData Can be a pointer to any type as internally will be cast to a void*. Object lifetime not managed by the SimulatedBody.
|
||||
|
||||
@@ -46,6 +46,7 @@ namespace AzPhysics
|
||||
->Field("orientation", &SimulatedBodyConfiguration::m_orientation)
|
||||
->Field("scale", &SimulatedBodyConfiguration::m_scale)
|
||||
->Field("entityId", &SimulatedBodyConfiguration::m_entityId)
|
||||
->Field("startSimulationEnabled", &SimulatedBodyConfiguration::m_startSimulationEnabled)
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace AzPhysics
|
||||
AZ::Vector3 m_position = AZ::Vector3::CreateZero();
|
||||
AZ::Quaternion m_orientation = AZ::Quaternion::CreateIdentity();
|
||||
AZ::Vector3 m_scale = AZ::Vector3::CreateOne();
|
||||
bool m_startSimulationEnabled = true;
|
||||
|
||||
// Entity/object association.
|
||||
AZ::EntityId m_entityId = AZ::EntityId(AZ::EntityId::InvalidEntityId);
|
||||
|
||||
@@ -52,6 +52,11 @@ namespace Physics
|
||||
}
|
||||
}
|
||||
|
||||
RagdollConfiguration::RagdollConfiguration()
|
||||
{
|
||||
m_startSimulationEnabled = false; //ragdolls do not start enabled.
|
||||
}
|
||||
|
||||
void RagdollConfiguration::Reflect(AZ::ReflectContext* context)
|
||||
{
|
||||
AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(context);
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
namespace Physics
|
||||
{
|
||||
using ParentIndices = AZStd::vector<size_t>;
|
||||
|
||||
class RagdollNodeConfiguration
|
||||
: public AzPhysics::RigidBodyConfiguration
|
||||
{
|
||||
@@ -46,7 +48,7 @@ namespace Physics
|
||||
AZ_RTTI(RagdollConfiguration, "{7C96D332-61D8-4C58-A2BF-707716D38D14}", AzPhysics::SimulatedBodyConfiguration);
|
||||
static void Reflect(AZ::ReflectContext* context);
|
||||
|
||||
RagdollConfiguration() = default;
|
||||
RagdollConfiguration();
|
||||
explicit RagdollConfiguration(const RagdollConfiguration& settings) = default;
|
||||
|
||||
RagdollNodeConfiguration* FindNodeConfigByName(const AZStd::string& nodeName) const;
|
||||
@@ -56,6 +58,8 @@ namespace Physics
|
||||
|
||||
AZStd::vector<RagdollNodeConfiguration> m_nodes;
|
||||
CharacterColliderConfiguration m_colliders;
|
||||
RagdollState m_initialState;
|
||||
ParentIndices m_parentIndices;
|
||||
};
|
||||
|
||||
/// Represents a single rigid part of a ragdoll.
|
||||
@@ -79,7 +83,7 @@ namespace Physics
|
||||
{
|
||||
public:
|
||||
AZ_CLASS_ALLOCATOR(Ragdoll, AZ::SystemAllocator, 0);
|
||||
AZ_RTTI(Ragdoll, "{01F09602-80EC-4693-A0E7-C2719239044B}", AzPhysics::SimulatedBody);
|
||||
AZ_RTTI(Physics::Ragdoll, "{01F09602-80EC-4693-A0E7-C2719239044B}", AzPhysics::SimulatedBody);
|
||||
virtual ~Ragdoll() = default;
|
||||
|
||||
/// Inserts the ragdoll into the physics simulation.
|
||||
|
||||
@@ -26,6 +26,22 @@ namespace Physics
|
||||
->Field("Scale", &ShapeConfiguration::m_scale)
|
||||
;
|
||||
}
|
||||
|
||||
if (auto behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
|
||||
{
|
||||
#define REFLECT_SHAPETYPE_ENUM_VALUE(EnumValue) \
|
||||
behaviorContext->EnumProperty<(int)Physics::ShapeType::EnumValue>("ShapeType_"#EnumValue) \
|
||||
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation) \
|
||||
->Attribute(AZ::Script::Attributes::Module, "physics");
|
||||
|
||||
// Note: Here we only expose the types that are available to the user in the editor
|
||||
REFLECT_SHAPETYPE_ENUM_VALUE(Box);
|
||||
REFLECT_SHAPETYPE_ENUM_VALUE(Sphere);
|
||||
REFLECT_SHAPETYPE_ENUM_VALUE(Cylinder);
|
||||
REFLECT_SHAPETYPE_ENUM_VALUE(PhysicsAsset);
|
||||
|
||||
#undef REFLECT_SHAPETYPE_ENUM_VALUE
|
||||
}
|
||||
}
|
||||
|
||||
void SphereShapeConfiguration::Reflect(AZ::ReflectContext* context)
|
||||
|
||||
@@ -24,5 +24,5 @@ QProgressBar
|
||||
|
||||
QProgressBar::chunk
|
||||
{
|
||||
background: #54AFD0;
|
||||
background: #1E70EB;
|
||||
}
|
||||
|
||||
@@ -13,14 +13,14 @@ Width=24;
|
||||
ArrowWidth=10;
|
||||
|
||||
[PrimaryColorSet]
|
||||
Disabled\Start=#7092A7
|
||||
Disabled\End=#7092A7
|
||||
Sunken\Start=#0073BB
|
||||
Sunken\End=#0073BB
|
||||
Hovered\Start=#44BAFF
|
||||
Hovered\End=#4AB2F8
|
||||
Disabled\Start=#2A4875
|
||||
Disabled\End=#2A4875
|
||||
Sunken\Start=#1E70EB
|
||||
Sunken\End=#1E70EB
|
||||
Hovered\Start=#4ABAFF
|
||||
Hovered\End=#94D2FF
|
||||
Normal\Start=#0095F2
|
||||
Normal\End=#0073BB
|
||||
Normal\End=#1E70EB
|
||||
|
||||
[SecondaryColorSet]
|
||||
Disabled\Start=#666666
|
||||
@@ -42,10 +42,10 @@ Color=#3D000000
|
||||
|
||||
[FocusedBorder]
|
||||
Thickness=1
|
||||
Color=#00A1C9
|
||||
Color=#4B8CEF
|
||||
|
||||
[IconButton]
|
||||
ActiveColor=#00A1C9
|
||||
ActiveColor=#1E70EB
|
||||
DisabledColor=#999999
|
||||
SelectedColor=#FFFFFF
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ HandleBorder\Color=#FFFFFF
|
||||
HandleBorder\Radius=1.5
|
||||
|
||||
[Slider]
|
||||
Handle\Color=#0185D7
|
||||
Handle\Color=#1E70EB
|
||||
Handle\ColorDisabled=#999999
|
||||
Handle\Size=12
|
||||
Handle\SizeMinusMargin=8
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace AzQtComponents
|
||||
Text::Config Text::defaultConfig()
|
||||
{
|
||||
Config config;
|
||||
config.hyperlinkColor = QStringLiteral("#44B2F8");
|
||||
config.hyperlinkColor = QStringLiteral("#94D2FF");
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
[Hyperlink]
|
||||
Color=#44B2F8
|
||||
Color=#94D2FF
|
||||
@@ -4,7 +4,7 @@
|
||||
<title>Selection Controls / Checkbox / Off</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Checkbox-/-Off" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="checkbox-(off)" stroke="#00A1C9">
|
||||
<g id="checkbox-(off)" stroke="#4B8CEF">
|
||||
<path d="M14.2222222,0.5 L1.77777778,0.5 C1.07614237,0.5 0.5,1.07614237 0.5,1.77777778 L0.5,14.2222222 C0.5,14.9238576 1.07614237,15.5 1.77777778,15.5 L14.2222222,15.5 C14.9238576,15.5 15.5,14.9238576 15.5,14.2222222 L15.5,1.77777778 C15.5,1.07614237 14.9238576,0.5 14.2222222,0.5 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 850 B After Width: | Height: | Size: 850 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Checkbox-/-On---Disabled" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="checkbox-(on)">
|
||||
<path d="M1.77777778,0 C0.8,0 0,0.8 0,1.77777778 L0,14.2222222 C0,15.2 0.8,16 1.77777778,16 L14.2222222,16 C15.2,16 16,15.2 16,14.2222222 L16,1.77777778 C16,0.8 15.2,0 14.2222222,0 L1.77777778,0 Z" id="Shape" fill="#7092A7"></path>
|
||||
<path d="M1.77777778,0 C0.8,0 0,0.8 0,1.77777778 L0,14.2222222 C0,15.2 0.8,16 1.77777778,16 L14.2222222,16 C15.2,16 16,15.2 16,14.2222222 L16,1.77777778 C16,0.8 15.2,0 14.2222222,0 L1.77777778,0 Z" id="Shape" fill="#2A4875"></path>
|
||||
<polygon id="Path" fill="#BBBBBB" points="1 8.19230769 2.4 6.84615385 6 10.3076923 13.6 3 15 4.34615385 6 13"></polygon>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 914 B After Width: | Height: | Size: 914 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Checkbox-/-On-focus" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="checkbox-(on)">
|
||||
<path d="M14.2222222,0.5 L1.77777778,0.5 C1.07614237,0.5 0.5,1.07614237 0.5,1.77777778 L0.5,14.2222222 C0.5,14.9238576 1.07614237,15.5 1.77777778,15.5 L14.2222222,15.5 C14.9238576,15.5 15.5,14.9238576 15.5,14.2222222 L15.5,1.77777778 C15.5,1.07614237 14.9238576,0.5 14.2222222,0.5 Z" id="Shape" stroke="#00A1C9" fill="#0073BB"></path>
|
||||
<path d="M14.2222222,0.5 L1.77777778,0.5 C1.07614237,0.5 0.5,1.07614237 0.5,1.77777778 L0.5,14.2222222 C0.5,14.9238576 1.07614237,15.5 1.77777778,15.5 L14.2222222,15.5 C14.9238576,15.5 15.5,14.9238576 15.5,14.2222222 L15.5,1.77777778 C15.5,1.07614237 14.9238576,0.5 14.2222222,0.5 Z" id="Shape" stroke="#4B8CEF" fill="#1E70EB"></path>
|
||||
<polygon id="Path" fill="#FFFFFF" points="1 8.19230769 2.4 6.84615385 6 10.3076923 13.6 3 15 4.34615385 6 13"></polygon>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 1007 B After Width: | Height: | Size: 1007 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Checkbox-/-On" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="checkbox-(on)">
|
||||
<path d="M1.77777778,0 C0.8,0 0,0.8 0,1.77777778 L0,14.2222222 C0,15.2 0.8,16 1.77777778,16 L14.2222222,16 C15.2,16 16,15.2 16,14.2222222 L16,1.77777778 C16,0.8 15.2,0 14.2222222,0 L1.77777778,0 Z" id="Shape" fill="#0073BB"></path>
|
||||
<path d="M1.77777778,0 C0.8,0 0,0.8 0,1.77777778 L0,14.2222222 C0,15.2 0.8,16 1.77777778,16 L14.2222222,16 C15.2,16 16,15.2 16,14.2222222 L16,1.77777778 C16,0.8 15.2,0 14.2222222,0 L1.77777778,0 Z" id="Shape" fill="#1E70EB"></path>
|
||||
<polygon id="Path" fill="#FFFFFF" points="1 8.19230769 2.4 6.84615385 6 10.3076923 13.6 3 15 4.34615385 6 13"></polygon>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 892 B After Width: | Height: | Size: 892 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Checkbox-/-Partial-Selected" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Group">
|
||||
<rect id="Rectangle-10" fill="#7092A7" x="0" y="0" width="16" height="16" rx="2"></rect>
|
||||
<rect id="Rectangle-10" fill="#2A4875" x="0" y="0" width="16" height="16" rx="2"></rect>
|
||||
<rect id="Rectangle-9" fill="#BBBBBB" x="3" y="7" width="10" height="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 728 B After Width: | Height: | Size: 728 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Checkbox-/-Partial-Selected" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Group">
|
||||
<path d="M14.2222222,0.5 L1.77777778,0.5 C1.07614237,0.5 0.5,1.07614237 0.5,1.77777778 L0.5,14.2222222 C0.5,14.9238576 1.07614237,15.5 1.77777778,15.5 L14.2222222,15.5 C14.9238576,15.5 15.5,14.9238576 15.5,14.2222222 L15.5,1.77777778 C15.5,1.07614237 14.9238576,0.5 14.2222222,0.5 Z" id="Shape" stroke="#00A1C9" fill="#0073BB"></path>
|
||||
<path d="M14.2222222,0.5 L1.77777778,0.5 C1.07614237,0.5 0.5,1.07614237 0.5,1.77777778 L0.5,14.2222222 C0.5,14.9238576 1.07614237,15.5 1.77777778,15.5 L14.2222222,15.5 C14.9238576,15.5 15.5,14.9238576 15.5,14.2222222 L15.5,1.77777778 C15.5,1.07614237 14.9238576,0.5 14.2222222,0.5 Z" id="Shape" stroke="#4B8CEF" fill="#1E70EB"></path>
|
||||
<rect id="Rectangle-9" fill="#FFFFFF" x="3" y="7" width="10" height="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 974 B After Width: | Height: | Size: 974 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Checkbox-/-Partial-Selected" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Group">
|
||||
<rect id="Rectangle-10" fill="#0073BB" x="0" y="0" width="16" height="16" rx="2"></rect>
|
||||
<rect id="Rectangle-10" fill="#1E70EB" x="0" y="0" width="16" height="16" rx="2"></rect>
|
||||
<rect id="Rectangle-9" fill="#FFFFFF" x="3" y="7" width="10" height="2"></rect>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 728 B After Width: | Height: | Size: 728 B |
@@ -4,7 +4,7 @@
|
||||
<title>Selection Controls / Radio Button / On - Disabled</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Radio-Button-/-On---Disabled" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<circle id="Oval" fill="#7092A7" cx="8" cy="8" r="8"></circle>
|
||||
<circle id="Oval" fill="#2A4875" cx="8" cy="8" r="8"></circle>
|
||||
<circle id="Oval" fill="#BBBBBB" cx="8" cy="8" r="4"></circle>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 643 B After Width: | Height: | Size: 643 B |
@@ -4,7 +4,7 @@
|
||||
<title>Selection Controls / Radio Button / On-focus</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Radio-Button-/-On-focus" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<circle id="Oval" stroke="#00A1C9" fill="#0073BB" cx="9" cy="9" r="8.5"></circle>
|
||||
<circle id="Oval" stroke="#4B8CEF" fill="#1E70EB" cx="9" cy="9" r="8.5"></circle>
|
||||
<circle id="Oval" fill="#FFFFFF" cx="9" cy="9" r="4"></circle>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 647 B After Width: | Height: | Size: 647 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Radio-Button-/-On" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="radio-button-(on)">
|
||||
<circle id="Oval" fill="#0073BB" cx="8" cy="8" r="8"></circle>
|
||||
<circle id="Oval" fill="#1E70EB" cx="8" cy="8" r="8"></circle>
|
||||
<circle id="Oval" fill="#FFFFFF" cx="8" cy="8" r="4"></circle>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 677 B |
@@ -4,7 +4,7 @@
|
||||
<title>Selection Controls / Radio Button / Off-focus</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Radio-Button-/-Off-focus" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="radio-button-(off)" transform="translate(1.000000, 1.000000)" stroke="#00A1C9">
|
||||
<g id="radio-button-(off)" transform="translate(1.000000, 1.000000)" stroke="#4B8CEF">
|
||||
<circle id="Oval" cx="8" cy="8" r="8.5"></circle>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 658 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Switch-/-On---Disabled" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="switch-(on)">
|
||||
<path d="M25.4117647,16 L6.58823529,16 C2.91764706,16 0,12.4571429 0,8 C0,3.54285714 2.91764706,0 6.58823529,0 L25.4117647,0 C29.0823529,0 32,3.54285714 32,8 C32,12.4571429 29.0823529,16 25.4117647,16 Z" id="track" fill="#7092A7"></path>
|
||||
<path d="M25.4117647,16 L6.58823529,16 C2.91764706,16 0,12.4571429 0,8 C0,3.54285714 2.91764706,0 6.58823529,0 L25.4117647,0 C29.0823529,0 32,3.54285714 32,8 C32,12.4571429 29.0823529,16 25.4117647,16 Z" id="track" fill="#2A4875"></path>
|
||||
<circle id="knob" fill="#BBBBBB" cx="24" cy="8" r="6"></circle>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 857 B After Width: | Height: | Size: 857 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Switch-/-On-focus" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="switch-(on)" transform="translate(1.000000, 1.000000)">
|
||||
<path d="M25.4117647,16.5 L6.58823529,16.5 C2.61773665,16.5 -0.5,12.7141769 -0.5,8 C-0.5,3.28582307 2.61773665,-0.5 6.58823529,-0.5 L25.4117647,-0.5 C29.3822634,-0.5 32.5,3.28582307 32.5,8 C32.5,12.7141769 29.3822634,16.5 25.4117647,16.5 Z" id="track" stroke="#00A1C9" fill="#0073BB"></path>
|
||||
<path d="M25.4117647,16.5 L6.58823529,16.5 C2.61773665,16.5 -0.5,12.7141769 -0.5,8 C-0.5,3.28582307 2.61773665,-0.5 6.58823529,-0.5 L25.4117647,-0.5 C29.3822634,-0.5 32.5,3.28582307 32.5,8 C32.5,12.7141769 29.3822634,16.5 25.4117647,16.5 Z" id="track" stroke="#4B8CEF" fill="#1E70EB"></path>
|
||||
<circle id="knob" fill="#FFFFFF" cx="24" cy="8" r="6"></circle>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 938 B After Width: | Height: | Size: 938 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Switch-/-On" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="switch-(on)">
|
||||
<path d="M25.4117647,16 L6.58823529,16 C2.91764706,16 0,12.4571429 0,8 C0,3.54285714 2.91764706,0 6.58823529,0 L25.4117647,0 C29.0823529,0 32,3.54285714 32,8 C32,12.4571429 29.0823529,16 25.4117647,16 Z" id="track" fill="#0073BB"></path>
|
||||
<path d="M25.4117647,16 L6.58823529,16 C2.91764706,16 0,12.4571429 0,8 C0,3.54285714 2.91764706,0 6.58823529,0 L25.4117647,0 C29.0823529,0 32,3.54285714 32,8 C32,12.4571429 29.0823529,16 25.4117647,16 Z" id="track" fill="#1E70EB"></path>
|
||||
<circle id="knob" fill="#FFFFFF" cx="24" cy="8" r="6"></circle>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 835 B After Width: | Height: | Size: 835 B |
@@ -5,7 +5,7 @@
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Selection-Controls-/-Switch-/-Off-focus" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="switch-(off)" transform="translate(1.000000, 1.000000)">
|
||||
<path d="M25.0231909,16.5 L7.01632718,16.5 C2.97419648,16.5 -0.5,12.6299076 -0.5,8 C-0.5,3.37009242 2.97419648,-0.5 7.01632718,-0.5 L25.0231909,-0.5 C29.0586432,-0.5 32.5,3.36297526 32.5,8 C32.5,12.6370247 29.0586432,16.5 25.0231909,16.5 Z" id="track" stroke="#00A1C9"></path>
|
||||
<path d="M25.0231909,16.5 L7.01632718,16.5 C2.97419648,16.5 -0.5,12.6299076 -0.5,8 C-0.5,3.37009242 2.97419648,-0.5 7.01632718,-0.5 L25.0231909,-0.5 C29.0586432,-0.5 32.5,3.36297526 32.5,8 C32.5,12.6370247 29.0586432,16.5 25.0231909,16.5 Z" id="track" stroke="#4B8CEF"></path>
|
||||
<circle id="knob" fill="#FFFFFF" cx="8" cy="8" r="6"></circle>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 925 B After Width: | Height: | Size: 925 B |
@@ -1,6 +1,6 @@
|
||||
<svg version="1.1" class="loader" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="40px" height="40px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
|
||||
<path fill="#54AFD0" d="M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z">
|
||||
<path fill="#1E70EB" d="M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z">
|
||||
<animateTransform attributeType="xml"
|
||||
attributeName="transform"
|
||||
type="rotate"
|
||||
|
||||
|
Before Width: | Height: | Size: 878 B After Width: | Height: | Size: 878 B |
@@ -348,6 +348,11 @@ namespace AzToolsFramework
|
||||
*/
|
||||
virtual bool AreAnyEntitiesSelected() = 0;
|
||||
|
||||
/*!
|
||||
* Returns the number of selected entities.
|
||||
*/
|
||||
virtual int GetSelectedEntitiesCount() = 0;
|
||||
|
||||
/*!
|
||||
* Retrieves the set of selected entities.
|
||||
* \return a list of entity Ids.
|
||||
|
||||
@@ -395,6 +395,7 @@ namespace AzToolsFramework
|
||||
->Event("MarkEntityDeselected", &ToolsApplicationRequests::MarkEntityDeselected)
|
||||
->Event("IsSelected", &ToolsApplicationRequests::IsSelected)
|
||||
->Event("AreAnyEntitiesSelected", &ToolsApplicationRequests::AreAnyEntitiesSelected)
|
||||
->Event("GetSelectedEntitiesCount", &ToolsApplicationRequests::GetSelectedEntitiesCount)
|
||||
;
|
||||
|
||||
behaviorContext->EBus<ToolsApplicationNotificationBus>("ToolsApplicationNotificationBus")
|
||||
|
||||
@@ -101,6 +101,7 @@ namespace AzToolsFramework
|
||||
SourceControlFileInfo GetSceneSourceControlInfo() override;
|
||||
|
||||
bool AreAnyEntitiesSelected() override { return !m_selectedEntities.empty(); }
|
||||
int GetSelectedEntitiesCount() override { return m_selectedEntities.size(); }
|
||||
const EntityIdList& GetSelectedEntities() override { return m_selectedEntities; }
|
||||
const EntityIdList& GetHighlightedEntities() override { return m_highlightedEntities; }
|
||||
void SetSelectedEntities(const EntityIdList& selectedEntities) override;
|
||||
|
||||
@@ -53,8 +53,8 @@ namespace AzToolsFramework
|
||||
static constexpr const char* FolderIconPath = "Editor/Icons/AssetBrowser/Folder_16.svg";
|
||||
static constexpr const char* GemIconPath = "Editor/Icons/AssetBrowser/GemFolder_16.svg";
|
||||
|
||||
FolderThumbnail::FolderThumbnail(SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
FolderThumbnail::FolderThumbnail(SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{}
|
||||
|
||||
void FolderThumbnail::LoadThread()
|
||||
@@ -69,7 +69,8 @@ namespace AzToolsFramework
|
||||
AZStd::string absoluteIconPath;
|
||||
AZ::StringFunc::Path::Join(engineRoot, folderIcon, absoluteIconPath);
|
||||
|
||||
m_icon = QIcon(absoluteIconPath.c_str());
|
||||
m_pixmap.load(absoluteIconPath.c_str());
|
||||
m_state = m_pixmap.isNull() ? State::Failed : State::Ready;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FolderThumbnail(SharedThumbnailKey key, int thumbnailSize);
|
||||
FolderThumbnail(SharedThumbnailKey key);
|
||||
void LoadThread() override;
|
||||
};
|
||||
|
||||
|
||||
@@ -57,8 +57,8 @@ namespace AzToolsFramework
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
static const char* DEFAULT_PRODUCT_ICON_PATH = "Editor/Icons/AssetBrowser/DefaultProduct_16.svg";
|
||||
|
||||
ProductThumbnail::ProductThumbnail(Thumbnailer::SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
ProductThumbnail::ProductThumbnail(Thumbnailer::SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{}
|
||||
|
||||
void ProductThumbnail::LoadThread()
|
||||
@@ -96,12 +96,8 @@ namespace AzToolsFramework
|
||||
iconPath = QString::fromUtf8(DEFAULT_PRODUCT_ICON_PATH);
|
||||
}
|
||||
|
||||
m_icon = QIcon(iconPath);
|
||||
|
||||
if (m_icon.isNull())
|
||||
{
|
||||
m_state = State::Failed;
|
||||
}
|
||||
m_pixmap.load(iconPath);
|
||||
m_state = m_pixmap.isNull() ? State::Failed : State::Ready;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ProductThumbnail(Thumbnailer::SharedThumbnailKey key, int thumbnailSize);
|
||||
ProductThumbnail(Thumbnailer::SharedThumbnailKey key);
|
||||
|
||||
protected:
|
||||
void LoadThread() override;
|
||||
|
||||
@@ -58,8 +58,8 @@ namespace AzToolsFramework
|
||||
static constexpr const char* DefaultFileIconPath = "Editor/Icons/AssetBrowser/Default_16.svg";
|
||||
QMutex SourceThumbnail::m_mutex;
|
||||
|
||||
SourceThumbnail::SourceThumbnail(SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
SourceThumbnail::SourceThumbnail(SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -124,7 +124,8 @@ namespace AzToolsFramework
|
||||
iconPathToUse = iconPath.c_str();
|
||||
}
|
||||
|
||||
m_icon = QIcon(iconPathToUse);
|
||||
m_pixmap.load(iconPathToUse);
|
||||
m_state = m_pixmap.isNull() ? State::Failed : State::Ready;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SourceThumbnail(SharedThumbnailKey key, int thumbnailSize);
|
||||
SourceThumbnail(SharedThumbnailKey key);
|
||||
|
||||
protected:
|
||||
void LoadThread() override;
|
||||
|
||||
@@ -140,7 +140,7 @@ namespace AzToolsFramework
|
||||
else
|
||||
{
|
||||
// Scaling and centering pixmap within bounds to preserve aspect ratio
|
||||
const QPixmap pixmap = thumbnail->GetPixmap(size).scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
const QPixmap pixmap = thumbnail->GetPixmap().scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
const QSize sizeDelta = size - pixmap.size();
|
||||
const QPoint pointDelta = QPoint(sizeDelta.width() / 2, sizeDelta.height() / 2);
|
||||
painter->drawPixmap(point + pointDelta, pixmap);
|
||||
|
||||
@@ -242,19 +242,6 @@ namespace AzToolsFramework
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// The template is already loaded, this is the case of either saving as same name or different name(loaded from before).
|
||||
// Update the template with the changes
|
||||
AzToolsFramework::Prefab::PrefabDom dom;
|
||||
bool success = AzToolsFramework::Prefab::PrefabDomUtils::StoreInstanceInPrefabDom(*m_rootInstance, dom);
|
||||
if (!success)
|
||||
{
|
||||
AZ_Error("Prefab", false, "Failed to convert current root instance into a DOM when saving file '%.*s'", AZ_STRING_ARG(filename));
|
||||
return false;
|
||||
}
|
||||
m_prefabSystemComponent->UpdatePrefabTemplate(templateId, dom);
|
||||
}
|
||||
|
||||
Prefab::TemplateId prevTemplateId = m_rootInstance->GetTemplateId();
|
||||
m_rootInstance->SetTemplateId(templateId);
|
||||
|
||||
@@ -36,8 +36,7 @@ namespace AzToolsFramework
|
||||
using namespace Thumbnailer;
|
||||
using namespace AssetBrowser;
|
||||
const char* contextName = "MaterialBrowser";
|
||||
int thumbnailSize = qApp->style()->pixelMetric(QStyle::PM_SmallIconSize);
|
||||
ThumbnailerRequestsBus::Broadcast(&ThumbnailerRequests::RegisterContext, contextName, thumbnailSize);
|
||||
ThumbnailerRequestsBus::Broadcast(&ThumbnailerRequests::RegisterContext, contextName);
|
||||
ThumbnailerRequestsBus::Broadcast(&ThumbnailerRequests::RegisterThumbnailProvider, MAKE_TCACHE(FolderThumbnailCache), contextName);
|
||||
ThumbnailerRequestsBus::Broadcast(&ThumbnailerRequests::RegisterThumbnailProvider, MAKE_TCACHE(SourceThumbnailCache), contextName);
|
||||
ThumbnailerRequestsBus::Broadcast(&ThumbnailerRequests::RegisterThumbnailProvider, MAKE_TCACHE(MaterialThumbnailCache), contextName);
|
||||
|
||||
@@ -24,8 +24,8 @@ namespace AzToolsFramework
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// MaterialThumbnail
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
MaterialThumbnail::MaterialThumbnail(Thumbnailer::SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
MaterialThumbnail::MaterialThumbnail(Thumbnailer::SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{
|
||||
auto productKey = azrtti_cast<const AzToolsFramework::AssetBrowser::ProductThumbnailKey*>(m_key.data());
|
||||
AZ_Assert(productKey, "Incorrect key type, excpected ProductThumbnailKey");
|
||||
@@ -34,7 +34,8 @@ namespace AzToolsFramework
|
||||
MaterialBrowserRequestBus::BroadcastResult(multiMat, &MaterialBrowserRequests::IsMultiMaterial, productKey->GetAssetId());
|
||||
|
||||
QString iconPath = multiMat ? MultiMaterialIconPath : SimpleMaterialIconPath;
|
||||
m_pixmap = QPixmap(iconPath).scaled(m_thumbnailSize, m_thumbnailSize, Qt::KeepAspectRatio);
|
||||
m_pixmap.load(iconPath);
|
||||
m_state = m_pixmap.isNull() ? State::Failed : State::Ready;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MaterialThumbnail(Thumbnailer::SharedThumbnailKey key, int thumbnailSize);
|
||||
MaterialThumbnail(Thumbnailer::SharedThumbnailKey key);
|
||||
};
|
||||
|
||||
namespace
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include <AzCore/Serialization/EditContext.h>
|
||||
#include <AzToolsFramework/Prefab/PrefabPublicInterface.h>
|
||||
#include <AzToolsFramework/UI/EditorEntityUi/EditorEntityUiInterface.h>
|
||||
#include <AzToolsFramework/UI/Outliner/EntityOutlinerWidgetInterface.h>
|
||||
#include <AzToolsFramework/UI/Prefab/PrefabIntegrationBus.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
|
||||
@@ -200,7 +200,7 @@ namespace AzToolsFramework
|
||||
}
|
||||
|
||||
return context.Report(result,
|
||||
result.GetProcessing() == JSR::Processing::Completed ? "Succesfully loaded instance information for prefab." :
|
||||
result.GetProcessing() == JSR::Processing::Completed ? "Successfully loaded instance information for prefab." :
|
||||
"Failed to load instance information for prefab");
|
||||
}
|
||||
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
#include <AzToolsFramework/Prefab/Instance/TemplateInstanceMapperInterface.h>
|
||||
#include <AzToolsFramework/Prefab/PrefabDomUtils.h>
|
||||
#include <AzToolsFramework/Prefab/PrefabPublicInterface.h>
|
||||
#include <AzToolsFramework/Prefab/PrefabPublicNotificationBus.h>
|
||||
#include <AzToolsFramework/Prefab/PrefabSystemComponentInterface.h>
|
||||
#include <AzToolsFramework/Prefab/Template/Template.h>
|
||||
#include <AzToolsFramework/UI/Outliner/EntityOutlinerWidgetInterface.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
@@ -90,17 +90,13 @@ namespace AzToolsFramework
|
||||
|
||||
if (instanceCountToUpdateInBatch > 0)
|
||||
{
|
||||
// Notify Propagation has begun
|
||||
PrefabPublicNotificationBus::Broadcast(&PrefabPublicNotifications::OnPrefabInstancePropagationBegin);
|
||||
|
||||
EntityIdList selectedEntityIds;
|
||||
ToolsApplicationRequestBus::BroadcastResult(selectedEntityIds, &ToolsApplicationRequests::GetSelectedEntities);
|
||||
ToolsApplicationRequestBus::Broadcast(&ToolsApplicationRequests::SetSelectedEntities, EntityIdList());
|
||||
|
||||
// Disable the Outliner to avoid showing the propagation steps
|
||||
EntityOutlinerWidgetInterface* entityOutlinerWidgetInterface = AZ::Interface<EntityOutlinerWidgetInterface>::Get();
|
||||
if (entityOutlinerWidgetInterface)
|
||||
{
|
||||
entityOutlinerWidgetInterface->SetUpdatesEnabled(false);
|
||||
}
|
||||
|
||||
for (int i = 0; i < instanceCountToUpdateInBatch; ++i)
|
||||
{
|
||||
Instance* instanceToUpdate = m_instancesUpdateQueue.front();
|
||||
@@ -168,18 +164,8 @@ namespace AzToolsFramework
|
||||
}
|
||||
ToolsApplicationRequestBus::Broadcast(&ToolsApplicationRequests::SetSelectedEntities, selectedEntityIds);
|
||||
|
||||
// Enable the Outliner
|
||||
if (entityOutlinerWidgetInterface)
|
||||
{
|
||||
entityOutlinerWidgetInterface->SetUpdatesEnabled(true);
|
||||
|
||||
auto prefabPublicInterface = AZ::Interface<PrefabPublicInterface>::Get();
|
||||
if (prefabPublicInterface)
|
||||
{
|
||||
AZ::EntityId rootEntityId = prefabPublicInterface->GetLevelInstanceContainerEntityId();
|
||||
entityOutlinerWidgetInterface->ExpandEntityChildren(rootEntityId);
|
||||
}
|
||||
}
|
||||
// Notify Propagation has ended
|
||||
PrefabPublicNotificationBus::Broadcast(&PrefabPublicNotifications::OnPrefabInstancePropagationEnd);
|
||||
}
|
||||
|
||||
m_updatingTemplateInstancesInQueue = false;
|
||||
|
||||
@@ -230,6 +230,10 @@ namespace AzToolsFramework
|
||||
AZ_Assert(instanceDom.IsObject(), "Link Id '%u' cannot be added because the DOM of the instance is not an object.", m_id);
|
||||
instanceDom.AddMember(rapidjson::StringRef(PrefabDomUtils::LinkIdName), rapidjson::Value().SetUint64(m_id), allocator);
|
||||
}
|
||||
else
|
||||
{
|
||||
linkIdReference->get().SetUint64(m_id);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Prefab
|
||||
|
||||
@@ -392,12 +392,27 @@ namespace AzToolsFramework
|
||||
|
||||
if (patch.IsArray() && !patch.Empty() && beforeState.IsObject())
|
||||
{
|
||||
// Update the state of the entity
|
||||
PrefabUndoEntityUpdate* state = aznew PrefabUndoEntityUpdate(AZStd::to_string(static_cast<AZ::u64>(entityId)));
|
||||
state->SetParent(parentUndoBatch);
|
||||
state->Capture(beforeState, afterState, entityId);
|
||||
if (IsInstanceContainerEntity(entityId) && !IsLevelInstanceContainerEntity(entityId))
|
||||
{
|
||||
m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(patch, entityId);
|
||||
|
||||
state->Redo();
|
||||
// Save these changes as patches to the link
|
||||
PrefabUndoLinkUpdate* linkUpdate =
|
||||
aznew PrefabUndoLinkUpdate(AZStd::to_string(static_cast<AZ::u64>(entityId)));
|
||||
linkUpdate->SetParent(parentUndoBatch);
|
||||
linkUpdate->Capture(patch, owningInstance->get().GetLinkId());
|
||||
|
||||
linkUpdate->Redo();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Update the state of the entity
|
||||
PrefabUndoEntityUpdate* state = aznew PrefabUndoEntityUpdate(AZStd::to_string(static_cast<AZ::u64>(entityId)));
|
||||
state->SetParent(parentUndoBatch);
|
||||
state->Capture(beforeState, afterState, entityId);
|
||||
|
||||
state->Redo();
|
||||
}
|
||||
}
|
||||
|
||||
// Update the cache
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/EBus/EBus.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
namespace Prefab
|
||||
{
|
||||
class PrefabPublicNotifications
|
||||
: public AZ::EBusTraits
|
||||
{
|
||||
public:
|
||||
virtual ~PrefabPublicNotifications() = default;
|
||||
|
||||
virtual void OnPrefabInstancePropagationBegin() {}
|
||||
virtual void OnPrefabInstancePropagationEnd() {}
|
||||
};
|
||||
|
||||
using PrefabPublicNotificationBus = AZ::EBus<PrefabPublicNotifications>;
|
||||
|
||||
} // namespace Prefab
|
||||
} // namespace AzToolsFramework
|
||||
@@ -18,13 +18,15 @@ namespace AzToolsFramework
|
||||
{
|
||||
namespace Thumbnailer
|
||||
{
|
||||
static constexpr const int LoadingThumbnailSize = 128;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// LoadingThumbnail
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
static const char* LoadingIconPath = "Editor/Icons/AssetBrowser/in_progress.gif";
|
||||
|
||||
LoadingThumbnail::LoadingThumbnail(int thumbnailSize)
|
||||
: Thumbnail(MAKE_TKEY(ThumbnailKey), thumbnailSize)
|
||||
LoadingThumbnail::LoadingThumbnail()
|
||||
: Thumbnail(MAKE_TKEY(ThumbnailKey))
|
||||
, m_angle(0)
|
||||
{
|
||||
const char* engineRoot = nullptr;
|
||||
@@ -34,7 +36,7 @@ namespace AzToolsFramework
|
||||
AZ::StringFunc::Path::Join(engineRoot, LoadingIconPath, iconPath);
|
||||
m_loadingMovie.setFileName(iconPath.c_str());
|
||||
m_loadingMovie.setCacheMode(QMovie::CacheMode::CacheAll);
|
||||
m_loadingMovie.setScaledSize(QSize(m_thumbnailSize, m_thumbnailSize));
|
||||
m_loadingMovie.setScaledSize(QSize(LoadingThumbnailSize, LoadingThumbnailSize));
|
||||
m_loadingMovie.start();
|
||||
m_pixmap = m_loadingMovie.currentPixmap();
|
||||
m_state = State::Ready;
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit LoadingThumbnail(int thumbnailSize);
|
||||
LoadingThumbnail();
|
||||
~LoadingThumbnail() override;
|
||||
|
||||
void UpdateTime(float /*deltaTime*/) override;
|
||||
|
||||
@@ -18,11 +18,11 @@ namespace AzToolsFramework
|
||||
{
|
||||
static const char* MISSING_ICON_PATH = "Editor/Icons/AssetBrowser/Default_16.svg";
|
||||
|
||||
MissingThumbnail::MissingThumbnail(int thumbnailSize)
|
||||
: Thumbnail(MAKE_TKEY(ThumbnailKey), thumbnailSize)
|
||||
MissingThumbnail::MissingThumbnail()
|
||||
: Thumbnail(MAKE_TKEY(ThumbnailKey))
|
||||
{
|
||||
m_icon = QIcon(MISSING_ICON_PATH);
|
||||
m_state = State::Ready;
|
||||
m_pixmap.load(MISSING_ICON_PATH);
|
||||
m_state = m_pixmap.isNull() ? State::Failed : State::Ready;
|
||||
}
|
||||
|
||||
} // namespace Thumbnailer
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit MissingThumbnail(int thumbnailSize);
|
||||
MissingThumbnail();
|
||||
};
|
||||
} // namespace Thumbnailer
|
||||
} // namespace AzToolsFramework
|
||||
|
||||
@@ -69,8 +69,8 @@ namespace AzToolsFramework
|
||||
|
||||
bool SourceControlThumbnail::m_readyForUpdate = true;
|
||||
|
||||
SourceControlThumbnail::SourceControlThumbnail(SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
SourceControlThumbnail::SourceControlThumbnail(SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{
|
||||
const char* engineRoot = nullptr;
|
||||
AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot);
|
||||
@@ -122,16 +122,16 @@ namespace AzToolsFramework
|
||||
{
|
||||
if (fileInfo.HasFlag(AzToolsFramework::SCF_Writeable))
|
||||
{
|
||||
m_icon = QIcon(m_writableIconPath.c_str());
|
||||
m_pixmap.load(m_writableIconPath.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_icon = QIcon(m_nonWritableIconPath.c_str());
|
||||
m_pixmap.load(m_nonWritableIconPath.c_str());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_icon = QIcon();
|
||||
m_pixmap = QPixmap();
|
||||
}
|
||||
m_readyForUpdate = true;
|
||||
emit Updated();
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SourceControlThumbnail(SharedThumbnailKey key, int thumbnailSize);
|
||||
SourceControlThumbnail(SharedThumbnailKey key);
|
||||
~SourceControlThumbnail() override;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -24,8 +24,6 @@ namespace AzToolsFramework
|
||||
{
|
||||
namespace Thumbnailer
|
||||
{
|
||||
static const int DefaultIconSize = 16;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// ThumbnailKey
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -54,10 +52,9 @@ namespace AzToolsFramework
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Thumbnail
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
Thumbnail::Thumbnail(SharedThumbnailKey key, int thumbnailSize)
|
||||
Thumbnail::Thumbnail(SharedThumbnailKey key)
|
||||
: QObject()
|
||||
, m_state(State::Unloaded)
|
||||
, m_thumbnailSize(thumbnailSize)
|
||||
, m_key(key)
|
||||
{
|
||||
connect(&m_watcher, &QFutureWatcher<void>::finished, this, [this]()
|
||||
@@ -91,19 +88,9 @@ namespace AzToolsFramework
|
||||
}
|
||||
}
|
||||
|
||||
QPixmap Thumbnail::GetPixmap() const
|
||||
const QPixmap& Thumbnail::GetPixmap() const
|
||||
{
|
||||
return GetPixmap(QSize(DefaultIconSize, DefaultIconSize));
|
||||
}
|
||||
|
||||
QPixmap Thumbnail::GetPixmap(const QSize& size) const
|
||||
{
|
||||
if (m_icon.isNull())
|
||||
{
|
||||
return m_pixmap;
|
||||
}
|
||||
|
||||
return m_icon.pixmap(size);
|
||||
return m_pixmap;
|
||||
}
|
||||
|
||||
SharedThumbnailKey Thumbnail::GetKey() const
|
||||
|
||||
@@ -19,7 +19,6 @@ AZ_PUSH_DISABLE_WARNING(4127 4251 4800, "-Wunknown-warning-option") // 4127: con
|
||||
// 4800: 'int': forcing value to bool 'true' or 'false' (performance warning)
|
||||
#include <QObject>
|
||||
#include <QPixmap>
|
||||
#include <QIcon>
|
||||
#include <QFutureWatcher>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
#endif
|
||||
@@ -86,12 +85,11 @@ namespace AzToolsFramework
|
||||
Failed
|
||||
};
|
||||
|
||||
Thumbnail(SharedThumbnailKey key, int thumbnailSize);
|
||||
Thumbnail(SharedThumbnailKey key);
|
||||
~Thumbnail() override;
|
||||
bool operator == (const Thumbnail& other) const;
|
||||
void Load();
|
||||
virtual QPixmap GetPixmap() const;
|
||||
virtual QPixmap GetPixmap(const QSize& size) const;
|
||||
const QPixmap& GetPixmap() const;
|
||||
virtual void UpdateTime(float /*deltaTime*/) {}
|
||||
SharedThumbnailKey GetKey() const;
|
||||
State GetState() const;
|
||||
@@ -105,10 +103,8 @@ namespace AzToolsFramework
|
||||
protected:
|
||||
QFutureWatcher<void> m_watcher;
|
||||
State m_state;
|
||||
int m_thumbnailSize;
|
||||
SharedThumbnailKey m_key;
|
||||
QPixmap m_pixmap;
|
||||
QIcon m_icon;
|
||||
|
||||
virtual void LoadThread() {}
|
||||
};
|
||||
@@ -122,7 +118,6 @@ namespace AzToolsFramework
|
||||
ThumbnailProvider() = default;
|
||||
virtual ~ThumbnailProvider() = default;
|
||||
virtual bool GetThumbnail(SharedThumbnailKey key, SharedThumbnail& thumbnail) = 0;
|
||||
virtual void SetThumbnailSize(int thumbnailSize) = 0;
|
||||
//! Priority identifies ThumbnailProvider order in ThumbnailContext
|
||||
//! Higher priority means this ThumbnailProvider will take precedence in generating a thumbnail when
|
||||
//! a supplied ThumbnailKey is supported by multiple providers.
|
||||
@@ -185,10 +180,7 @@ namespace AzToolsFramework
|
||||
|
||||
bool GetThumbnail(SharedThumbnailKey key, SharedThumbnail& thumbnail) override;
|
||||
|
||||
void SetThumbnailSize(int thumbnailSize) override;
|
||||
|
||||
protected:
|
||||
int m_thumbnailSize;
|
||||
AZStd::unordered_map<SharedThumbnailKey, SharedThumbnail, Hasher, EqualKey> m_cache;
|
||||
|
||||
//! Check if thumbnail key is handled by this provider, overload in derived class
|
||||
|
||||
@@ -18,7 +18,6 @@ namespace AzToolsFramework
|
||||
{
|
||||
template <class ThumbnailType, class Hasher, class EqualKey>
|
||||
ThumbnailCache<ThumbnailType, Hasher, EqualKey>::ThumbnailCache()
|
||||
: m_thumbnailSize(0)
|
||||
{
|
||||
BusConnect();
|
||||
}
|
||||
@@ -49,17 +48,11 @@ namespace AzToolsFramework
|
||||
}
|
||||
if (IsSupportedThumbnail(key))
|
||||
{
|
||||
thumbnail = QSharedPointer<ThumbnailType>(new ThumbnailType(key, m_thumbnailSize));
|
||||
thumbnail = QSharedPointer<ThumbnailType>(new ThumbnailType(key));
|
||||
m_cache[key] = thumbnail;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
template <class ThumbnailType, class Hasher, class EqualKey>
|
||||
void ThumbnailCache<ThumbnailType, Hasher, EqualKey>::SetThumbnailSize(int thumbnailSize)
|
||||
{
|
||||
m_thumbnailSize = thumbnailSize;
|
||||
}
|
||||
} // namespace Thumbnailer
|
||||
} // namespace AzToolsFramework
|
||||
|
||||
@@ -24,10 +24,9 @@ namespace AzToolsFramework
|
||||
{
|
||||
namespace Thumbnailer
|
||||
{
|
||||
ThumbnailContext::ThumbnailContext(int thumbnailSize)
|
||||
: m_missingThumbnail(new MissingThumbnail(thumbnailSize))
|
||||
, m_loadingThumbnail(new LoadingThumbnail(thumbnailSize))
|
||||
, m_thumbnailSize(thumbnailSize)
|
||||
ThumbnailContext::ThumbnailContext()
|
||||
: m_missingThumbnail(new MissingThumbnail())
|
||||
, m_loadingThumbnail(new LoadingThumbnail())
|
||||
, m_threadPool(this)
|
||||
{
|
||||
ThumbnailContextRequestBus::Handler::BusConnect();
|
||||
@@ -120,7 +119,6 @@ namespace AzToolsFramework
|
||||
return;
|
||||
}
|
||||
|
||||
providerToAdd->SetThumbnailSize(m_thumbnailSize);
|
||||
m_providers.insert(providerToAdd);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,9 +45,9 @@ namespace AzToolsFramework
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
AZ_CLASS_ALLOCATOR(ThumbnailContext, AZ::SystemAllocator, 0)
|
||||
AZ_CLASS_ALLOCATOR(ThumbnailContext, AZ::SystemAllocator, 0);
|
||||
|
||||
explicit ThumbnailContext(int thumbnailSize);
|
||||
ThumbnailContext();
|
||||
~ThumbnailContext() override;
|
||||
|
||||
//! Is the thumbnail currently loading or is about to load.
|
||||
@@ -82,8 +82,6 @@ namespace AzToolsFramework
|
||||
SharedThumbnail m_missingThumbnail;
|
||||
//! Default loading thumbnail used when thumbnail is found by is not yet generated
|
||||
SharedThumbnail m_loadingThumbnail;
|
||||
//! Thumbnail size (width and height in pixels)
|
||||
int m_thumbnailSize;
|
||||
//! There is only a limited number of threads on global threadPool, because there can be many thumbnails rendering at once
|
||||
//! an individual threadPool is needed to avoid deadlocks
|
||||
QThreadPool m_threadPool;
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
public:
|
||||
//! Add thumbnail context
|
||||
virtual void RegisterContext(const char* contextName, int thumbnailSize) = 0;
|
||||
virtual void RegisterContext(const char* contextName) = 0;
|
||||
|
||||
//! Remove thumbnail context and all associated ThumbnailProviders
|
||||
virtual void UnregisterContext(const char* contextName) = 0;
|
||||
|
||||
@@ -32,8 +32,7 @@ namespace AzToolsFramework
|
||||
|
||||
void ThumbnailerComponent::Activate()
|
||||
{
|
||||
int thumbnailSize = qApp->style()->pixelMetric(QStyle::PM_SmallIconSize);
|
||||
RegisterContext(ThumbnailContext::DefaultContext, thumbnailSize);
|
||||
RegisterContext(ThumbnailContext::DefaultContext);
|
||||
BusConnect();
|
||||
}
|
||||
|
||||
@@ -62,10 +61,10 @@ namespace AzToolsFramework
|
||||
provided.push_back(AZ_CRC("ThumbnailerService", 0x65422b97));
|
||||
}
|
||||
|
||||
void ThumbnailerComponent::RegisterContext(const char* contextName, int thumbnailSize)
|
||||
void ThumbnailerComponent::RegisterContext(const char* contextName)
|
||||
{
|
||||
AZ_Assert(m_thumbnails.find(contextName) == m_thumbnails.end(), "Context %s already registered", contextName);
|
||||
m_thumbnails[contextName] = AZStd::make_shared<ThumbnailContext>(thumbnailSize);
|
||||
m_thumbnails[contextName] = AZStd::make_shared<ThumbnailContext>();
|
||||
}
|
||||
|
||||
void ThumbnailerComponent::UnregisterContext(const char* contextName)
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace AzToolsFramework
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// ThumbnailerRequests
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void RegisterContext(const char* contextName, int thumbnailSize) override;
|
||||
void RegisterContext(const char* contextName) override;
|
||||
void UnregisterContext(const char* contextName) override;
|
||||
bool HasContext(const char* contextName) const override;
|
||||
void RegisterThumbnailProvider(SharedThumbnailProvider provider, const char* contextName) override;
|
||||
|
||||
@@ -286,12 +286,12 @@ namespace AzToolsFramework
|
||||
ComponentModeFramework::EditorComponentModeNotificationBus::Handler::BusConnect(
|
||||
GetEntityContextId());
|
||||
EditorEntityInfoNotificationBus::Handler::BusConnect();
|
||||
AZ::Interface<EntityOutlinerWidgetInterface>::Register(this);
|
||||
Prefab::PrefabPublicNotificationBus::Handler::BusConnect();
|
||||
}
|
||||
|
||||
EntityOutlinerWidget::~EntityOutlinerWidget()
|
||||
{
|
||||
AZ::Interface<EntityOutlinerWidgetInterface>::Unregister(this);
|
||||
Prefab::PrefabPublicNotificationBus::Handler::BusDisconnect();
|
||||
ComponentModeFramework::EditorComponentModeNotificationBus::Handler::BusDisconnect();
|
||||
EditorEntityInfoNotificationBus::Handler::BusDisconnect();
|
||||
EditorPickModeNotificationBus::Handler::BusDisconnect();
|
||||
@@ -1109,25 +1109,18 @@ namespace AzToolsFramework
|
||||
setEnabled(true);
|
||||
SetEntityOutlinerState(m_gui, true);
|
||||
}
|
||||
|
||||
void EntityOutlinerWidget::SetUpdatesEnabled(bool enable)
|
||||
|
||||
void EntityOutlinerWidget::OnPrefabInstancePropagationBegin()
|
||||
{
|
||||
if (enable)
|
||||
{
|
||||
QTimer::singleShot(1, this, [this]() {
|
||||
m_gui->m_objectTree->setUpdatesEnabled(true);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
m_gui->m_objectTree->setUpdatesEnabled(false);
|
||||
}
|
||||
m_gui->m_objectTree->setUpdatesEnabled(false);
|
||||
}
|
||||
|
||||
void EntityOutlinerWidget::ExpandEntityChildren(AZ::EntityId entityId)
|
||||
void EntityOutlinerWidget::OnPrefabInstancePropagationEnd()
|
||||
{
|
||||
QModelIndex index = GetIndexFromEntityId(entityId);
|
||||
m_gui->m_objectTree->expand(index);
|
||||
QTimer::singleShot(1, this, [this]() {
|
||||
m_gui->m_objectTree->setUpdatesEnabled(true);
|
||||
m_gui->m_objectTree->expand(m_proxyModel->index(0,0));
|
||||
});
|
||||
}
|
||||
|
||||
void EntityOutlinerWidget::OnEntityInfoUpdatedAddChildEnd(AZ::EntityId /*parentId*/, AZ::EntityId childId)
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
#include <AzToolsFramework/ComponentMode/EditorComponentModeBus.h>
|
||||
#include <AzToolsFramework/Entity/EditorEntityInfoBus.h>
|
||||
#include <AzToolsFramework/Entity/EditorEntityContextBus.h>
|
||||
#include <AzToolsFramework/Prefab/PrefabPublicNotificationBus.h>
|
||||
#include <AzToolsFramework/ToolsMessaging/EntityHighlightBus.h>
|
||||
#include <AzToolsFramework/UI/Outliner/EntityOutlinerCacheBus.h>
|
||||
#include <AzToolsFramework/UI/Outliner/EntityOutlinerSearchWidget.h>
|
||||
#include <AzToolsFramework/UI/Outliner/EntityOutlinerWidgetInterface.h>
|
||||
#include <AzToolsFramework/UI/SearchWidget/SearchWidgetTypes.hxx>
|
||||
|
||||
#include <QIcon>
|
||||
@@ -62,7 +62,7 @@ namespace AzToolsFramework
|
||||
, private EditorEntityContextNotificationBus::Handler
|
||||
, private EditorEntityInfoNotificationBus::Handler
|
||||
, private ComponentModeFramework::EditorComponentModeNotificationBus::Handler
|
||||
, private EntityOutlinerWidgetInterface
|
||||
, private Prefab::PrefabPublicNotificationBus::Handler
|
||||
{
|
||||
Q_OBJECT;
|
||||
public:
|
||||
@@ -106,9 +106,9 @@ namespace AzToolsFramework
|
||||
void EnteredComponentMode(const AZStd::vector<AZ::Uuid>& componentModeTypes) override;
|
||||
void LeftComponentMode(const AZStd::vector<AZ::Uuid>& componentModeTypes) override;
|
||||
|
||||
// EntityOutlinerWidgetInterface
|
||||
void SetUpdatesEnabled(bool enable) override;
|
||||
void ExpandEntityChildren(AZ::EntityId entityId) override;
|
||||
// PrefabPublicNotificationBus
|
||||
void OnPrefabInstancePropagationBegin() override;
|
||||
void OnPrefabInstancePropagationEnd() override;
|
||||
|
||||
// Build a selection object from the given entities. Entities already in the Widget's selection buffers are ignored.
|
||||
template <class EntityIdCollection>
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/Interface/Interface.h>
|
||||
#include <AzCore/Serialization/SerializeContext.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
class EntityOutlinerWidgetInterface
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(EntityOutlinerWidgetInterface, "{30C0F252-EC84-4196-BF59-EB9E73B8ADCB}");
|
||||
|
||||
virtual void SetUpdatesEnabled(bool enable) = 0;
|
||||
virtual void ExpandEntityChildren(AZ::EntityId entityId) = 0;
|
||||
};
|
||||
|
||||
} // namespace AzToolsFramework
|
||||
|
||||
@@ -63,7 +63,7 @@ AZ_POP_DISABLE_WARNING
|
||||
|
||||
#include <UI/PropertyEditor/Model/AssetCompleterModel.h>
|
||||
#include <UI/PropertyEditor/View/AssetCompleterListView.h>
|
||||
#include <UI/PropertyEditor/ThumbnailDropDown.h>
|
||||
#include <UI/PropertyEditor/ThumbnailPropertyCtrl.h>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
@@ -93,15 +93,11 @@ namespace AzToolsFramework
|
||||
|
||||
setAcceptDrops(true);
|
||||
|
||||
m_thumbnail = new Thumbnailer::ThumbnailWidget(this);
|
||||
m_thumbnail->setFixedSize(QSize(24, 24));
|
||||
m_thumbnail = new ThumbnailPropertyCtrl(this);
|
||||
m_thumbnail->setFixedSize(QSize(40, 24));
|
||||
m_thumbnail->setVisible(false);
|
||||
|
||||
m_thumbnailDropDown = new ThumbnailDropDown(this);
|
||||
m_thumbnailDropDown->setFixedSize(QSize(40, 24));
|
||||
m_thumbnailDropDown->setVisible(false);
|
||||
|
||||
connect(m_thumbnailDropDown, &ThumbnailDropDown::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked);
|
||||
connect(m_thumbnail, &ThumbnailPropertyCtrl::clicked, this, &PropertyAssetCtrl::OnThumbnailClicked);
|
||||
|
||||
m_editButton = new QToolButton(this);
|
||||
m_editButton->setAutoRaise(true);
|
||||
@@ -112,7 +108,6 @@ namespace AzToolsFramework
|
||||
connect(m_editButton, &QToolButton::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked);
|
||||
|
||||
pLayout->addWidget(m_thumbnail);
|
||||
pLayout->addWidget(m_thumbnailDropDown);
|
||||
pLayout->addWidget(m_browseEdit);
|
||||
pLayout->addWidget(m_editButton);
|
||||
|
||||
@@ -188,6 +183,17 @@ namespace AzToolsFramework
|
||||
}
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::OnThumbnailClicked()
|
||||
{
|
||||
const AZ::Data::AssetId assetID = GetCurrentAssetID();
|
||||
if (m_thumbnailCallback)
|
||||
{
|
||||
AZ_Error("Asset Property", m_editNotifyTarget, "No notification target set for edit callback.");
|
||||
m_thumbnailCallback->Invoke(m_editNotifyTarget, assetID, GetCurrentAssetType());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::OnCompletionModelReset()
|
||||
{
|
||||
if (!m_completerIsActive)
|
||||
@@ -674,6 +680,13 @@ namespace AzToolsFramework
|
||||
AzQtComponents::BrowseEdit::removeDropTargetStyle(m_browseEdit);
|
||||
}
|
||||
|
||||
AssetSelectionModel PropertyAssetCtrl::GetAssetSelectionModel()
|
||||
{
|
||||
auto selectionModel = AssetSelectionModel::AssetTypeSelection(GetCurrentAssetType());
|
||||
selectionModel.SetTitle(m_title);
|
||||
return selectionModel;
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::UpdateTabOrder()
|
||||
{
|
||||
setTabOrder(m_browseEdit, m_editButton);
|
||||
@@ -1052,6 +1065,11 @@ namespace AzToolsFramework
|
||||
m_editButton->setIcon(icon);
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetTitle(const QString& title)
|
||||
{
|
||||
m_title = title;
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetEditNotifyTarget(void* editNotifyTarget)
|
||||
{
|
||||
m_editNotifyTarget = editNotifyTarget;
|
||||
@@ -1091,10 +1109,10 @@ namespace AzToolsFramework
|
||||
void PropertyAssetCtrl::UpdateThumbnail()
|
||||
{
|
||||
m_thumbnail->setVisible(m_showThumbnail);
|
||||
m_thumbnailDropDown->setVisible(m_showThumbnailDropDown);
|
||||
|
||||
if (m_showThumbnail || m_showThumbnailDropDown)
|
||||
if (m_showThumbnail)
|
||||
{
|
||||
m_thumbnail->ShowDropDownArrow(m_showThumbnailDropDownButton);
|
||||
const AZ::Data::AssetId assetID = GetCurrentAssetID();
|
||||
if (assetID.IsValid())
|
||||
{
|
||||
@@ -1112,17 +1130,12 @@ namespace AzToolsFramework
|
||||
{
|
||||
m_thumbnail->SetThumbnailKey(thumbnailKey, Thumbnailer::ThumbnailContext::DefaultContext);
|
||||
}
|
||||
if (m_showThumbnailDropDown)
|
||||
{
|
||||
m_thumbnailDropDown->SetThumbnailKey(thumbnailKey, Thumbnailer::ThumbnailContext::DefaultContext);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_thumbnail->ClearThumbnail();
|
||||
m_thumbnailDropDown->ClearThumbnail();
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetClearButtonEnabled(bool enable)
|
||||
@@ -1156,14 +1169,19 @@ namespace AzToolsFramework
|
||||
return m_showThumbnail;
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetShowThumbnailDropDown(bool enable)
|
||||
void PropertyAssetCtrl::SetShowThumbnailDropDownButton(bool enable)
|
||||
{
|
||||
m_showThumbnailDropDown = enable;
|
||||
m_showThumbnailDropDownButton = enable;
|
||||
}
|
||||
|
||||
bool PropertyAssetCtrl::GetShowThumbnailDropDown() const
|
||||
bool PropertyAssetCtrl::GetShowThumbnailDropDownButton() const
|
||||
{
|
||||
return m_showThumbnailDropDown;
|
||||
return m_showThumbnailDropDownButton;
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetThumbnailCallback(EditCallbackType* editNotifyCallback)
|
||||
{
|
||||
m_thumbnailCallback = editNotifyCallback;
|
||||
}
|
||||
|
||||
const AZ::Uuid& AssetPropertyHandlerDefault::GetHandledType() const
|
||||
@@ -1187,7 +1205,16 @@ namespace AzToolsFramework
|
||||
{
|
||||
(void)debugName;
|
||||
|
||||
if (attrib == AZ_CRC("EditCallback", 0xb74f2ee1))
|
||||
if (attrib == AZ_CRC_CE("AssetPickerTitle"))
|
||||
{
|
||||
AZStd::string title;
|
||||
attrValue->Read<AZStd::string>(title);
|
||||
if (!title.empty())
|
||||
{
|
||||
GUI->SetTitle(title.c_str());
|
||||
}
|
||||
}
|
||||
else if (attrib == AZ_CRC("EditCallback", 0xb74f2ee1))
|
||||
{
|
||||
PropertyAssetCtrl::EditCallbackType* func = azdynamic_cast<PropertyAssetCtrl::EditCallbackType*>(attrValue->GetAttribute());
|
||||
if (func)
|
||||
@@ -1277,23 +1304,21 @@ namespace AzToolsFramework
|
||||
}
|
||||
else if (attrib == AZ_CRC_CE("Thumbnail"))
|
||||
{
|
||||
bool showThumbnail = false;
|
||||
if (attrValue->Read<bool>(showThumbnail))
|
||||
{
|
||||
GUI->SetShowThumbnail(showThumbnail);
|
||||
}
|
||||
GUI->SetShowThumbnail(true);
|
||||
}
|
||||
else if (attrib == AZ_CRC_CE("ThumbnailWithDropDown"))
|
||||
else if (attrib == AZ_CRC_CE("ThumbnailCallback"))
|
||||
{
|
||||
PropertyAssetCtrl::EditCallbackType* func = azdynamic_cast<PropertyAssetCtrl::EditCallbackType*>(attrValue->GetAttribute());
|
||||
if (func)
|
||||
{
|
||||
GUI->SetShowThumbnailDropDown(true);
|
||||
GUI->SetEditNotifyCallback(func);
|
||||
GUI->SetShowThumbnail(true);
|
||||
GUI->SetShowThumbnailDropDownButton(true);
|
||||
GUI->SetThumbnailCallback(func);
|
||||
}
|
||||
else
|
||||
{
|
||||
GUI->SetEditNotifyCallback(nullptr);
|
||||
GUI->SetShowThumbnailDropDownButton(false);
|
||||
GUI->SetThumbnailCallback(nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace AzToolsFramework
|
||||
{
|
||||
class AssetCompleterModel;
|
||||
class AssetCompleterListView;
|
||||
class ThumbnailDropDown;
|
||||
class ThumbnailPropertyCtrl;
|
||||
|
||||
namespace Thumbnailer
|
||||
{
|
||||
@@ -89,14 +89,14 @@ namespace AzToolsFramework
|
||||
void dragLeaveEvent(QDragLeaveEvent* event) override;
|
||||
void dropEvent(QDropEvent* event) override;
|
||||
|
||||
virtual AssetSelectionModel GetAssetSelectionModel() { return AssetSelectionModel::AssetTypeSelection(GetCurrentAssetType()); }
|
||||
virtual AssetSelectionModel GetAssetSelectionModel();
|
||||
|
||||
signals:
|
||||
void OnAssetIDChanged(AZ::Data::AssetId newAssetID);
|
||||
|
||||
protected:
|
||||
ThumbnailDropDown* m_thumbnailDropDown = nullptr;
|
||||
Thumbnailer::ThumbnailWidget* m_thumbnail = nullptr;
|
||||
QString m_title;
|
||||
ThumbnailPropertyCtrl* m_thumbnail = nullptr;
|
||||
QPushButton* m_errorButton = nullptr;
|
||||
QToolButton* m_editButton = nullptr;
|
||||
|
||||
@@ -157,8 +157,8 @@ namespace AzToolsFramework
|
||||
bool m_showProductAssetName = true;
|
||||
|
||||
bool m_showThumbnail = false;
|
||||
|
||||
bool m_showThumbnailDropDown = false;
|
||||
bool m_showThumbnailDropDownButton = false;
|
||||
EditCallbackType* m_thumbnailCallback = nullptr;
|
||||
|
||||
// ! Default suffix used in the field's placeholder text when a default value is set.
|
||||
const char* m_DefaultSuffix = " (default)";
|
||||
@@ -192,6 +192,7 @@ namespace AzToolsFramework
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public slots:
|
||||
void SetTitle(const QString& title);
|
||||
void SetEditNotifyTarget(void* editNotifyTarget);
|
||||
void SetEditNotifyCallback(EditCallbackType* editNotifyCallback); // This is meant to be used with the "EditCallback" Attribute
|
||||
void SetClearNotifyCallback(ClearCallbackType* clearNotifyCallback); // This is meant to be used with the "ClearNotify" Attribute
|
||||
@@ -209,8 +210,9 @@ namespace AzToolsFramework
|
||||
|
||||
void SetShowThumbnail(bool enable);
|
||||
bool GetShowThumbnail() const;
|
||||
void SetShowThumbnailDropDown(bool enable);
|
||||
bool GetShowThumbnailDropDown() const;
|
||||
void SetShowThumbnailDropDownButton(bool enable);
|
||||
bool GetShowThumbnailDropDownButton() const;
|
||||
void SetThumbnailCallback(EditCallbackType* editNotifyCallback);
|
||||
|
||||
void SetSelectedAssetID(const AZ::Data::AssetId& newID);
|
||||
void SetCurrentAssetType(const AZ::Data::AssetType& newType);
|
||||
@@ -222,6 +224,7 @@ namespace AzToolsFramework
|
||||
void UpdateAssetDisplay();
|
||||
void OnLineEditFocus(bool focus);
|
||||
virtual void OnEditButtonClicked();
|
||||
void OnThumbnailClicked();
|
||||
void OnCompletionModelReset();
|
||||
void OnAutocomplete(const QModelIndex& index);
|
||||
void OnTextChange(const QString& text);
|
||||
|
||||
@@ -19,12 +19,14 @@ AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // 4251: 'QRawFon
|
||||
#include <QPainter>
|
||||
#include <UI/UICore/AspectRatioAwarePixmapWidget.hxx>
|
||||
#include <Thumbnails/ThumbnailWidget.h>
|
||||
#include <QApplication>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
#include "ThumbnailDropDown.h"
|
||||
#include "ThumbnailPropertyCtrl.h"
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
ThumbnailDropDown::ThumbnailDropDown(QWidget* parent)
|
||||
|
||||
ThumbnailPropertyCtrl::ThumbnailPropertyCtrl(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
{
|
||||
QHBoxLayout* pLayout = new QHBoxLayout();
|
||||
@@ -37,6 +39,7 @@ namespace AzToolsFramework
|
||||
m_dropDownArrow = new AspectRatioAwarePixmapWidget(this);
|
||||
m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0.png"));
|
||||
m_dropDownArrow->setFixedSize(QSize(8, 24));
|
||||
ShowDropDownArrow(false);
|
||||
|
||||
m_emptyThumbnail = new QLabel(this);
|
||||
m_emptyThumbnail->setPixmap(QPixmap(":/stylesheet/img/line.png"));
|
||||
@@ -51,19 +54,33 @@ namespace AzToolsFramework
|
||||
setLayout(pLayout);
|
||||
}
|
||||
|
||||
void ThumbnailDropDown::SetThumbnailKey(Thumbnailer::SharedThumbnailKey key, const char* contextName)
|
||||
void ThumbnailPropertyCtrl::SetThumbnailKey(Thumbnailer::SharedThumbnailKey key, const char* contextName)
|
||||
{
|
||||
m_key = key;
|
||||
m_emptyThumbnail->setVisible(false);
|
||||
m_thumbnail->SetThumbnailKey(key, contextName);
|
||||
}
|
||||
|
||||
void ThumbnailDropDown::ClearThumbnail()
|
||||
void ThumbnailPropertyCtrl::ClearThumbnail()
|
||||
{
|
||||
m_emptyThumbnail->setVisible(true);
|
||||
m_thumbnail->ClearThumbnail();
|
||||
}
|
||||
|
||||
bool ThumbnailDropDown::event(QEvent* e)
|
||||
void ThumbnailPropertyCtrl::ShowDropDownArrow(bool visible)
|
||||
{
|
||||
if (visible)
|
||||
{
|
||||
setFixedSize(QSize(40, 24));
|
||||
}
|
||||
else
|
||||
{
|
||||
setFixedSize(QSize(24, 24));
|
||||
}
|
||||
m_dropDownArrow->setVisible(visible);
|
||||
}
|
||||
|
||||
bool ThumbnailPropertyCtrl::event(QEvent* e)
|
||||
{
|
||||
if (isEnabled())
|
||||
{
|
||||
@@ -77,7 +94,7 @@ namespace AzToolsFramework
|
||||
return QWidget::event(e);
|
||||
}
|
||||
|
||||
void ThumbnailDropDown::paintEvent(QPaintEvent* e)
|
||||
void ThumbnailPropertyCtrl::paintEvent(QPaintEvent* e)
|
||||
{
|
||||
QPainter p(this);
|
||||
QRect targetRect(QPoint(), QSize(40, 24));
|
||||
@@ -85,17 +102,32 @@ namespace AzToolsFramework
|
||||
QWidget::paintEvent(e);
|
||||
}
|
||||
|
||||
void ThumbnailDropDown::enterEvent(QEvent* e)
|
||||
void ThumbnailPropertyCtrl::enterEvent(QEvent* e)
|
||||
{
|
||||
m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0_highlighted.png"));
|
||||
if (!m_thumbnailEnlarged && m_key)
|
||||
{
|
||||
QPoint position = mapToGlobal(pos() - QPoint(185, 0));
|
||||
QSize size(180, 180);
|
||||
m_thumbnailEnlarged.reset(new Thumbnailer::ThumbnailWidget());
|
||||
m_thumbnailEnlarged->setFixedSize(size);
|
||||
m_thumbnailEnlarged->move(position);
|
||||
m_thumbnailEnlarged->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
|
||||
m_thumbnailEnlarged->SetThumbnailKey(m_key);
|
||||
m_thumbnailEnlarged->show();
|
||||
}
|
||||
QWidget::enterEvent(e);
|
||||
}
|
||||
|
||||
void ThumbnailDropDown::leaveEvent(QEvent* e)
|
||||
void ThumbnailPropertyCtrl::leaveEvent(QEvent* e)
|
||||
{
|
||||
m_dropDownArrow->setPixmap(QPixmap(":/stylesheet/img/triangle0.png"));
|
||||
if (m_thumbnailEnlarged)
|
||||
{
|
||||
m_thumbnailEnlarged.reset();
|
||||
}
|
||||
QWidget::leaveEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
#include "UI/PropertyEditor/moc_ThumbnailDropDown.cpp"
|
||||
#include "UI/PropertyEditor/moc_ThumbnailPropertyCtrl.cpp"
|
||||
@@ -30,17 +30,20 @@ namespace AzToolsFramework
|
||||
class ThumbnailWidget;
|
||||
}
|
||||
|
||||
class ThumbnailDropDown : public QWidget
|
||||
//! Used by PropertyAssetCtrl to display thumbnail preview of the asset as well as additional drop-down actions
|
||||
class ThumbnailPropertyCtrl : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ThumbnailDropDown(QWidget* parent = nullptr);
|
||||
explicit ThumbnailPropertyCtrl(QWidget* parent = nullptr);
|
||||
|
||||
//! Call this to set what thumbnail widget will display
|
||||
void SetThumbnailKey(Thumbnailer::SharedThumbnailKey key, const char* contextName = "Default");
|
||||
//! Remove current thumbnail
|
||||
void ClearThumbnail();
|
||||
|
||||
void ShowDropDownArrow(bool visible);
|
||||
|
||||
bool event(QEvent* e) override;
|
||||
|
||||
Q_SIGNALS:
|
||||
@@ -52,7 +55,9 @@ namespace AzToolsFramework
|
||||
void leaveEvent(QEvent* e) override;
|
||||
|
||||
private:
|
||||
Thumbnailer::SharedThumbnailKey m_key;
|
||||
Thumbnailer::ThumbnailWidget* m_thumbnail = nullptr;
|
||||
QScopedPointer<Thumbnailer::ThumbnailWidget> m_thumbnailEnlarged;
|
||||
QLabel* m_emptyThumbnail = nullptr;
|
||||
AspectRatioAwarePixmapWidget* m_dropDownArrow = nullptr;
|
||||
};
|
||||
@@ -417,8 +417,8 @@ set(FILES
|
||||
UI/PropertyEditor/GrowTextEdit.cpp
|
||||
UI/PropertyEditor/MultiLineTextEditHandler.h
|
||||
UI/PropertyEditor/MultiLineTextEditHandler.cpp
|
||||
UI/PropertyEditor/ThumbnailDropDown.h
|
||||
UI/PropertyEditor/ThumbnailDropDown.cpp
|
||||
UI/PropertyEditor/ThumbnailPropertyCtrl.h
|
||||
UI/PropertyEditor/ThumbnailPropertyCtrl.cpp
|
||||
UI/Slice/SlicePushWidget.cpp
|
||||
UI/Slice/SlicePushWidget.hxx
|
||||
UI/Slice/SliceOverridesNotificationWindow.cpp
|
||||
@@ -652,6 +652,7 @@ set(FILES
|
||||
Prefab/PrefabPublicHandler.h
|
||||
Prefab/PrefabPublicHandler.cpp
|
||||
Prefab/PrefabPublicInterface.h
|
||||
Prefab/PrefabPublicNotificationBus.h
|
||||
Prefab/PrefabUndo.h
|
||||
Prefab/PrefabUndo.cpp
|
||||
Prefab/PrefabUndoCache.cpp
|
||||
@@ -687,7 +688,6 @@ set(FILES
|
||||
UI/Outliner/EntityOutlinerDisplayOptionsMenu.cpp
|
||||
UI/Outliner/EntityOutlinerTreeView.hxx
|
||||
UI/Outliner/EntityOutlinerTreeView.cpp
|
||||
UI/Outliner/EntityOutlinerWidgetInterface.h
|
||||
UI/Outliner/EntityOutlinerWidget.hxx
|
||||
UI/Outliner/EntityOutlinerWidget.cpp
|
||||
UI/Outliner/EntityOutlinerCacheBus.h
|
||||
|
||||
@@ -81,12 +81,17 @@ namespace UnitTest
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
anyEntitySelected, &ToolsApplicationRequests::AreAnyEntitiesSelected);
|
||||
|
||||
int selectedEntitiesCount = 0;
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
selectedEntitiesCount, &ToolsApplicationRequests::GetSelectedEntitiesCount);
|
||||
|
||||
EntityIdList selectedEntityIds;
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
selectedEntityIds, &ToolsApplicationRequests::GetSelectedEntities);
|
||||
|
||||
EXPECT_TRUE(testEntitySelected);
|
||||
EXPECT_TRUE(anyEntitySelected);
|
||||
EXPECT_EQ(selectedEntitiesCount, 1);
|
||||
EXPECT_EQ(selectedEntityIds.size(), 1);
|
||||
EXPECT_EQ(selectedEntityIds.front(), testEntityId);
|
||||
|
||||
@@ -100,11 +105,15 @@ namespace UnitTest
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
anyEntitySelected, &ToolsApplicationRequests::AreAnyEntitiesSelected);
|
||||
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
selectedEntitiesCount, &ToolsApplicationRequests::GetSelectedEntitiesCount);
|
||||
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
selectedEntityIds, &ToolsApplicationRequests::GetSelectedEntities);
|
||||
|
||||
EXPECT_FALSE(testEntitySelected);
|
||||
EXPECT_FALSE(anyEntitySelected);
|
||||
EXPECT_EQ(selectedEntitiesCount, 0);
|
||||
EXPECT_TRUE(selectedEntityIds.empty());
|
||||
}
|
||||
|
||||
@@ -141,11 +150,16 @@ namespace UnitTest
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
anyEntitySelected, &ToolsApplicationRequests::AreAnyEntitiesSelected);
|
||||
|
||||
int selectedEntitiesCount = 0;
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
selectedEntitiesCount, &ToolsApplicationRequests::GetSelectedEntitiesCount);
|
||||
|
||||
EntityIdList actualSelectedEntityIds;
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
actualSelectedEntityIds, &ToolsApplicationRequests::GetSelectedEntities);
|
||||
|
||||
EXPECT_TRUE(anyEntitySelected);
|
||||
EXPECT_EQ(selectedEntitiesCount, expectedSelectedEntityIds.size());
|
||||
EXPECT_EQ(actualSelectedEntityIds.size(), expectedSelectedEntityIds.size());
|
||||
for (auto& id : expectedSelectedEntityIds)
|
||||
{
|
||||
@@ -160,10 +174,14 @@ namespace UnitTest
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
anyEntitySelected, &ToolsApplicationRequests::AreAnyEntitiesSelected);
|
||||
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
selectedEntitiesCount, &ToolsApplicationRequests::GetSelectedEntitiesCount);
|
||||
|
||||
ToolsApplicationRequestBus::BroadcastResult(
|
||||
actualSelectedEntityIds, &ToolsApplicationRequests::GetSelectedEntities);
|
||||
|
||||
EXPECT_TRUE(anyEntitySelected);
|
||||
EXPECT_EQ(selectedEntitiesCount, expectedSelectedEntityIds.size());
|
||||
EXPECT_EQ(actualSelectedEntityIds.size(), expectedSelectedEntityIds.size());
|
||||
for (auto& id : expectedSelectedEntityIds)
|
||||
{
|
||||
|
||||
@@ -85,8 +85,6 @@ namespace UnitTest
|
||||
{
|
||||
constexpr const char* contextName1 = "Context1";
|
||||
constexpr const char* contextName2 = "Context2";
|
||||
constexpr int thumbnailSize1 = 128;
|
||||
constexpr int thumbnailSize2 = 256;
|
||||
|
||||
auto checkHasContext = [](const char* contextName)
|
||||
{
|
||||
@@ -98,12 +96,12 @@ namespace UnitTest
|
||||
EXPECT_FALSE(checkHasContext(contextName1));
|
||||
EXPECT_FALSE(checkHasContext(contextName2));
|
||||
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1, thumbnailSize1);
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1);
|
||||
|
||||
EXPECT_TRUE(checkHasContext(contextName1));
|
||||
EXPECT_FALSE(checkHasContext(contextName2));
|
||||
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName2, thumbnailSize2);
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName2);
|
||||
|
||||
EXPECT_TRUE(checkHasContext(contextName1));
|
||||
EXPECT_TRUE(checkHasContext(contextName2));
|
||||
@@ -123,8 +121,6 @@ namespace UnitTest
|
||||
{
|
||||
constexpr const char* contextName1 = "Context1";
|
||||
constexpr const char* contextName2 = "Context2";
|
||||
constexpr int thumbnailSize1 = 128;
|
||||
constexpr int thumbnailSize2 = 256;
|
||||
|
||||
auto checkHasContext = [](const char* contextName)
|
||||
{
|
||||
@@ -133,8 +129,8 @@ namespace UnitTest
|
||||
return hasContext;
|
||||
};
|
||||
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1, thumbnailSize1);
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName2, thumbnailSize2);
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1);
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName2);
|
||||
|
||||
EXPECT_TRUE(checkHasContext(contextName1));
|
||||
EXPECT_TRUE(checkHasContext(contextName2));
|
||||
@@ -149,12 +145,11 @@ namespace UnitTest
|
||||
TEST_F(ThumbnailerTests, ThumbnailerComponent_RegisterContextTwice_Assert)
|
||||
{
|
||||
constexpr const char* contextName1 = "Context1";
|
||||
constexpr int thumbnailSize1 = 128;
|
||||
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1, thumbnailSize1);
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1);
|
||||
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1, thumbnailSize1);
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRequestBus::Broadcast(&AzToolsFramework::Thumbnailer::ThumbnailerRequests::RegisterContext, contextName1);
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1);
|
||||
}
|
||||
|
||||
|
||||