Added darklands
This commit is contained in:
1 parent
4e9eef1863
commit
c086fe1ef0
16 files changed
+351
-4
No files matched your search
@@ -45,9 +45,10 @@ namespace ZL {
|
||||
static GameObjectData parseGameObjectData(const json& item)
|
||||
{
|
||||
GameObjectData data;
|
||||
data.name = item.value("name", "Unknown");
|
||||
data.texturePath = item.value("texturePath", "");
|
||||
data.meshPath = item.value("meshPath", "");
|
||||
data.name = item.value("name", "Unknown");
|
||||
data.texturePath = item.value("texturePath", "");
|
||||
data.textureDarkandsPath = item.value("textureDarkandsPath", "");
|
||||
data.meshPath = item.value("meshPath", "");
|
||||
data.rotationX = item.value("rotationX", 0.0f);
|
||||
data.rotationY = item.value("rotationY", 0.0f);
|
||||
data.rotationZ = item.value("rotationZ", 0.0f);
|
||||
@@ -110,6 +111,8 @@ namespace ZL {
|
||||
obj.name = data.name;
|
||||
|
||||
obj.texture = renderer.textureManager.LoadFromPng(data.texturePath, zipPath);
|
||||
if (!data.textureDarkandsPath.empty())
|
||||
obj.textureDarklands = renderer.textureManager.LoadFromPng(data.textureDarkandsPath, zipPath);
|
||||
|
||||
if (data.meshPath.size() > 4 && data.meshPath.compare(data.meshPath.size() - 4, 4, ".bin") == 0)
|
||||
obj.mesh.data = LoadModelFromBinFile(data.meshPath, zipPath);
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace ZL {
|
||||
struct GameObjectData {
|
||||
std::string name;
|
||||
std::string texturePath;
|
||||
std::string textureDarkandsPath;
|
||||
std::string meshPath;
|
||||
float rotationX = 0.0f;
|
||||
float rotationY = 0.0f;
|
||||
|
||||
@@ -117,6 +117,32 @@ namespace ZL {
|
||||
}
|
||||
}
|
||||
|
||||
void InteractiveObject::drawDarklands(Renderer& renderer) const {
|
||||
if (!isActive || !loadedObject.textureDarklands) return;
|
||||
|
||||
if (alpha < 0.999f) {
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
}
|
||||
|
||||
renderer.PushMatrix();
|
||||
renderer.TranslateMatrix(position);
|
||||
if (rotationY != 0.f) {
|
||||
renderer.TranslateMatrix(pivot);
|
||||
renderer.RotateMatrix(Eigen::AngleAxisf(rotationY, Eigen::Vector3f::UnitY()).toRotationMatrix());
|
||||
renderer.TranslateMatrix(-pivot);
|
||||
}
|
||||
if (scale != 1.f)
|
||||
renderer.ScaleMatrix(scale);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform1f("uAlpha", alpha);
|
||||
glBindTexture(GL_TEXTURE_2D, loadedObject.textureDarklands->getTexID());
|
||||
renderer.DrawVertexRenderStruct(loadedObject.mesh);
|
||||
renderer.PopMatrix();
|
||||
|
||||
renderer.RenderUniform1f("uAlpha", 1.0f);
|
||||
}
|
||||
|
||||
void InteractiveObject::draw(Renderer& renderer) const {
|
||||
if (!isActive || !loadedObject.texture) return;
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace ZL {
|
||||
|
||||
struct LoadedGameObject {
|
||||
std::shared_ptr<Texture> texture;
|
||||
std::shared_ptr<Texture> textureDarklands;
|
||||
VertexRenderStruct mesh;
|
||||
std::string name;
|
||||
};
|
||||
@@ -52,6 +53,7 @@ namespace ZL {
|
||||
void fadeTo(float targetAlpha, float durationSec, std::function<void()> onComplete = {});
|
||||
void update(int64_t deltaMs);
|
||||
void draw(Renderer& renderer) const;
|
||||
void drawDarklands(Renderer& renderer) const;
|
||||
};
|
||||
|
||||
} // namespace ZL
|
||||
Reference in new issue
Block a user