diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-11-07 18:26:31 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-11-07 18:26:31 +1100 |
commit | 3b40e89b3297a97a833711dbb77734b0412ac1d9 (patch) | |
tree | d1ed453d1aa48868bc6e3de6233b7fce9b8801be /source/game/scripting | |
parent | 9502b05ea4587f2c060608718486d5c8d5bc3ac5 (diff) |
Add camera bindings
override missing, but it's a start
Diffstat (limited to 'source/game/scripting')
-rw-r--r-- | source/game/scripting/StarCameraLuaBindings.cpp | 31 | ||||
-rw-r--r-- | source/game/scripting/StarCameraLuaBindings.hpp | 12 |
2 files changed, 43 insertions, 0 deletions
diff --git a/source/game/scripting/StarCameraLuaBindings.cpp b/source/game/scripting/StarCameraLuaBindings.cpp new file mode 100644 index 0000000..b7128ea --- /dev/null +++ b/source/game/scripting/StarCameraLuaBindings.cpp @@ -0,0 +1,31 @@ +#include "StarCameraLuaBindings.hpp" +#include "StarLuaConverters.hpp" +#include "StarWorldCamera.hpp" +#include "StarRoot.hpp" + +namespace Star { + +LuaCallbacks LuaBindings::makeCameraCallbacks(WorldCamera* camera) { + LuaCallbacks callbacks; + + callbacks.registerCallbackWithSignature<Vec2F>("position", bind(&WorldCamera::centerWorldPosition, camera)); + callbacks.registerCallbackWithSignature<float>("pixelRatio", bind(&WorldCamera::pixelRatio, camera)); + callbacks.registerCallback("setPixelRatio", [camera](float pixelRatio, Maybe<bool> smooth) { + if (smooth.value()) + camera->setTargetPixelRatio(pixelRatio); + else + camera->setPixelRatio(pixelRatio); + Root::singleton().configuration()->set("zoomLevel", pixelRatio); + }); + + callbacks.registerCallbackWithSignature<Vec2U>("screenSize", bind(&WorldCamera::screenSize, camera)); + callbacks.registerCallbackWithSignature<RectF>("worldScreenRect", bind(&WorldCamera::worldScreenRect, camera)); + callbacks.registerCallbackWithSignature<RectI>("worldTileRect", bind(&WorldCamera::worldTileRect, camera)); + callbacks.registerCallbackWithSignature<Vec2F>("tileMinScreen", bind(&WorldCamera::tileMinScreen, camera)); + callbacks.registerCallbackWithSignature<Vec2F, Vec2F>("screenToWorld", bind(&WorldCamera::screenToWorld, camera, _1)); + callbacks.registerCallbackWithSignature<Vec2F, Vec2F>("worldToScreen", bind(&WorldCamera::worldToScreen, camera, _1)); + + return callbacks; +} + +} diff --git a/source/game/scripting/StarCameraLuaBindings.hpp b/source/game/scripting/StarCameraLuaBindings.hpp new file mode 100644 index 0000000..b944b3d --- /dev/null +++ b/source/game/scripting/StarCameraLuaBindings.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include "StarLua.hpp" + +namespace Star { + +STAR_CLASS(WorldCamera); + +namespace LuaBindings { + LuaCallbacks makeCameraCallbacks(WorldCamera* camera); +} +} |