mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-09 13:01:49 +00:00
test environment (sky)
This commit is contained in:
parent
c4d5812b4f
commit
a7ad219261
14 changed files with 421 additions and 196 deletions
25
src/world/Environment.cpp
Normal file
25
src/world/Environment.cpp
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#define VC_ENABLE_REFLECTION
|
||||
#include "Environment.hpp"
|
||||
|
||||
#include "data/dv.hpp"
|
||||
#include "data/dv_util.hpp"
|
||||
|
||||
dv::value Environment::serialize() const {
|
||||
return dv::object({
|
||||
{"sky", dv::object({
|
||||
{"mode", SkyModeMeta.getNameString(sky.mode)},
|
||||
{"stars", sky.stars},
|
||||
{"clouds", sky.clouds},
|
||||
{"sprites", sky.sprites},
|
||||
})},
|
||||
});
|
||||
}
|
||||
|
||||
void Environment::deserialize(const dv::value& src) {
|
||||
if (auto skyItem = src.at("sky")) {
|
||||
skyItem->at("mode").get(sky.mode, SkyModeMeta);
|
||||
skyItem->at("stars").get(sky.stars);
|
||||
skyItem->at("clouds").get(sky.clouds);
|
||||
skyItem->at("sprites").get(sky.sprites);
|
||||
}
|
||||
}
|
||||
30
src/world/Environment.hpp
Normal file
30
src/world/Environment.hpp
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#pragma once
|
||||
|
||||
#include "interfaces/Serializable.hpp"
|
||||
#include "util/EnumMetadata.hpp"
|
||||
|
||||
enum class SkyMode {
|
||||
NONE, SOLID, BOX
|
||||
};
|
||||
|
||||
VC_ENUM_METADATA(SkyMode)
|
||||
{"none", SkyMode::NONE},
|
||||
{"solid", SkyMode::SOLID},
|
||||
{"box", SkyMode::BOX},
|
||||
VC_ENUM_END
|
||||
|
||||
class Environment : public Serializable {
|
||||
public:
|
||||
struct {
|
||||
SkyMode mode = SkyMode::BOX;
|
||||
bool stars = true;
|
||||
bool clouds = true;
|
||||
bool sprites = true;
|
||||
} sky;
|
||||
|
||||
Environment() = default;
|
||||
|
||||
dv::value serialize() const override;
|
||||
void deserialize(const dv::value& src) override;
|
||||
private:
|
||||
};
|
||||
|
|
@ -6,6 +6,7 @@
|
|||
#include <unordered_map>
|
||||
|
||||
#include "typedefs.hpp"
|
||||
#include "Environment.hpp"
|
||||
|
||||
class Content;
|
||||
class World;
|
||||
|
|
@ -36,6 +37,7 @@ public:
|
|||
std::unique_ptr<Players> players;
|
||||
std::unique_ptr<voxels::Pathfinding> pathfinding;
|
||||
std::vector<std::shared_ptr<Camera>> cameras; // move somewhere?
|
||||
Environment environment {};
|
||||
|
||||
Level(
|
||||
std::unique_ptr<World> world,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue