34 lines
1023 B
C++
34 lines
1023 B
C++
#pragma once
|
||
#include "water_depth.h"
|
||
|
||
#include <godot_cpp/classes/array_mesh.hpp>
|
||
#include <godot_cpp/classes/ref.hpp>
|
||
|
||
#include <terrain_files.h>
|
||
|
||
#include <vector>
|
||
|
||
namespace fmt {
|
||
struct AssetResolver;
|
||
}
|
||
|
||
// W7 / PARITY §4 —— water.wtr -> 每层水面网格(texel 掩膜)+ 共享水材质。
|
||
// 水材质用原客户端资产:`special/water/01..30.dds` 30 帧序列(`MapOutdoorWater.cpp:14/43`,
|
||
// 70ms/帧),UV 平铺频率 = 1/(CELLSCALE*4)(每 4 格一循环),逐顶点水深 alpha,轻微高度浮动。
|
||
namespace mtgodot {
|
||
|
||
|
||
struct WaterPiece {
|
||
godot::Ref<godot::ArrayMesh> mesh; // Godot 空间,已含区块原点
|
||
float godot_y = 0;
|
||
};
|
||
|
||
// hm/height_scale 用来算每个水面顶点下方的地形高度 -> 水深 -> alpha。
|
||
std::vector<WaterPiece> build_chunk_water(const fmt::WaterMap &wm, const fmt::HeightMap &hm,
|
||
int tile_x, int tile_y, double height_scale, const fmt::AssetResolver &res);
|
||
|
||
void cleanup_water_shader();
|
||
void update_water_animation();
|
||
|
||
} // namespace mtgodot
|