This repository has been archived on 2025-03-10. You can view files and clone it, but cannot push or open issues or pull requests.

88 lines
1.5 KiB
C++

#pragma once
#include <unordered_map>
#include "NFObject.h"
namespace nf {
class Model;
class Texture;
struct Font;
struct Asset {
char* data = nullptr;
bool alreadyLoaded = false;
bool isBaseAsset = false;
virtual ~Asset();
};
struct AModel : Asset {
Model* loadedModel = nullptr;
~AModel() override;
};
struct ATexture : Asset {
size_t size = 0;
Texture* loadedTexture = nullptr;
~ATexture() override;
};
struct ACubemap : Asset {
char* frontData = nullptr;
size_t frontSize = 0;
char* backData = nullptr;
size_t backSize = 0;
char* topData = nullptr;
size_t topSize = 0;
char* bottomData = nullptr;
size_t bottomSize = 0;
char* leftData = nullptr;
size_t leftSize = 0;
char* rightData = nullptr;
size_t rightSize = 0;
unsigned int numImages = 0;
~ACubemap();
};
struct AShader : Asset {
~AShader() override;
};
struct AFont : Asset {
size_t size = 0;
Font* loadedFont = nullptr;
~AFont() override;
};
class AssetPack : public NFObject {
public:
AssetPack();
void load(const char* packName);
Asset* operator[](const char* in);
Asset* operator[](std::string& in);
void destroy() override;
void unload();
~AssetPack();
private:
std::unordered_map<std::string, Asset*> m_assets;
};
struct BaseAssets {
static AModel* cube;
static AModel* plane;
static AModel* sphere;
static AModel* cone;
static AModel* cylinder;
static AModel* torus;
static ATexture* logo;
static AFont* defaultFont;
};
}