|
|
|
|
/******************************************************************************
|
|
|
|
|
* File - world.h
|
|
|
|
|
* Author - Joey Pollack
|
|
|
|
|
* Date - 2022/06/28 (y/m/d)
|
|
|
|
|
* Mod Date - 2022/06/28 (y/m/d)
|
|
|
|
|
* Description - Editor asset for a World object
|
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|
|
#ifndef LUNARIUM_EDITOR_WORLD_H_
|
|
|
|
|
#define LUNARIUM_EDITOR_WORLD_H_
|
|
|
|
|
|
|
|
|
|
#include "editor_asset.h"
|
|
|
|
|
|
|
|
|
|
#include <utils/uuid.h>
|
|
|
|
|
#include <filesystem>
|
|
|
|
|
|
|
|
|
|
namespace lunarium
|
|
|
|
|
{
|
|
|
|
|
class World;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace lunarium { namespace editor
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
class World : public EditorAsset
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
World(std::filesystem::path name = "WORLD");
|
|
|
|
|
~World();
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] virtual OpRes LoadRawFile();
|
|
|
|
|
[[nodiscard]] virtual OpRes Serialize(nlohmann::ordered_json& node);
|
|
|
|
|
[[nodiscard]] virtual OpRes Deserialize(nlohmann::ordered_json& node);
|
|
|
|
|
[[nodiscord]] virtual bool IsValidNode(nlohmann::ordered_json& node);
|
|
|
|
|
[[nodiscard]] virtual nlohmann::ordered_json AsJSON();
|
|
|
|
|
void DrawProperties();
|
|
|
|
|
|
|
|
|
|
lunarium::World* GetWorld();
|
|
|
|
|
void UnloadWorld();
|
|
|
|
|
OpRes LoadWorld();
|
|
|
|
|
|
|
|
|
|
private: // DATA
|
|
|
|
|
lunarium::World* mpWorld;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private: // DISABLED
|
|
|
|
|
World(const World&) = delete;
|
|
|
|
|
World& operator=(const World&) = delete;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // LUNARIUM_EDITOR_WORLD_H_
|