You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Gems
Chris Santora 14d2e38b90 Refactored how model material slots work in preparation to support more flexible material conversion options for the scene asset pipeline. The material slot IDs are based on the MaterialUid that come from SceneAPI. Since these IDs are also used as the AssetId sub-ID for the converted material assets, the system was just checking the material asset sub-ID to determine the material slot ID. But in order to support certain FBX material conversion options, we needed to break this tie, so the slot ID is separate from the AssetId of the material in that slot. This will allow some other material to be used in the slot, instead of being forced to use one that was generated from the FBX.
Here we inttroduce a new struct ModelMaterialSlot which formalizes the concept of material slot, with an ID, display name, and default material assignment. The ID still comes from the MaterialUid like before. The display name is built-in, rather than being parsed out from the asset file name. And the default material assignment can be any material asset, it doesn't have to come from the FBX (or other scene file).

This commit is just the preliminary set of changes. Cursory testing shows that it works pretty well but more testing is needed (and likely some fixes) before merging.

Here is what's left to do...
Add serialization version converters to preserve prior prefab data.
See if we can get rid of GetLabelByAssetId function only rely on the display name inside ModelMaterialSlot.
I'm not sure if the condition for enabling the "Edit Material Instance..." context menu item is correct.
Test actors
Lots more testing in general

Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
5 years ago
..
AWSClientAuth Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
AWSCore [AWS][AppSec][Medium] Bucket logging not enabled in sample template (#2243) 5 years ago
AWSGameLift Fixes for release builds 5 years ago
AWSMetrics [AWS][Metrics] Resource names are too long leading to CDK deployment failures (#2291) 5 years ago
Achievements Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
AssetMemoryAnalyzer Non unity compile fixes (#2365) 5 years ago
AssetValidation Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Atom Refactored how model material slots work in preparation to support more flexible material conversion options for the scene asset pipeline. The material slot IDs are based on the MaterialUid that come from SceneAPI. Since these IDs are also used as the AssetId sub-ID for the converted material assets, the system was just checking the material asset sub-ID to determine the material slot ID. But in order to support certain FBX material conversion options, we needed to break this tie, so the slot ID is separate from the AssetId of the material in that slot. This will allow some other material to be used in the slot, instead of being forced to use one that was generated from the FBX. 5 years ago
AtomContent Merge pull request #2235 from aws-lumberyard-dev/daimini/gitflow_210716_o3de 5 years ago
AtomLyIntegration Refactored how model material slots work in preparation to support more flexible material conversion options for the scene asset pipeline. The material slot IDs are based on the MaterialUid that come from SceneAPI. Since these IDs are also used as the AssetId sub-ID for the converted material assets, the system was just checking the material asset sub-ID to determine the material slot ID. But in order to support certain FBX material conversion options, we needed to break this tie, so the slot ID is separate from the AssetId of the material in that slot. This will allow some other material to be used in the slot, instead of being forced to use one that was generated from the FBX. 5 years ago
AtomTressFX Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
AudioEngineWwise Don't require a specific version of Wwise SDK, allow for later versions to be used (#2484) 5 years ago
AudioSystem Fixes resource selectors not showing (#2621) 5 years ago
BarrierInput Barrier (formerly Synergy) Input Gem (#2336) 5 years ago
Blast Merge branch 'development' into cmake/SPEC-7179 5 years ago
Camera Add an Orthogonal Projection option to the Camera Gem (#2414) 5 years ago
CameraFramework LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
CertificateManager Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
CrashReporting Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
CustomAssetExample Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
DebugDraw LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
DevTextures Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
EMotionFX Removed MCore::Quaternion AZ::Quaternion comparison tests 5 years ago
EditorPythonBindings Debug Trace Messages for Automation queues bus calls. (#2328) 5 years ago
ExpressionEvaluation Merge pull request #2235 from aws-lumberyard-dev/daimini/gitflow_210716_o3de 5 years ago
FastNoise LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
GameState Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
GameStateSamples Merge pull request #2235 from aws-lumberyard-dev/daimini/gitflow_210716_o3de 5 years ago
Gestures Merge branch 'development' into cmake/SPEC-7179 5 years ago
GradientSignal LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
GraphCanvas fix for double asset registration and multiple outs from loop nodes 5 years ago
GraphModel Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
HttpRequestor Merge branch 'development' into cmake/SPEC-7179 5 years ago
ImGui Fix the home key popping up ImGui when it shouldn't. (#2620) 5 years ago
InAppPurchases Non unity compile fixes (#2365) 5 years ago
LandscapeCanvas LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
LmbrCentral Merge branch 'development' of https://github.com/o3de/o3de into carlitosan/development 5 years ago
LocalUser Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
LyShine LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
LyShineExamples Merge branch 'development' into cmake/SPEC-7179 5 years ago
Maestro Merge branch 'development' into cmake/SPEC-7179 5 years ago
MessagePopup Merge branch 'development' into cmake/SPEC-7179 5 years ago
Metastream Merge branch 'development' into cmake/SPEC-7179 5 years ago
Microphone changing type that was coming from a cry header (#2397) 5 years ago
Multiplayer Merge pull request #2618 from aws-lumberyard-dev/MPAsteroids 5 years ago
MultiplayerCompression Some var cleanup so it shows better-organized in cmake-gui. Some vars… (#2361) 5 years ago
NvCloth Fixed cloth tangent generation (from 'stabilization/2106' @26c9853f) 5 years ago
PBSreferenceMaterials Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
PhysX Fix Linux compilation error in test code 5 years ago
PhysXDebug Merge branch 'development' into cmake/SPEC-7179 5 years ago
PhysXSamples Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Prefab Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Presence Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
PrimitiveAssets Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
PythonAssetBuilder Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
QtForPython Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
RADTelemetry Some var cleanup so it shows better-organized in cmake-gui. Some vars… (#2361) 5 years ago
SaveData Merge branch 'development' into cmake/SPEC-7179 5 years ago
SceneLoggingExample Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
SceneProcessing TSpace setting for MikkT tangent generation (#2386) 5 years ago
ScriptCanvas remove accidental submission of commented out event handling 5 years ago
ScriptCanvasDeveloper Merge branch 'development' into cmake/SPEC-7179 5 years ago
ScriptCanvasPhysics Merge branch 'development' into cmake/SPEC-7179 5 years ago
ScriptCanvasTesting Merge branch 'development' into carlitosan_fix_for 5 years ago
ScriptEvents Merge branch 'development' of https://github.com/o3de/o3de into carlitosan/development 5 years ago
ScriptedEntityTweener Merge branch 'development' into cmake/SPEC-7179 5 years ago
SliceFavorites Merge branch 'development' into cmake/SPEC-7179 5 years ago
StartingPointCamera Merge branch 'development' into cmake/SPEC-7179 5 years ago
StartingPointInput Corrected the text message (#2483) 5 years ago
StartingPointMovement Merge branch 'development' into cmake/SPEC-7179 5 years ago
SurfaceData LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
TestAssetBuilder Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
TextureAtlas Merge branch 'development' into cmake/SPEC-7179 5 years ago
TickBusOrderViewer Merge branch 'development' into cmake/SPEC-7179 5 years ago
Twitch Merge branch 'development' into cmake/SPEC-7179 5 years ago
UiBasics Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Vegetation LYN-4774 Fix missing box icons inside the main Viewport (#2297) 5 years ago
VideoPlaybackFramework Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
VirtualGamepad Merge branch 'development' into cmake/SPEC-7179 5 years ago
WhiteBox Refactored how model material slots work in preparation to support more flexible material conversion options for the scene asset pipeline. The material slot IDs are based on the MaterialUid that come from SceneAPI. Since these IDs are also used as the AssetId sub-ID for the converted material assets, the system was just checking the material asset sub-ID to determine the material slot ID. But in order to support certain FBX material conversion options, we needed to break this tie, so the slot ID is separate from the AssetId of the material in that slot. This will allow some other material to be used in the slot, instead of being forced to use one that was generated from the FBX. 5 years ago