hpp++
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
#include "AssetsLoader.h"
|
#include "AssetsLoader.hpp"
|
||||||
|
|
||||||
#include "Assets.h"
|
#include "Assets.h"
|
||||||
#include "assetload_funcs.hpp"
|
#include "assetload_funcs.hpp"
|
||||||
|
|||||||
@@ -1,113 +0,0 @@
|
|||||||
#ifndef ASSETS_ASSETS_LOADER_H
|
|
||||||
#define ASSETS_ASSETS_LOADER_H
|
|
||||||
|
|
||||||
#include "Assets.h"
|
|
||||||
#include "../interfaces/Task.hpp"
|
|
||||||
#include "../typedefs.h"
|
|
||||||
#include "../delegates.h"
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <memory>
|
|
||||||
#include <filesystem>
|
|
||||||
#include <functional>
|
|
||||||
#include <map>
|
|
||||||
#include <queue>
|
|
||||||
|
|
||||||
namespace dynamic {
|
|
||||||
class Map;
|
|
||||||
class List;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum class AssetType {
|
|
||||||
texture,
|
|
||||||
shader,
|
|
||||||
font,
|
|
||||||
atlas,
|
|
||||||
layout,
|
|
||||||
sound
|
|
||||||
};
|
|
||||||
|
|
||||||
class ResPaths;
|
|
||||||
class AssetsLoader;
|
|
||||||
class Content;
|
|
||||||
|
|
||||||
struct AssetCfg {
|
|
||||||
virtual ~AssetCfg() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct LayoutCfg : AssetCfg {
|
|
||||||
scriptenv env;
|
|
||||||
|
|
||||||
LayoutCfg(scriptenv env) : env(env) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct SoundCfg : AssetCfg {
|
|
||||||
bool keepPCM;
|
|
||||||
|
|
||||||
SoundCfg(bool keepPCM) : keepPCM(keepPCM) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
using aloader_func = std::function<assetload::postfunc(
|
|
||||||
AssetsLoader*, // redundant?
|
|
||||||
const ResPaths*,
|
|
||||||
const std::string&,
|
|
||||||
const std::string&,
|
|
||||||
std::shared_ptr<AssetCfg>)
|
|
||||||
>;
|
|
||||||
|
|
||||||
struct aloader_entry {
|
|
||||||
AssetType tag;
|
|
||||||
const std::string filename;
|
|
||||||
const std::string alias;
|
|
||||||
std::shared_ptr<AssetCfg> config;
|
|
||||||
};
|
|
||||||
|
|
||||||
class AssetsLoader {
|
|
||||||
Assets* assets;
|
|
||||||
std::map<AssetType, aloader_func> loaders;
|
|
||||||
std::queue<aloader_entry> entries;
|
|
||||||
const ResPaths* paths;
|
|
||||||
|
|
||||||
void tryAddSound(std::string name);
|
|
||||||
|
|
||||||
void processPreload(AssetType tag, const std::string& name, dynamic::Map* map);
|
|
||||||
void processPreloadList(AssetType tag, dynamic::List* list);
|
|
||||||
void processPreloadConfig(std::filesystem::path file);
|
|
||||||
void processPreloadConfigs(const Content* content);
|
|
||||||
public:
|
|
||||||
AssetsLoader(Assets* assets, const ResPaths* paths);
|
|
||||||
void addLoader(AssetType tag, aloader_func func);
|
|
||||||
|
|
||||||
/// @brief Enqueue asset load
|
|
||||||
/// @param tag asset type
|
|
||||||
/// @param filename asset file path
|
|
||||||
/// @param alias internal asset name
|
|
||||||
/// @param settings asset loading settings (based on asset type)
|
|
||||||
void add(
|
|
||||||
AssetType tag,
|
|
||||||
const std::string filename,
|
|
||||||
const std::string alias,
|
|
||||||
std::shared_ptr<AssetCfg> settings=nullptr
|
|
||||||
);
|
|
||||||
|
|
||||||
bool hasNext() const;
|
|
||||||
bool loadNext();
|
|
||||||
|
|
||||||
std::shared_ptr<Task> startTask(runnable onDone);
|
|
||||||
|
|
||||||
const ResPaths* getPaths() const;
|
|
||||||
aloader_func getLoader(AssetType tag);
|
|
||||||
|
|
||||||
/// @brief Enqueue core and content assets
|
|
||||||
/// @param loader target loader
|
|
||||||
/// @param content engine content
|
|
||||||
static void addDefaults(AssetsLoader& loader, const Content* content);
|
|
||||||
|
|
||||||
static bool loadExternalTexture(
|
|
||||||
Assets* assets,
|
|
||||||
const std::string& name,
|
|
||||||
std::vector<std::filesystem::path> alternatives
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ASSETS_ASSETS_LOADER_H
|
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
#ifndef ASSETS_ASSETS_LOADER_HPP_
|
||||||
|
#define ASSETS_ASSETS_LOADER_HPP_
|
||||||
|
|
||||||
|
#include "Assets.h"
|
||||||
|
#include "../interfaces/Task.hpp"
|
||||||
|
#include "../typedefs.h"
|
||||||
|
#include "../delegates.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <memory>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <functional>
|
||||||
|
#include <map>
|
||||||
|
#include <queue>
|
||||||
|
|
||||||
|
namespace dynamic {
|
||||||
|
class Map;
|
||||||
|
class List;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class AssetType {
|
||||||
|
texture,
|
||||||
|
shader,
|
||||||
|
font,
|
||||||
|
atlas,
|
||||||
|
layout,
|
||||||
|
sound
|
||||||
|
};
|
||||||
|
|
||||||
|
class ResPaths;
|
||||||
|
class AssetsLoader;
|
||||||
|
class Content;
|
||||||
|
|
||||||
|
struct AssetCfg {
|
||||||
|
virtual ~AssetCfg() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LayoutCfg : AssetCfg {
|
||||||
|
scriptenv env;
|
||||||
|
|
||||||
|
LayoutCfg(scriptenv env) : env(env) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SoundCfg : AssetCfg {
|
||||||
|
bool keepPCM;
|
||||||
|
|
||||||
|
SoundCfg(bool keepPCM) : keepPCM(keepPCM) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
using aloader_func = std::function<assetload::postfunc(
|
||||||
|
AssetsLoader*, // redundant?
|
||||||
|
const ResPaths*,
|
||||||
|
const std::string&,
|
||||||
|
const std::string&,
|
||||||
|
std::shared_ptr<AssetCfg>)
|
||||||
|
>;
|
||||||
|
|
||||||
|
struct aloader_entry {
|
||||||
|
AssetType tag;
|
||||||
|
const std::string filename;
|
||||||
|
const std::string alias;
|
||||||
|
std::shared_ptr<AssetCfg> config;
|
||||||
|
};
|
||||||
|
|
||||||
|
class AssetsLoader {
|
||||||
|
Assets* assets;
|
||||||
|
std::map<AssetType, aloader_func> loaders;
|
||||||
|
std::queue<aloader_entry> entries;
|
||||||
|
const ResPaths* paths;
|
||||||
|
|
||||||
|
void tryAddSound(std::string name);
|
||||||
|
|
||||||
|
void processPreload(AssetType tag, const std::string& name, dynamic::Map* map);
|
||||||
|
void processPreloadList(AssetType tag, dynamic::List* list);
|
||||||
|
void processPreloadConfig(std::filesystem::path file);
|
||||||
|
void processPreloadConfigs(const Content* content);
|
||||||
|
public:
|
||||||
|
AssetsLoader(Assets* assets, const ResPaths* paths);
|
||||||
|
void addLoader(AssetType tag, aloader_func func);
|
||||||
|
|
||||||
|
/// @brief Enqueue asset load
|
||||||
|
/// @param tag asset type
|
||||||
|
/// @param filename asset file path
|
||||||
|
/// @param alias internal asset name
|
||||||
|
/// @param settings asset loading settings (based on asset type)
|
||||||
|
void add(
|
||||||
|
AssetType tag,
|
||||||
|
const std::string filename,
|
||||||
|
const std::string alias,
|
||||||
|
std::shared_ptr<AssetCfg> settings=nullptr
|
||||||
|
);
|
||||||
|
|
||||||
|
bool hasNext() const;
|
||||||
|
bool loadNext();
|
||||||
|
|
||||||
|
std::shared_ptr<Task> startTask(runnable onDone);
|
||||||
|
|
||||||
|
const ResPaths* getPaths() const;
|
||||||
|
aloader_func getLoader(AssetType tag);
|
||||||
|
|
||||||
|
/// @brief Enqueue core and content assets
|
||||||
|
/// @param loader target loader
|
||||||
|
/// @param content engine content
|
||||||
|
static void addDefaults(AssetsLoader& loader, const Content* content);
|
||||||
|
|
||||||
|
static bool loadExternalTexture(
|
||||||
|
Assets* assets,
|
||||||
|
const std::string& name,
|
||||||
|
std::vector<std::filesystem::path> alternatives
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ASSETS_ASSETS_LOADER_HPP_
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
#include "assetload_funcs.hpp"
|
#include "assetload_funcs.hpp"
|
||||||
|
|
||||||
#include "Assets.h"
|
#include "Assets.h"
|
||||||
#include "AssetsLoader.h"
|
#include "AssetsLoader.hpp"
|
||||||
#include "../audio/audio.hpp"
|
#include "../audio/audio.hpp"
|
||||||
#include "../files/files.h"
|
#include "../files/files.h"
|
||||||
#include "../files/engine_paths.h"
|
#include "../files/engine_paths.h"
|
||||||
#include "../coders/imageio.hpp"
|
#include "../coders/imageio.hpp"
|
||||||
#include "../coders/json.h"
|
#include "../coders/json.h"
|
||||||
#include "../coders/GLSLExtension.h"
|
#include "../coders/GLSLExtension.hpp"
|
||||||
#include "../graphics/core/Shader.hpp"
|
#include "../graphics/core/Shader.hpp"
|
||||||
#include "../graphics/core/Texture.hpp"
|
#include "../graphics/core/Texture.hpp"
|
||||||
#include "../graphics/core/ImageData.hpp"
|
#include "../graphics/core/ImageData.hpp"
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
#include "GLSLExtension.h"
|
#include "GLSLExtension.hpp"
|
||||||
#include <iostream>
|
|
||||||
#include <sstream>
|
|
||||||
#include <stdexcept>
|
|
||||||
#include "../util/stringutil.h"
|
#include "../util/stringutil.h"
|
||||||
#include "../typedefs.h"
|
#include "../typedefs.h"
|
||||||
#include "../files/files.h"
|
#include "../files/files.h"
|
||||||
#include "../files/engine_paths.h"
|
#include "../files/engine_paths.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
namespace fs = std::filesystem;
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
void GLSLExtension::setVersion(std::string version) {
|
void GLSLExtension::setVersion(std::string version) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef CODERS_GLSL_EXTESION_H_
|
#ifndef CODERS_GLSL_EXTESION_HPP_
|
||||||
#define CODERS_GLSL_EXTESION_H_
|
#define CODERS_GLSL_EXTESION_HPP_
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -35,4 +35,4 @@ public:
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CODERS_GLSL_EXTESION_H_
|
#endif // CODERS_GLSL_EXTESION_HPP_
|
||||||
+2
-2
@@ -3,9 +3,9 @@
|
|||||||
#define GLEW_STATIC
|
#define GLEW_STATIC
|
||||||
|
|
||||||
#include "debug/Logger.hpp"
|
#include "debug/Logger.hpp"
|
||||||
#include "assets/AssetsLoader.h"
|
#include "assets/AssetsLoader.hpp"
|
||||||
#include "audio/audio.hpp"
|
#include "audio/audio.hpp"
|
||||||
#include "coders/GLSLExtension.h"
|
#include "coders/GLSLExtension.hpp"
|
||||||
#include "coders/imageio.hpp"
|
#include "coders/imageio.hpp"
|
||||||
#include "coders/json.h"
|
#include "coders/json.h"
|
||||||
#include "coders/toml.hpp"
|
#include "coders/toml.hpp"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
|
|
||||||
#include "../../coders/GLSLExtension.h"
|
#include "../../coders/GLSLExtension.hpp"
|
||||||
|
|
||||||
namespace fs = std::filesystem;
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
#include "api_lua.hpp"
|
#include "api_lua.hpp"
|
||||||
#include "lua_commons.hpp"
|
#include "lua_commons.hpp"
|
||||||
|
|
||||||
#include "../scripting.h"
|
#include "../scripting.h"
|
||||||
#include "../../../engine.h"
|
#include "../../../engine.h"
|
||||||
#include "../../../assets/AssetsLoader.h"
|
#include "../../../assets/AssetsLoader.hpp"
|
||||||
#include "../../../files/engine_paths.h"
|
#include "../../../files/engine_paths.h"
|
||||||
#include "../../../files/WorldFiles.h"
|
#include "../../../files/WorldFiles.h"
|
||||||
#include "../../../world/Level.h"
|
#include "../../../world/Level.h"
|
||||||
@@ -15,8 +16,7 @@
|
|||||||
static int l_pack_get_folder(lua_State* L) {
|
static int l_pack_get_folder(lua_State* L) {
|
||||||
std::string packName = lua_tostring(L, 1);
|
std::string packName = lua_tostring(L, 1);
|
||||||
if (packName == "core") {
|
if (packName == "core") {
|
||||||
auto folder = scripting::engine->getPaths()
|
auto folder = scripting::engine->getPaths()->getResources().u8string()+"/";
|
||||||
->getResources().u8string()+"/";
|
|
||||||
lua_pushstring(L, folder.c_str());
|
lua_pushstring(L, folder.c_str());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
#include "lua_commons.hpp"
|
#include "lua_commons.hpp"
|
||||||
#include "api_lua.hpp"
|
#include "api_lua.hpp"
|
||||||
|
|
||||||
#include "../scripting.h"
|
#include "../scripting.h"
|
||||||
#include "../../../assets/Assets.h"
|
#include "../../../assets/Assets.h"
|
||||||
#include "../../../assets/AssetsLoader.h"
|
#include "../../../assets/AssetsLoader.hpp"
|
||||||
#include "../../../files/engine_paths.h"
|
#include "../../../files/engine_paths.h"
|
||||||
#include "../../../world/Level.h"
|
#include "../../../world/Level.h"
|
||||||
#include "../../../world/World.h"
|
#include "../../../world/World.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user