Moved environment to a resource and a component
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
#include "src/Scene/Components/SpriteComponent.h"
|
||||
#include "src/Scene/Components/UIComponent.h"
|
||||
#include "src/Scene/Components/SkyComponent.h"
|
||||
#include "src/Scene/Components/EnvironmentComponent.h"
|
||||
|
||||
|
||||
namespace Nuake
|
||||
{
|
||||
@@ -44,6 +46,7 @@ namespace Nuake
|
||||
BoneComponent::InternalInitializeClass();
|
||||
AudioEmitterComponent::InternalInitializeClass();
|
||||
SkyComponent::InternalInitializeClass();
|
||||
EnvironmentComponent::InternalInitializeClass();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -99,6 +99,11 @@ FileType File::GetFileType() const
|
||||
return FileType::Sky;
|
||||
}
|
||||
|
||||
if (ext == ".env")
|
||||
{
|
||||
return FileType::Env;
|
||||
}
|
||||
|
||||
return FileType::Unknown;
|
||||
}
|
||||
|
||||
@@ -170,6 +175,11 @@ std::string File::GetFileTypeAsString() const
|
||||
return "Sky";
|
||||
}
|
||||
|
||||
if (ext == ".env")
|
||||
{
|
||||
return "Environment";
|
||||
}
|
||||
|
||||
return "File";
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ namespace Nuake
|
||||
Audio,
|
||||
UI,
|
||||
CSS,
|
||||
Sky
|
||||
Sky,
|
||||
Env
|
||||
};
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ namespace Nuake
|
||||
m_Registry.emplace(Resources_Images_logo_white_png_path, CreateRef<Texture>(Resources_Images_logo_white_png, Resources_Images_logo_white_png_len));
|
||||
m_Registry.emplace(Resources_Images_logo_png_path, CreateRef<Texture>(Resources_Images_logo_png, Resources_Images_logo_png_len));
|
||||
m_Registry.emplace(Resources_Images_file_icon_png_path, CreateRef<Texture>(Resources_Images_file_icon_png, Resources_Images_file_icon_png_len));
|
||||
m_Registry.emplace(Resources_Images_env_file_icon_png_path, CreateRef<Texture>(Resources_Images_env_file_icon_png, Resources_Images_env_file_icon_png_len));
|
||||
m_Registry.emplace(Resources_Images_scene_icon_png_path, CreateRef<Texture>(Resources_Images_scene_icon_png, Resources_Images_scene_icon_png_len));
|
||||
m_Registry.emplace(Resources_Images_project_icon_png_path, CreateRef<Texture>(Resources_Images_project_icon_png, Resources_Images_project_icon_png_len));
|
||||
m_Registry.emplace(Resources_Images_csharp_icon_png_path, CreateRef<Texture>(Resources_Images_csharp_icon_png, Resources_Images_csharp_icon_png_len));
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#include "src/Resource/Model.h"
|
||||
#include "src/Resource/UI.h"
|
||||
#include "src/Resource/SkyResource.h"
|
||||
#include "src/Scene/Lighting/Environment.h"
|
||||
|
||||
using namespace Nuake;
|
||||
|
||||
Ref<Material> ResourceLoader::LoadMaterial(const std::string& path)
|
||||
@@ -139,6 +141,51 @@ Ref<SkyResource> ResourceLoader::LoadSky(const std::string& path)
|
||||
return sky;
|
||||
}
|
||||
|
||||
Ref<Environment> ResourceLoader::LoadEnvironment(const std::string& path)
|
||||
{
|
||||
const std::string FILE_NOT_FOUND = "[Resource Loader] File doesn't exists. \n ";
|
||||
const std::string WRONG_EXTENSION = "[Resource Loader] Resource type mismatch file extension. \n expected: ";
|
||||
const std::string ENV_EXT = ".env";
|
||||
|
||||
if (path.empty())
|
||||
{
|
||||
Logger::Log(FILE_NOT_FOUND + path, "resource", LOG_TYPE::WARNING);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!FileSystem::FileExists(path))
|
||||
{
|
||||
Logger::Log(FILE_NOT_FOUND + path, "resource", LOG_TYPE::WARNING);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!String::EndsWith(path, ENV_EXT))
|
||||
{
|
||||
std::string message = WRONG_EXTENSION + ENV_EXT + " actual: " + path;
|
||||
Logger::Log(message, "resource", LOG_TYPE::WARNING);
|
||||
}
|
||||
|
||||
std::string content = FileSystem::ReadFile(path);
|
||||
json j = json::parse(content);
|
||||
|
||||
UUID uuid = ReadUUID(j);
|
||||
|
||||
// Check if resource is already loaded.
|
||||
if (ResourceManager::IsResourceLoaded(uuid))
|
||||
{
|
||||
return ResourceManager::GetResource<Environment>(uuid);
|
||||
}
|
||||
|
||||
Ref<Environment> env = CreateRef<Environment>();
|
||||
env->ID = uuid;
|
||||
env->Path = path;
|
||||
env->Deserialize(j);
|
||||
ResourceManager::RegisterResource(env);
|
||||
|
||||
return env;
|
||||
}
|
||||
|
||||
|
||||
Ref<UIResource> ResourceLoader::LoadUI(const std::string& path)
|
||||
{
|
||||
auto uiResource = CreateRef<UIResource>(path);
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace Nuake
|
||||
class UIResource;
|
||||
class File;
|
||||
class SkyResource;
|
||||
class Environment;
|
||||
|
||||
class ResourceLoader
|
||||
{
|
||||
@@ -25,6 +26,7 @@ namespace Nuake
|
||||
static Ref<Material> LoadMaterial(const std::string& path);
|
||||
static Ref<Model> LoadModel(const std::string& path);
|
||||
static Ref<SkyResource> LoadSky(const std::string& path);
|
||||
static Ref<Environment> LoadEnvironment(const std::string& path);
|
||||
static Ref<UIResource> LoadUI(const std::string& path);
|
||||
static Ref<UIResource> LoadUI(const Ref<File>& file);
|
||||
|
||||
|
||||
@@ -140658,6 +140658,95 @@ namespace Nuake {
|
||||
};
|
||||
unsigned int Resources_Images_editor_icon_png_len = sizeof(Resources_Images_editor_icon_png);
|
||||
|
||||
// Data for file: Resources_Images_env_file_icon_png_path
|
||||
const std::string Resources_Images_env_file_icon_png_path = R"(Resources/Images/env_file_icon.png)";
|
||||
unsigned char Resources_Images_env_file_icon_png[] = {
|
||||
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x70, 0xE2, 0x95, 0x54, 0x00, 0x00, 0x00,
|
||||
0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B,
|
||||
0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52,
|
||||
0x47, 0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x04, 0x67,
|
||||
0x41, 0x4D, 0x41, 0x00, 0x00, 0xB1, 0x8F, 0x0B, 0xFC, 0x61, 0x05, 0x00,
|
||||
0x00, 0x03, 0x6E, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xED, 0xDB, 0x8D,
|
||||
0x51, 0xDB, 0x30, 0x14, 0xC0, 0xF1, 0x97, 0x5E, 0x07, 0x60, 0x83, 0x7A,
|
||||
0x83, 0x66, 0x83, 0x86, 0x09, 0xDA, 0x0D, 0x92, 0x4E, 0x00, 0x1B, 0x90,
|
||||
0x4E, 0x00, 0x1B, 0x38, 0x4C, 0x40, 0x37, 0x70, 0x37, 0x80, 0x0D, 0xCC,
|
||||
0x06, 0xB0, 0xC1, 0xAB, 0x74, 0x96, 0x1B, 0x59, 0xFE, 0x92, 0x8D, 0x8B,
|
||||
0x4D, 0xF2, 0xFF, 0xDD, 0xE9, 0x72, 0x18, 0x59, 0xB9, 0x7B, 0xCF, 0x92,
|
||||
0x25, 0xD9, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x64, 0x25,
|
||||
0x1F, 0x9C, 0xAA, 0x5E, 0x98, 0x8F, 0x0B, 0xF7, 0xE7, 0xEB, 0x6A, 0xB5,
|
||||
0x7A, 0x95, 0x11, 0x4C, 0x3B, 0x89, 0x39, 0xF7, 0x59, 0x30, 0x8C, 0x09,
|
||||
0xDC, 0xC6, 0x94, 0x5B, 0x53, 0x1E, 0x4D, 0x79, 0xD1, 0x3A, 0x7B, 0x2C,
|
||||
0x73, 0x75, 0x36, 0x91, 0x6D, 0xEE, 0xDD, 0xB9, 0x99, 0xA0, 0x9F, 0xED,
|
||||
0x05, 0x2E, 0x68, 0x4D, 0x09, 0xE8, 0x93, 0x9B, 0xB2, 0xED, 0x68, 0x7B,
|
||||
0xEF, 0xD7, 0x95, 0x99, 0x2D, 0x7E, 0xC8, 0x32, 0x41, 0xBA, 0x36, 0x1F,
|
||||
0x37, 0x72, 0x1C, 0x96, 0x7C, 0x07, 0x53, 0x5E, 0x5D, 0x29, 0xAD, 0x5D,
|
||||
0x49, 0x82, 0xBA, 0xCF, 0xA6, 0xEC, 0xCD, 0xB0, 0x74, 0xEF, 0xB5, 0xBD,
|
||||
0x77, 0x6D, 0x8B, 0x6B, 0xE3, 0xD2, 0xFC, 0xFF, 0x49, 0x50, 0x67, 0xC7,
|
||||
0x74, 0x37, 0xF4, 0xB4, 0xD9, 0x46, 0x9C, 0x7F, 0xE5, 0x7A, 0x88, 0x2F,
|
||||
0xF5, 0x7A, 0x5C, 0xC9, 0xF6, 0xBC, 0xB5, 0xA0, 0x99, 0x0D, 0x4E, 0x43,
|
||||
0x20, 0xA3, 0x93, 0xD1, 0xD0, 0xDE, 0x2E, 0x68, 0xEF, 0x85, 0x64, 0x44,
|
||||
0x72, 0x57, 0x76, 0xD7, 0xBD, 0x62, 0x54, 0x00, 0xB5, 0xB9, 0xC7, 0x91,
|
||||
0x8C, 0x2E, 0x2E, 0x68, 0xB9, 0xF6, 0x1B, 0x1D, 0x48, 0x2D, 0x66, 0x5F,
|
||||
0xA5, 0x5C, 0x8B, 0x69, 0x33, 0x9A, 0x68, 0x31, 0x95, 0x8D, 0x65, 0x93,
|
||||
0x62, 0xEF, 0x11, 0x3B, 0x57, 0xA2, 0x03, 0x1B, 0x24, 0xE5, 0x56, 0x50,
|
||||
0x67, 0x02, 0x73, 0xAD, 0x6F, 0xF3, 0x38, 0x30, 0x29, 0x99, 0x77, 0xEE,
|
||||
0x46, 0x70, 0xA4, 0xF1, 0x43, 0xD5, 0x64, 0x49, 0xD1, 0xEA, 0xBD, 0x6A,
|
||||
0xF6, 0xF5, 0x47, 0xE9, 0x93, 0x2C, 0xC3, 0x4E, 0xEA, 0xEB, 0x86, 0x31,
|
||||
0x12, 0x89, 0x6C, 0xC7, 0x6D, 0x93, 0xDC, 0x95, 0xE7, 0xE9, 0xC0, 0x99,
|
||||
0xDB, 0x49, 0xF3, 0x7A, 0x47, 0xAE, 0xE3, 0x56, 0xE3, 0xAA, 0x23, 0x6E,
|
||||
0xF4, 0x5A, 0xAC, 0x47, 0xCA, 0xEF, 0x63, 0xDB, 0xC4, 0xD2, 0x62, 0x6F,
|
||||
0xAA, 0xB4, 0xD5, 0x62, 0x0D, 0x32, 0x34, 0x29, 0x53, 0xCD, 0xBA, 0xBE,
|
||||
0xC8, 0xB9, 0x0B, 0x02, 0x92, 0xB8, 0x63, 0x43, 0x92, 0xF2, 0xA6, 0xB5,
|
||||
0x44, 0x70, 0x41, 0x5C, 0xC9, 0xB9, 0xD3, 0xE3, 0x6C, 0xE7, 0x31, 0x38,
|
||||
0x1E, 0x93, 0x94, 0x49, 0x16, 0x76, 0xDE, 0xF7, 0xA4, 0x72, 0xEE, 0xBC,
|
||||
0x60, 0x3C, 0x34, 0xFC, 0x6F, 0xD7, 0x90, 0x84, 0x54, 0x8B, 0xA1, 0x6D,
|
||||
0xAB, 0x13, 0xAD, 0xB2, 0xF5, 0xB8, 0xFE, 0x99, 0x7D, 0xB6, 0xF5, 0x59,
|
||||
0x66, 0xA4, 0xD5, 0x87, 0x4B, 0x31, 0xBB, 0xAC, 0x07, 0x33, 0x3B, 0xFA,
|
||||
0x29, 0xD3, 0xB3, 0xDF, 0xBD, 0x96, 0xE6, 0x1D, 0xE5, 0x77, 0x35, 0xF7,
|
||||
0xB4, 0x77, 0x48, 0x00, 0xFE, 0x98, 0xF2, 0x4B, 0xFF, 0xEF, 0x56, 0xC7,
|
||||
0xD9, 0x27, 0x64, 0x88, 0x8D, 0x29, 0x76, 0x48, 0xB1, 0x43, 0xDC, 0xC9,
|
||||
0xAE, 0x19, 0xE6, 0x4E, 0x88, 0xFF, 0x60, 0x69, 0xC8, 0xD5, 0x79, 0x98,
|
||||
0x38, 0x29, 0xFF, 0x9E, 0xC9, 0xCB, 0xCC, 0x66, 0xBD, 0x87, 0xD8, 0x17,
|
||||
0x12, 0x4C, 0x60, 0x6D, 0x10, 0xFC, 0x7B, 0x89, 0xCF, 0x8E, 0xED, 0xFB,
|
||||
0xE0, 0x58, 0x22, 0xC5, 0xCA, 0xFE, 0xE0, 0x6E, 0xEA, 0x5D, 0x41, 0xBC,
|
||||
0x8F, 0x7C, 0x71, 0xA1, 0xFC, 0xEE, 0x98, 0xBA, 0xA7, 0xCD, 0x9B, 0xF6,
|
||||
0x46, 0xCD, 0x70, 0x82, 0x75, 0x43, 0x9F, 0x5C, 0xDD, 0xDA, 0xA6, 0xA7,
|
||||
0x4D, 0x6D, 0x9B, 0xE9, 0xBD, 0xB7, 0x25, 0xDC, 0x43, 0xCA, 0xD9, 0x95,
|
||||
0xDD, 0x4F, 0x9A, 0x7A, 0xA5, 0x9C, 0x98, 0x92, 0x75, 0x25, 0x45, 0xAB,
|
||||
0x3B, 0xBD, 0xBF, 0xE5, 0xDC, 0x05, 0x57, 0xFC, 0x4D, 0x44, 0xFD, 0x0B,
|
||||
0x1D, 0xF6, 0xDC, 0xC4, 0x4A, 0x3B, 0xDA, 0x4B, 0xBD, 0x7A, 0x89, 0xA0,
|
||||
0xB2, 0x38, 0xB4, 0x9F, 0xBD, 0x37, 0xF7, 0x11, 0x49, 0x49, 0x5B, 0xDA,
|
||||
0x49, 0xBC, 0x3A, 0x8B, 0xD8, 0x5C, 0x5C, 0xCA, 0xB4, 0xB7, 0xDC, 0x06,
|
||||
0xB7, 0xC9, 0xE8, 0xDD, 0x4F, 0x72, 0x6F, 0x27, 0x5E, 0x4A, 0xDC, 0x62,
|
||||
0xD2, 0x6A, 0xBB, 0xF1, 0xFB, 0x3D, 0xF2, 0x20, 0x28, 0x68, 0x75, 0x1B,
|
||||
0xFC, 0x25, 0x76, 0xE8, 0x08, 0x86, 0x9B, 0x36, 0x8D, 0x0F, 0xAD, 0x82,
|
||||
0xDE, 0xB1, 0x98, 0x07, 0x54, 0x8B, 0x61, 0x82, 0xF2, 0x63, 0xE8, 0xF0,
|
||||
0x11, 0x91, 0x90, 0xB6, 0x64, 0xD8, 0x0B, 0x20, 0xF7, 0xEA, 0x7D, 0x15,
|
||||
0xD4, 0x99, 0xC0, 0x3C, 0x78, 0x41, 0xEA, 0x7D, 0xF9, 0xA0, 0x27, 0x21,
|
||||
0xAD, 0x8F, 0x73, 0xB5, 0xFA, 0x3C, 0xBD, 0x77, 0x22, 0x71, 0xB6, 0xB4,
|
||||
0x3A, 0x74, 0xF5, 0x26, 0xA5, 0x23, 0x21, 0x5D, 0x3D, 0x23, 0xF3, 0xEB,
|
||||
0x09, 0xDA, 0x69, 0xF5, 0xF5, 0x4E, 0x3F, 0xB8, 0x49, 0x4B, 0xFD, 0x5B,
|
||||
0x37, 0xF4, 0xF8, 0x25, 0x6B, 0x49, 0x46, 0xF8, 0x36, 0x64, 0xAE, 0x4C,
|
||||
0x73, 0xDB, 0x69, 0xFD, 0x5D, 0xDB, 0x3C, 0x48, 0xCC, 0x7E, 0x4C, 0x00,
|
||||
0x5D, 0xAF, 0xB8, 0x8B, 0xE9, 0x41, 0x70, 0x1A, 0x92, 0xB1, 0x76, 0x81,
|
||||
0x4C, 0x83, 0x40, 0xE6, 0xEE, 0xD8, 0xA6, 0xA7, 0x3D, 0x7B, 0xEE, 0xC6,
|
||||
0xF5, 0xA0, 0xF0, 0xA9, 0x23, 0x2F, 0xC6, 0x75, 0xD1, 0x9E, 0xB7, 0xD0,
|
||||
0xB5, 0xFE, 0xA2, 0xB4, 0x5F, 0x37, 0xD3, 0x62, 0x22, 0x90, 0x7A, 0xA5,
|
||||
0xED, 0x87, 0x3C, 0xB6, 0xEE, 0x37, 0x41, 0x3B, 0x77, 0x25, 0xB7, 0x26,
|
||||
0x23, 0xA8, 0xBB, 0xD3, 0xE1, 0x5B, 0x26, 0x1F, 0x2E, 0x11, 0xB3, 0xFF,
|
||||
0x60, 0x47, 0x8B, 0x99, 0x4E, 0x22, 0x91, 0x3F, 0x96, 0xD1, 0xE2, 0x3E,
|
||||
0xB2, 0x31, 0xE5, 0xBB, 0x1C, 0x5F, 0x8C, 0xF3, 0xB7, 0xCF, 0xED, 0xAA,
|
||||
0xFC, 0xC9, 0x95, 0xFB, 0xB1, 0xBF, 0x39, 0x04, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xC6, 0xF8, 0x0B, 0xA0, 0xD0, 0xFF, 0x56, 0x56, 0xDB, 0x79,
|
||||
0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60,
|
||||
0x82,
|
||||
};
|
||||
unsigned int Resources_Images_env_file_icon_png_len = sizeof(Resources_Images_env_file_icon_png);
|
||||
|
||||
// Data for file: Resources_Images_file_icon_png_path
|
||||
const std::string Resources_Images_file_icon_png_path = R"(Resources/Images/file_icon.png)";
|
||||
unsigned char Resources_Images_file_icon_png[] = {
|
||||
|
||||
@@ -89,6 +89,9 @@ namespace Nuake {
|
||||
extern const std::string Resources_Images_editor_icon_png_path;
|
||||
extern unsigned int Resources_Images_editor_icon_png_len;
|
||||
extern unsigned char Resources_Images_editor_icon_png[];
|
||||
extern const std::string Resources_Images_env_file_icon_png_path;
|
||||
extern unsigned int Resources_Images_env_file_icon_png_len;
|
||||
extern unsigned char Resources_Images_env_file_icon_png[];
|
||||
extern const std::string Resources_Images_file_icon_png_path;
|
||||
extern unsigned int Resources_Images_file_icon_png_len;
|
||||
extern unsigned char Resources_Images_file_icon_png[];
|
||||
|
||||
@@ -26,3 +26,4 @@
|
||||
#include "Components/TransformComponent.h"
|
||||
#include "Components/UIComponent.h"
|
||||
#include "Components/SkyComponent.h"
|
||||
#include "Components/EnvironmentComponent.h"
|
||||
|
||||
19
Nuake/src/Scene/Components/EnvironmentComponent.cpp
Normal file
19
Nuake/src/Scene/Components/EnvironmentComponent.cpp
Normal file
@@ -0,0 +1,19 @@
|
||||
#include "EnvironmentComponent.h"
|
||||
#include "src/FileSystem/File.h"
|
||||
#include "src/FileSystem/FileSystem.h"
|
||||
|
||||
namespace Nuake
|
||||
{
|
||||
json EnvironmentComponent::Serialize()
|
||||
{
|
||||
BEGIN_SERIALIZE();
|
||||
SERIALIZE_RES_FILE(EnvResourceFilePath);
|
||||
END_SERIALIZE();
|
||||
}
|
||||
|
||||
bool EnvironmentComponent::Deserialize(const json& j)
|
||||
{
|
||||
DESERIALIZE_RES_FILE(EnvResourceFilePath);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
30
Nuake/src/Scene/Components/EnvironmentComponent.h
Normal file
30
Nuake/src/Scene/Components/EnvironmentComponent.h
Normal file
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
#include "Component.h"
|
||||
|
||||
#include "src/Core/Core.h"
|
||||
#include "src/Resource/Serializable.h"
|
||||
#include "src/Resource/UUID.h"
|
||||
|
||||
namespace Nuake
|
||||
{
|
||||
class EnvironmentComponent : public Component
|
||||
{
|
||||
NUAKECOMPONENT(EnvironmentComponent, "Environment")
|
||||
|
||||
static void InitializeComponentClass()
|
||||
{
|
||||
BindComponentField<&EnvironmentComponent::EnvResource>("EnvResource", "Environment Resource");
|
||||
SetFlags(ComponentFieldTrait::Internal, ComponentFieldTrait::Transient);
|
||||
BindComponentField<&EnvironmentComponent::EnvResourceFilePath>("EnvResourceFilePath", "File Path");
|
||||
ResourceFileRestriction("_EnvFile");
|
||||
}
|
||||
|
||||
public:
|
||||
UUID EnvResource = UUID(0);
|
||||
ResourceFile EnvResourceFilePath;
|
||||
|
||||
json Serialize();
|
||||
bool Deserialize(const json& j);
|
||||
};
|
||||
}
|
||||
@@ -91,6 +91,8 @@ namespace Nuake
|
||||
SERIALIZE_OBJECT_REF_LBL("PrefabMember", GetComponent<PrefabMember>())
|
||||
if (HasComponent<SkyComponent>())
|
||||
SERIALIZE_OBJECT_REF_LBL("SkyComponent", GetComponent<SkyComponent>())
|
||||
if (HasComponent<EnvironmentComponent>())
|
||||
SERIALIZE_OBJECT_REF_LBL("EnvironmentComponent", GetComponent<EnvironmentComponent>())
|
||||
END_SERIALIZE();
|
||||
}
|
||||
|
||||
@@ -174,6 +176,7 @@ namespace Nuake
|
||||
DESERIALIZE_COMPONENT(NavMeshVolumeComponent);
|
||||
DESERIALIZE_COMPONENT(UIComponent);
|
||||
DESERIALIZE_COMPONENT(SkyComponent);
|
||||
DESERIALIZE_COMPONENT(EnvironmentComponent);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,11 +4,12 @@
|
||||
#include "src/Core/Core.h"
|
||||
|
||||
|
||||
namespace Nuake {
|
||||
|
||||
Environment::Environment()
|
||||
namespace Nuake
|
||||
{
|
||||
Environment::Environment() :
|
||||
m_AmbientColor(1.0f, 1.0f, 1.0f, 1.0f)
|
||||
{
|
||||
m_AmbientColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
ProceduralSkybox = CreateRef<ProceduralSky>();
|
||||
|
||||
CurrentSkyType = SkyType::ProceduralSky;
|
||||
@@ -43,6 +44,11 @@ namespace Nuake {
|
||||
mSSR = CreateScope<SSR>();
|
||||
}
|
||||
|
||||
Environment::Environment(const std::string& path) : Environment()
|
||||
{
|
||||
this->Path = path;
|
||||
}
|
||||
|
||||
glm::vec4 Environment::GetAmbientColor()
|
||||
{
|
||||
return m_AmbientColor;
|
||||
@@ -76,6 +82,7 @@ namespace Nuake {
|
||||
{
|
||||
BEGIN_SERIALIZE();
|
||||
SERIALIZE_VAL(CurrentSkyType);
|
||||
j["UUID"] = static_cast<uint64_t>(ID);
|
||||
|
||||
// Bloom
|
||||
SERIALIZE_VAL(BloomEnabled);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "src/Core/Maths.h"
|
||||
#include "src/Core/Core.h"
|
||||
#include "src/Scene/Environment/ProceduralSky.h"
|
||||
#include "src/Resource/Resource.h"
|
||||
#include "src/Resource/Serializable.h"
|
||||
|
||||
#include "src/Rendering/PostFX/Bloom.h"
|
||||
@@ -20,9 +21,10 @@ namespace Nuake
|
||||
// CubeMap
|
||||
};
|
||||
|
||||
class Environment : public ISerializable
|
||||
class Environment : public Resource, ISerializable
|
||||
{
|
||||
public:
|
||||
Environment(const std::string& path);
|
||||
Environment();
|
||||
|
||||
SkyType CurrentSkyType;
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include "src/Core/OS.h"
|
||||
#include "src/Physics/PhysicsManager.h"
|
||||
|
||||
#include "src/Resource/ResourceManager.h"
|
||||
|
||||
#include "src/Scene/Systems/ScriptingSystem.h"
|
||||
#include "src/Scene/Systems/PhysicsSystem.h"
|
||||
#include "src/Scene/Systems/TransformSystem.h"
|
||||
@@ -32,6 +34,7 @@
|
||||
#include "src/Scene/Components/SkinnedModelComponent.h"
|
||||
#include "src/Scene/Components/BoneComponent.h"
|
||||
|
||||
|
||||
#include <Tracy.hpp>
|
||||
|
||||
#include <fstream>
|
||||
@@ -41,6 +44,8 @@
|
||||
|
||||
namespace Nuake
|
||||
{
|
||||
Ref<Environment> Scene::m_Environment = nullptr;
|
||||
|
||||
Ref<Scene> Scene::New()
|
||||
{
|
||||
return CreateRef<Scene>();
|
||||
@@ -48,9 +53,13 @@ namespace Nuake
|
||||
|
||||
Scene::Scene()
|
||||
{
|
||||
if (m_Environment == nullptr)
|
||||
{
|
||||
m_Environment = CreateRef<Environment>();
|
||||
}
|
||||
|
||||
m_Systems = std::vector<Ref<System>>();
|
||||
m_EditorCamera = CreateRef<EditorCamera>();
|
||||
m_Environement = CreateRef<Environment>();
|
||||
|
||||
physicsSystem = CreateRef<PhysicsSystem>(this);
|
||||
scriptingSystem = CreateRef<ScriptingSystem>(this);
|
||||
@@ -583,14 +592,26 @@ namespace Nuake
|
||||
return m_EditorCamera;
|
||||
}
|
||||
|
||||
Ref<Environment> Scene::GetEnvironment() const
|
||||
Ref<Environment> Scene::GetEnvironment()
|
||||
{
|
||||
return m_Environement;
|
||||
}
|
||||
auto view = m_Registry.view<EnvironmentComponent>();
|
||||
for (auto e : view)
|
||||
{
|
||||
auto& envComponent = view.get<EnvironmentComponent>(e);
|
||||
if (envComponent.EnvResourceFilePath.Exist() && envComponent.EnvResource == UUID(0))
|
||||
{
|
||||
auto env = ResourceLoader::LoadEnvironment(envComponent.EnvResourceFilePath.GetRelativePath());
|
||||
envComponent.EnvResource = env->ID;
|
||||
return env;
|
||||
}
|
||||
|
||||
void Scene::SetEnvironment(Ref<Environment> env)
|
||||
{
|
||||
m_Environement = env;
|
||||
if (ResourceManager::IsResourceLoaded(envComponent.EnvResource))
|
||||
{
|
||||
return ResourceManager::GetResource<Environment>(envComponent.EnvResource);
|
||||
}
|
||||
}
|
||||
|
||||
return m_Environment;
|
||||
}
|
||||
|
||||
bool Scene::Save()
|
||||
@@ -647,7 +668,6 @@ namespace Nuake
|
||||
{
|
||||
BEGIN_SERIALIZE();
|
||||
SERIALIZE_VAL(Name);
|
||||
SERIALIZE_OBJECT(m_Environement)
|
||||
SERIALIZE_VAL(Path)
|
||||
|
||||
std::vector<json> entities = std::vector<json>();
|
||||
@@ -685,12 +705,6 @@ namespace Nuake
|
||||
Path = j["Path"];
|
||||
}
|
||||
|
||||
m_Environement = CreateRef<Environment>();
|
||||
if (j.contains("m_Environement"))
|
||||
{
|
||||
m_Environement->Deserialize(j["m_Environement"]);
|
||||
}
|
||||
|
||||
// Parse entities
|
||||
if (!j.contains("Entities"))
|
||||
{
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace Nuake
|
||||
// You can create a new system(see 'Systems/'.) and register it
|
||||
// In the scene constructor.
|
||||
std::vector<Ref<System>> m_Systems;
|
||||
Ref<Environment> m_Environement;
|
||||
static Ref<Environment> m_Environment;
|
||||
|
||||
public:
|
||||
Ref<EditorCamera> m_EditorCamera;
|
||||
@@ -88,8 +88,7 @@ namespace Nuake
|
||||
template<typename Component>
|
||||
static void CopyComponent(entt::registry& dst, entt::registry& src);
|
||||
|
||||
Ref<Environment> GetEnvironment() const;
|
||||
void SetEnvironment(Ref<Environment> env);
|
||||
Ref<Environment> GetEnvironment();
|
||||
|
||||
bool Save();
|
||||
bool SaveAs(const std::string& path);
|
||||
|
||||
@@ -11,6 +11,19 @@
|
||||
|
||||
namespace Nuake
|
||||
{
|
||||
#define BEGIN_COLLAPSE_HEADER(names) \
|
||||
UIFont* names##_boldFont = new UIFont(Fonts::Bold); \
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.f, 0.f)); \
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0.f, 8.f)); \
|
||||
bool names##_Opened = ImGui::CollapsingHeader((std::string(" ") + #names).c_str()); \
|
||||
ImGui::PopStyleVar(); \
|
||||
delete names##_boldFont; \
|
||||
if (names##_Opened) { \
|
||||
|
||||
#define END_COLLAPSE_HEADER() \
|
||||
} \
|
||||
ImGui::PopStyleVar(); \
|
||||
|
||||
namespace UI
|
||||
{
|
||||
static uint32_t PrimaryCol = IM_COL32(97, 0, 255, 255);
|
||||
|
||||
Reference in New Issue
Block a user