-#ifndef DALI_SCENE3D_LOADERERERERER_RESOURCE_BUNDLE_H_
-#define DALI_SCENE3D_LOADERERERERER_RESOURCE_BUNDLE_H_
+#ifndef DALI_SCENE3D_LOADERERERER_RESOURCE_BUNDLE_H_
+#define DALI_SCENE3D_LOADERERERER_RESOURCE_BUNDLE_H_
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
-// INTERNAL
+// EXTERNAL INCLUDES
+#include <dali/public-api/common/vector-wrapper.h>
+#include <dali/public-api/rendering/shader.h>
+#include <dali/public-api/rendering/texture-set.h>
+#include <functional>
+#include <memory>
+
+// INTERNAL INCLUDES
+#include <dali-scene3d/public-api/loader/buffer-definition.h>
#include <dali-scene3d/public-api/loader/environment-definition.h>
#include <dali-scene3d/public-api/loader/material-definition.h>
#include <dali-scene3d/public-api/loader/mesh-definition.h>
#include <dali-scene3d/public-api/loader/shader-definition.h>
#include <dali-scene3d/public-api/loader/skeleton-definition.h>
-#include <dali-scene3d/public-api/loader/buffer-definition.h>
-// EXTERNAL
-#include <functional>
-#include <memory>
-#include <dali/public-api/common/vector-wrapper.h>
-#include <dali/public-api/rendering/shader.h>
-#include <dali/public-api/rendering/texture-set.h>
-
-namespace Dali
-{
-namespace Scene3D
-{
-namespace Loader
+namespace Dali::Scene3D::Loader
{
-/*
+/**
* @brief The types of resources that .dli may define.
+ * @SINCE_2_0.7
*/
struct DALI_SCENE3D_API ResourceType
{
ResourceType() = delete;
};
-/*
- * @return The string value corresponding to the given resource @a type.
+/**
+ * @brief The string value corresponding to the given resource @a type.
+ * @SINCE_2_0.7
+ * @return The string value for type.
*/
DALI_SCENE3D_API const char* GetResourceTypeName(ResourceType::Value type);
using ResourceRefCounts = std::vector<Vector<uint32_t>>;
-/*
+/**
* @brief Stores all resource definitions along with the DALi resources that
* could be created from them, directly indexible into with values from a dli
* document.
+ * @SINCE_2_0.7
*/
class DALI_SCENE3D_API ResourceBundle
{
using PathProvider = std::function<std::string(ResourceType::Value)>;
- ResourceBundle() = default;
+ ResourceBundle();
ResourceBundle(const ResourceBundle&) = delete;
ResourceBundle& operator=(const ResourceBundle&) = delete;
ResourceBundle& operator=(ResourceBundle&&) = default;
/**
- * @return A ResourceRefCounts object with the correct number of entries for
+ * @brief A ResourceRefCounts object with the correct number of entries for
* all resource types (based on the various resource definition vectors),
* with all reference counts set to 0.
+ * @SINCE_2_0.7
+ * @return A ResourceRefCounts object.
*/
ResourceRefCounts CreateRefCounter() const;
* @brief Based on a ResourceRefCounts, and more specifically the reference
* count of materials therein, it will calculate the reference count of
* environment maps.
+ * @SINCE_2_0.7
*/
- void CountEnvironmentReferences(ResourceRefCounts& refCounts) const;
+ void CountEnvironmentReferences();
/**
- * @brief Performs the loading of all resources based on their respective
- * reference count in @a refCounts. Resources that had a non-zero ref count will be
- * loaded unless we already have a handle to them (OR the ForceReload option was specified).
+ * @brief Performs the loading of all resources based on their respective reference count in @a refCounts.
+ *
+ * Resources that had a non-zero ref count will be loaded unless we already have a handle to them
+ * (OR the ForceReload option was specified).
* Any handles we have to resources that come in with a zero ref count will be reset,
* UNLESS the KeepUnused option was specified.
- * @param[in] refCounts Reference Count that denote how many the resource is used.
+ *
+ * @SINCE_2_0.7
* @param[in] pathProvider path provider for resource data.
* @param[in] options Option to load resource
* @note This method creates DALi objects like Dali::Texture, Dali::Geometry, etc.
*/
- void LoadResources(const ResourceRefCounts& refCounts,
- PathProvider pathProvider,
- Options::Type options = Options::None);
+ void LoadResources(PathProvider pathProvider,
+ Options::Type options = Options::None);
/**
- * @brief Loads of all resources based on their respective
- * reference count in @a refCounts. Resources that had a non-zero ref count will be
- * loaded unless we already have a handle to them (OR the ForceReload option was specified).
+ * @brief Loads of all resources based on their respective reference count in @a refCounts.
+ *
+ * Resources that had a non-zero ref count will be loaded unless we already have a handle to them
+ * (OR the ForceReload option was specified).
* Any handles we have to resources that come in with a zero ref count will be reset,
* UNLESS the KeepUnused option was specified.
+ *
+ * @SINCE_2_2.9
* @note This method don't create any of DALi objects.
- * @param[in] refCounts Reference Count that denote how many the resource is used.
* @param[in] pathProvider path provider for resource data.
* @param[in] options Option to load resource
* @note This method only loads raw data from resource file, and
* doesn't create any of DALi objects. GenerateResources() method is required to be called
* after this method to create DALi objects.
*/
- void LoadRawResources(const ResourceRefCounts& refCounts,
- PathProvider pathProvider,
- Options::Type options = Options::None);
+ void LoadRawResources(PathProvider pathProvider,
+ Options::Type options = Options::None);
/**
* @brief Generates DALi objects from already loaded Raw Resources.
- * @param[in] refCounts Reference Count that denote how many the resource is used.
+ * @SINCE_2_2.9
* @param[in] options Option to load resource
* @note This method generates DALi objects from raw data that is already
* loaded by LoadRawResources method. Therefore, LoadRawResources should be called first
* before this method is called.
*/
- void GenerateResources(const ResourceRefCounts& refCounts,
- Options::Type options = Options::None);
+ void GenerateResources(Options::Type options = Options::None);
public: // DATA
+ ResourceRefCounts mReferenceCounts;
EnvironmentDefinition::Vector mEnvironmentMaps;
ShaderDefinition::Vector mShaders;
MeshDefinition::Vector mMeshes;
SkeletonDefinition::Vector mSkeletons;
BufferDefinition::Vector mBuffers;
+
+ bool mRawResourcesLoading;
+ bool mResourcesGenerating;
+
+ bool mRawResourcesLoaded;
+ bool mResourcesGenerated;
};
-} // namespace Loader
-} // namespace Scene3D
-} // namespace Dali
+} // namespace Dali::Scene3D::Loader
-#endif //DALI_SCENE3D_LOADERERERERER_RESOURCE_BUNDLE_H_
+#endif //DALI_SCENE3D_LOADERERERER_RESOURCE_BUNDLE_H_