Added korean location

This commit is contained in:
Vladislav Khorev committed 2026-10-25 01:29:38 +06:00
1 parent d5ef126264
commit 96e748715b
80 files changed
+18949 -80

No files matched your search

+68 -1
View File
@@ -106,7 +106,11 @@ namespace FRG
{
// Load static game objects
gameObjects = GameObjectLoader::loadAndCreateGameObjects(params.gameObjectsJsonPath, renderer, CONST_ZIP_FILE);
{
StaticObjectSet staticObjects = GameObjectLoader::loadAndCreateGameObjects(params.gameObjectsJsonPath, renderer, CONST_ZIP_FILE);
gameObjects = std::move(staticObjects.single);
instancedBatches = std::move(staticObjects.batches);
}
SDL_PumpEvents();
// Load interactive objects
@@ -683,6 +687,27 @@ namespace FRG
}
void Location::drawInstancedStatics(const std::string& instancedShaderName, InstancedTexture textureKind,
const std::function<void()>& setUniforms)
{
if (instancedBatches.empty()) return;
renderer.shaderManager.PushShader(instancedShaderName);
if (setUniforms) setUniforms();
renderer.SetMatrix();
for (auto& batch : instancedBatches) {
if (textureKind != InstancedTexture::None) {
const auto& texture = (textureKind == InstancedTexture::Darklands) ? batch.textureDarklands : batch.texture;
if (!texture) continue;
glBindTexture(GL_TEXTURE_2D, texture->getTexID());
}
renderer.DrawInstanced(batch);
}
renderer.shaderManager.PopShader();
}
void Location::drawGame()
{
@@ -718,6 +743,11 @@ namespace FRG
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
renderer.DrawVertexRenderStruct(gameObj.mesh);
}
drawInstancedStatics("fog_inst", InstancedTexture::Color, [&]() {
renderer.RenderUniform1i(textureUniformName, 0);
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
renderer.RenderUniform1f("uAlpha", 1.0f);
});
for (auto& intObj : interactiveObjects) {
if (intObj.state.isActive) {
@@ -812,6 +842,7 @@ namespace FRG
for (auto& [name, gameObj] : gameObjects) {
renderer.DrawVertexRenderStruct(gameObj.mesh);
}
drawInstancedStatics("shadow_depth_inst", InstancedTexture::None);
for (auto& intObj : interactiveObjects) {
if (intObj.state.castShadow && intObj.loadedObject.texture) {
@@ -907,6 +938,16 @@ namespace FRG
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
renderer.DrawVertexRenderStruct(gameObj.mesh);
}
#ifndef DEBUG_LIGHT
drawInstancedStatics("fog_shadow_inst", InstancedTexture::Color, [&]() {
renderer.RenderUniform1i(textureUniformName, 0);
renderer.RenderUniform1i("uShadowMap", 1);
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
renderer.RenderUniform3fv("uLightDir", lightDirCamera.data());
renderer.RenderUniform1f("uAlpha", 1.0f);
});
#endif
CheckGlError(__FILE__, __LINE__);
for (auto& intObj : interactiveObjects) {
@@ -1004,6 +1045,11 @@ namespace FRG
glBindTexture(GL_TEXTURE_2D, gameObj.textureDarklands->getTexID());
renderer.DrawVertexRenderStruct(gameObj.mesh);
}
drawInstancedStatics("darklands_fog_inst", InstancedTexture::Darklands, [&]() {
renderer.RenderUniform1i(textureUniformName, 0);
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
renderer.RenderUniform1f("uAlpha", 1.0f);
});
for (auto& intObj : interactiveObjects) {
if (intObj.state.isActive) {
@@ -1067,6 +1113,7 @@ namespace FRG
for (auto& [name, gameObj] : gameObjects) {
renderer.DrawVertexRenderStruct(gameObj.mesh);
}
drawInstancedStatics("shadow_depth_inst", InstancedTexture::None);
for (auto& intObj : interactiveObjects) {
if (intObj.state.castShadowNight && intObj.loadedObject.texture) {
renderer.PushMatrix();
@@ -1279,6 +1326,26 @@ namespace FRG
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
renderer.DrawVertexRenderStruct(gameObj.mesh);
}
drawInstancedStatics(hasShadows ? "night_fog_shadow_inst" : "night_fog_inst", InstancedTexture::Color, [&]() {
renderer.RenderUniform1i(textureUniformName, 0);
if (hasShadows) {
renderer.RenderUniform1i("uShadowMap", 1);
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
renderer.RenderUniform3fv("uLightDir", plDirEye);
}
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
renderer.RenderUniform3fv("uFogColor", fogColor);
renderer.RenderUniform1i("uPointLightCount", lightCount);
if (lightCount > 0) {
renderer.RenderUniform3fvArray("uPointLightPos[0]", lightCount, plPosEye);
renderer.RenderUniform3fvArray("uPointLightDir[0]", lightCount, plDirEye);
renderer.RenderUniform3fvArray("uPointLightColor[0]", lightCount, plColors);
renderer.RenderUniform2fvArray("uPointLightWorldXZ[0]", lightCount, plWorldXZ);
renderer.RenderUniform2fvArray("uPointLightLimitXZ[0]", lightCount, plLimitXZ);
}
renderer.RenderUniform1f("uAlpha", 1.0f);
});
for (auto& intObj : interactiveObjects) {
if (intObj.state.isActive) {