2
0
Эх сурвалжийг харах

Jjjoness/approximate size column has no values #15107 (#15446)

* Working version before optimization

Signed-off-by: John Jones-Steele <[email protected]>

* Added new function to streamline AB metadata creation

Signed-off-by: John Jones-Steele <[email protected]>

* Changes from PR

Signed-off-by: John Jones-Steele <[email protected]>

* Fixed bug caused by new abdata,json files not being recognized

Signed-off-by: John Jones-Steele <[email protected]>

---------

Signed-off-by: John Jones-Steele <[email protected]>
Signed-off-by: Daniel Tamkin <[email protected]>
John Jones-Steele 2 жил өмнө
parent
commit
a46f8f2f1e

+ 16 - 6
Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserExpandedTableViewProxyModel.cpp

@@ -58,13 +58,13 @@ namespace AzToolsFramework
                         {
                             return QString{ "%1" }.arg(assetBrowserEntry->GetDiskSize() / 1024.0, 0, 'f', 3);
                         }
-                        break;
+                        return "";
                     case Vertices:
                         if (assetBrowserEntry->GetNumVertices() > 0)
                         {
                             return assetBrowserEntry->GetNumVertices();
                         }
-                        break;
+                        return "";
                     case ApproxSize:
                         if (!AZStd::isnan(assetBrowserEntry->GetDimension().GetX()))
                         {
@@ -97,12 +97,22 @@ namespace AzToolsFramework
 
         QVariant AssetBrowserExpandedTableViewProxyModel::headerData(int section, Qt::Orientation orientation, int role) const
         {
-            if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
+            switch (role)
             {
-                section += section ? static_cast<int>(AssetBrowserEntry::Column::Type) - 1 : 0;
-                return tr(AssetBrowserEntry::m_columnNames[section]);
+            case Qt::DisplayRole:
+                if (orientation == Qt::Horizontal)
+                {
+                    section += section ? aznumeric_cast<int>(AssetBrowserEntry::Column::Type) - 1 : 0;
+                    return tr(AssetBrowserEntry::m_columnNames[section]);
+                }
+                break;
+            case Qt::TextAlignmentRole:
+                if (section == DiskSize || section == Vertices)
+                {
+                    return QVariant(Qt::AlignRight | Qt::AlignVCenter);
+                }
+                break;
             }
-
             return QVariant();
         }
 

+ 1 - 1
Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Entries/RootAssetBrowserEntry.cpp

@@ -136,7 +136,7 @@ namespace AzToolsFramework
                 if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr)
                 {
                     settingsRegistry->Get(assetPath.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_CacheRootFolder);
-                    assetPath /= fileDatabaseEntry.m_fileName + ".metadata.json";
+                    assetPath /= fileDatabaseEntry.m_fileName + ".abdata.json";
 
                     auto result = AZ::JsonSerializationUtils::ReadJsonFile(assetPath.Native());
 

+ 19 - 0
Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp

@@ -19,6 +19,7 @@
 #include <AzCore/Component/Entity.h> // so we can have the entity UUID type.
 #include <AzFramework/IO/LocalFileIO.h>
 #include <AzCore/Component/ComponentApplicationBus.h>
+#include <AzCore/Serialization/Json/JsonUtils.h>
 #include <AzCore/Slice/SliceAsset.h> // For slice asset sub ids
 #include <AzCore/RTTI/BehaviorContext.h>
 #include <AzToolsFramework/AssetDatabase/AssetDatabaseConnection.h>
@@ -145,6 +146,24 @@ namespace AssetBuilderSDK
         va_end(args);
     }
 
+    void CreateABDataFile(AZStd::string& folder, AZStd::function<void(rapidjson::PrettyWriter<rapidjson::StringBuffer>&)> body)
+    {
+        rapidjson::StringBuffer s;
+        rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(s);
+        writer.StartObject();
+        writer.Key("metadata");
+        writer.StartObject();
+        body(writer);
+
+        writer.EndObject();
+        writer.EndObject();
+        rapidjson::Document doc;
+        doc.Parse(s.GetString());
+        AZ::JsonSerializationUtils::WriteJsonFile(doc, folder.c_str());
+    }
+
+
+
     AssetBuilderPattern::AssetBuilderPattern(const AZStd::string& pattern, PatternType type)
         : m_pattern(pattern)
         , m_type(type)

+ 3 - 0
Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h

@@ -10,6 +10,7 @@
 #pragma once
 
 #include <AzCore/Debug/TraceMessageBus.h>
+#include <AzCore/JSON/prettywriter.h>
 #include <AzCore/std/string/regex.h>
 #include <AzCore/std/string/string.h>
 #include <AzCore/std/containers/vector.h>
@@ -81,6 +82,8 @@ namespace AssetBuilderSDK
 
         static void Reflect(AZ::ReflectContext* context);
     };
+
+    void CreateABDataFile(AZStd::string& folder, AZStd::function<void(rapidjson::PrettyWriter<rapidjson::StringBuffer>&)> body);
 }
 
 namespace AZStd

+ 1 - 1
Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp

@@ -74,7 +74,7 @@ namespace ImageProcessingAtom
         builderDescriptor.m_busId = azrtti_typeid<ImageBuilderWorker>();
         builderDescriptor.m_createJobFunction = AZStd::bind(&ImageBuilderWorker::CreateJobs, &m_imageBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
         builderDescriptor.m_processJobFunction = AZStd::bind(&ImageBuilderWorker::ProcessJob, &m_imageBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
-        builderDescriptor.m_version = 31; // [GHI-6381]
+        builderDescriptor.m_version = 32; // [GHI-6381]
         builderDescriptor.m_analysisFingerprint = ImageProcessingAtom::BuilderSettingManager::Instance()->GetAnalysisFingerprint();
         m_imageBuilder.BusConnect(builderDescriptor.m_busId);
         AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBusTraits::RegisterBuilderInformation, builderDescriptor);

+ 22 - 0
Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageAssetProducer.cpp

@@ -21,6 +21,7 @@
 #include <Atom/RPI.Reflect/Image/ImageAsset.h>
 
 #include <AzCore/Asset/AssetManager.h>
+#include <AzCore/Serialization/Json/JsonUtils.h>
 
 #include <AzToolsFramework/API/EditorAssetSystemAPI.h>
 
@@ -218,6 +219,27 @@ namespace ImageProcessingAtom
                 // The Asset system can be modified to solve the problem so the order doesn't matter.
                 // The task is tracked in ATOM-242
                 m_jobProducts.push_back(AZStd::move(product));
+
+                auto& imageDescriptor = imageAsset->GetImageDescriptor();
+
+                AZStd::string folder;
+                AZStd::string jsonName;
+                folder = AZStd::string::format("%s/%s.abdata.json", m_productFolder.c_str(), m_fileName.c_str());
+
+                AssetBuilderSDK::CreateABDataFile(folder,
+                    [imageDescriptor](rapidjson::PrettyWriter<rapidjson::StringBuffer>& writer)
+                {
+                    writer.Key("dimension");
+                    writer.StartArray();
+                    writer.Double(imageDescriptor.m_size.m_width);
+                    writer.Double(imageDescriptor.m_size.m_height);
+                    writer.Double(imageDescriptor.m_size.m_depth);
+                    writer.EndArray();
+                });
+
+                AssetBuilderSDK::JobProduct jsonProduct(folder);
+                jsonProduct.m_productSubID = product.m_productSubID + 1;
+                m_jobProducts.push_back(AZStd::move(jsonProduct));
             }
         }
 

+ 1 - 1
Gems/SceneProcessing/Code/Source/SceneBuilder/SceneBuilderComponent.cpp

@@ -44,7 +44,7 @@ namespace SceneBuilder
         builderDescriptor.m_createJobFunction = AZStd::bind(&SceneBuilderWorker::CreateJobs, &m_sceneBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
         builderDescriptor.m_processJobFunction = AZStd::bind(&SceneBuilderWorker::ProcessJob, &m_sceneBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
 
-        builderDescriptor.m_version = 10; // bump this to rebuild everything.
+        builderDescriptor.m_version = 11; // bump this to rebuild everything.
         builderDescriptor.m_analysisFingerprint = m_sceneBuilder.GetFingerprint(); // bump this to at least re-analyze everything.
 
         m_sceneBuilder.BusConnect(builderDescriptor.m_busId);

+ 15 - 20
Gems/SceneProcessing/Code/Source/SceneBuilder/SceneBuilderWorker.cpp

@@ -441,26 +441,21 @@ namespace SceneBuilder
             AZStd::string folder;
             AZStd::string jsonName;
             AzFramework::StringFunc::Path::GetFullFileName(scene->GetSourceFilename().c_str(), jsonName);
-            folder = AZStd::string::format("%s/%s.metadata.json", outputFolder.c_str(), jsonName.c_str());
-            rapidjson::StringBuffer s;
-            rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(s);
-            writer.StartObject();
-            writer.Key("metadata");
-            writer.StartObject();
-            writer.Key("dimension");
-            writer.StartArray();
-            AZ::Vector3& dimension = scene->GetSceneDimension();
-            writer.Double(dimension.GetX());
-            writer.Double(dimension.GetY());
-            writer.Double(dimension.GetZ());
-            writer.EndArray();
-            writer.Key("vertices");
-            writer.Uint(scene->GetSceneVertices());
-            writer.EndObject();
-            writer.EndObject();
-            rapidjson::Document doc;
-            doc.Parse(s.GetString());
-            AZ::JsonSerializationUtils::WriteJsonFile(doc, folder.c_str());
+            folder = AZStd::string::format("%s/%s.abdata.json", outputFolder.c_str(), jsonName.c_str());
+
+            AssetBuilderSDK::CreateABDataFile(folder, [scene](rapidjson::PrettyWriter<rapidjson::StringBuffer>& writer)
+            {
+                writer.Key("dimension");
+                writer.StartArray();
+                AZ::Vector3& dimension = scene->GetSceneDimension();
+                writer.Double(dimension.GetX());
+                writer.Double(dimension.GetY());
+                writer.Double(dimension.GetZ());
+                writer.EndArray();
+                writer.Key("vertices");
+                writer.Uint(scene->GetSceneVertices());
+            });
+
             AssetBuilderSDK::JobProduct jsonProduct(folder);
             response.m_outputProducts.emplace_back(jsonProduct);
         }

+ 2 - 1
Gems/TextureAtlas/Code/Source/Editor/AtlasBuilderWorker.cpp

@@ -1044,7 +1044,8 @@ namespace TextureAtlasBuilder
 
             // The Image Processing Gem can produce multiple output files under certain
             // circumstances, but the texture atlas is not expected to produce such output
-            if (outProducts.size() > 1)
+            // There should only be the texture atlas and its abdata file
+            if (outProducts.size() > 2)
             {
                 AZ_Error("AtlasBuilder", false, "Image processing resulted in multiple output files. Texture atlas is expected to produce one output.");
                 response.m_outputProducts.clear();