载入中...
搜索中...
未找到
WaterPlanarReflectionBindings.cpp
浏览该文件的文档.
2
4
5#include <simplesquirrel/simplesquirrel.hpp>
6
7namespace eve::graphics {
8
9void exposeWaterPlanarReflectionBindings(ssq::Table& table) {
10 auto settings = table.addClass("WaterPlanarReflectionSettings",
11 ssq::Class::Ctor<WaterPlanarReflectionSettings()>());
13 settings.addVar("disableSkyboxReflections", &WaterPlanarReflectionSettings::disableSkyboxReflections);
18 settings.addVar("enablePerLayerDistances", &WaterPlanarReflectionSettings::enablePerLayerDistances);
22 settings.addFunc("setResolutionMultiplier", [](WaterPlanarReflectionSettings* value, int multiplier) {
23 value->resolutionMultiplier = static_cast<WaterReflectionResolution>(multiplier);
24 });
25 settings.addFunc("setLayerDistance", [](WaterPlanarReflectionSettings* value, int layer, float distance) {
26 if (value && layer >= 0 && layer < 32) value->customRenderDistances[static_cast<std::size_t>(layer)] = distance;
27 });
28
29 auto input = table.addClass("WaterPlanarReflectionInput", ssq::Class::Ctor<WaterPlanarReflectionInput()>());
30 input.addVar("waterPlaneY", &WaterPlanarReflectionInput::waterPlaneY);
31 input.addVar("renderScale", &WaterPlanarReflectionInput::renderScale);
32 input.addVar("orthographic", &WaterPlanarReflectionInput::orthographic);
33 input.addVar("reflectionOrPreviewCamera", &WaterPlanarReflectionInput::reflectionOrPreviewCamera);
34 input.addFunc("setCameraPosition", [](WaterPlanarReflectionInput* value, float x, float y, float z) {
35 value->cameraPosition = {x, y, z};
36 });
37 input.addFunc("setCameraForward", [](WaterPlanarReflectionInput* value, float x, float y, float z) {
38 value->cameraForward = {x, y, z};
39 });
40
41 auto plan = table.addClass("WaterPlanarReflectionPlan", ssq::Class::Ctor<WaterPlanarReflectionPlan()>());
42 plan.addVar("textureWidth", &WaterPlanarReflectionPlan::textureWidth);
43 plan.addVar("textureHeight", &WaterPlanarReflectionPlan::textureHeight);
44 plan.addVar("cullingMask", &WaterPlanarReflectionPlan::cullingMask);
45 plan.addVar("renderShadows", &WaterPlanarReflectionPlan::renderShadows);
46 plan.addVar("shouldRender", &WaterPlanarReflectionPlan::shouldRender);
47 plan.addFunc("getCameraX", [](const WaterPlanarReflectionPlan* value) { return value->cameraPosition.x; });
48 plan.addFunc("getCameraY", [](const WaterPlanarReflectionPlan* value) { return value->cameraPosition.y; });
49 plan.addFunc("getCameraZ", [](const WaterPlanarReflectionPlan* value) { return value->cameraPosition.z; });
50 plan.addFunc("getForwardY", [](const WaterPlanarReflectionPlan* value) { return value->cameraForward.y; });
51 plan.addFunc("getLayerDistance", [](const WaterPlanarReflectionPlan* value, int layer) {
52 return value && layer >= 0 && layer < 32 ? value->layerCullDistances[static_cast<std::size_t>(layer)] : -1.0F;
53 });
54 plan.addFunc("getReflectionMatrix", [](const WaterPlanarReflectionPlan* value, int column, int row) {
55 return value && column >= 0 && column < 4 && row >= 0 && row < 4
56 ? value->reflectionMatrix[static_cast<std::size_t>(column)][static_cast<std::size_t>(row)]
57 : 0.0F;
58 });
59
60 table.addFunc("buildWaterPlanarReflectionPlan",
61 [vm = table.getHandle()](WaterPlanarReflectionPlan* output,
64 if (!output || !settings || !input)
68 "water.planarReflection: non-null output, settings and input required")));
70 if (!result) return eve::script::projectResult(vm, Result<void>::failure(result.status()));
71 *output = std::move(result).takeValue();
73 });
74}
75
76} // namespace eve::graphics
double value
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
float z
Definition AnimClip.cpp:738
std::string output
int column
HSQUIRRELVM vm
Definition ECS.cpp:20
EvpackChunkInput input
Definition Evpack.cpp:170
float distance
TileLayer * layer
The single Squirrel projection for common Result, Status and Value.
TerrainThermalSettings settings
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
Move-only operation result carrying either a value or Status.
Definition Result.h:155
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
WaterReflectionResolution
Pcg-compatible render-size multiplier for planar water reflections.
Result< WaterPlanarReflectionPlan > buildWaterPlanarReflectionPlan(const WaterPlanarReflectionSettings &settings, const WaterPlanarReflectionInput &input)
Build the mirror-camera plan used by PcgPlanarReflections without retaining scene objects.
EVENGINE_API_BACKENDS void exposeWaterPlanarReflectionBindings(ssq::Table &table)
Register planar water-reflection value types and checked planner with the VM owner thread.
ssq::Table projectResult(HSQUIRRELVM vm, Result< void > &&result)
Consume and project a void native Result using the common schema.
Immutable camera and horizontal water-plane inputs for a reflection capture.
Complete, caller-owned plan for configuring a mirrored capture camera.
Authored planar-reflection policy with no camera or texture ownership.