2
2
3
3
#include < components/lua/luastate.hpp>
4
4
#include < components/lua/utilpackage.hpp>
5
+ #include < components/misc/finitenumbers.hpp>
5
6
#include < components/settings/values.hpp>
6
7
7
8
#include " ../mwbase/environment.hpp"
11
12
12
13
namespace MWLua
13
14
{
14
-
15
15
using CameraMode = MWRender::Camera::Mode;
16
16
17
17
sol::table initCameraPackage (sol::state_view lua)
18
18
{
19
+ using FiniteFloat = Misc::FiniteFloat;
20
+
19
21
MWRender::Camera* camera = MWBase::Environment::get ().getWorld ()->getCamera ();
20
22
MWRender::RenderingManager* renderingManager = MWBase::Environment::get ().getWorld ()->getRenderingManager ();
21
23
@@ -49,34 +51,35 @@ namespace MWLua
49
51
api[" getRoll" ] = [camera]() { return -camera->getRoll (); };
50
52
51
53
api[" setStaticPosition" ] = [camera](const osg::Vec3f& pos) { camera->setStaticPosition (pos); };
52
- api[" setPitch" ] = [camera](float v) {
54
+ api[" setPitch" ] = [camera](const FiniteFloat v) {
53
55
camera->setPitch (-v, true );
54
56
if (camera->getMode () == CameraMode::ThirdPerson)
55
57
camera->calculateDeferredRotation ();
56
58
};
57
- api[" setYaw" ] = [camera](float v) {
59
+ api[" setYaw" ] = [camera](const FiniteFloat v) {
58
60
camera->setYaw (-v, true );
59
61
if (camera->getMode () == CameraMode::ThirdPerson)
60
62
camera->calculateDeferredRotation ();
61
63
};
62
- api[" setRoll" ] = [camera](float v) { camera->setRoll (-v); };
63
- api[" setExtraPitch" ] = [camera](float v) { camera->setExtraPitch (-v); };
64
- api[" setExtraYaw" ] = [camera](float v) { camera->setExtraYaw (-v); };
65
- api[" setExtraRoll" ] = [camera](float v) { camera->setExtraRoll (-v); };
64
+ api[" setRoll" ] = [camera](const FiniteFloat v) { camera->setRoll (-v); };
65
+ api[" setExtraPitch" ] = [camera](const FiniteFloat v) { camera->setExtraPitch (-v); };
66
+ api[" setExtraYaw" ] = [camera](const FiniteFloat v) { camera->setExtraYaw (-v); };
67
+ api[" setExtraRoll" ] = [camera](const FiniteFloat v) { camera->setExtraRoll (-v); };
66
68
api[" getExtraPitch" ] = [camera]() { return -camera->getExtraPitch (); };
67
69
api[" getExtraYaw" ] = [camera]() { return -camera->getExtraYaw (); };
68
70
api[" getExtraRoll" ] = [camera]() { return -camera->getExtraRoll (); };
69
71
70
72
api[" getThirdPersonDistance" ] = [camera]() { return camera->getCameraDistance (); };
71
- api[" setPreferredThirdPersonDistance" ] = [camera](float v) { camera->setPreferredCameraDistance (v); };
73
+ api[" setPreferredThirdPersonDistance" ]
74
+ = [camera](const FiniteFloat v) { camera->setPreferredCameraDistance (v); };
72
75
73
76
api[" getFirstPersonOffset" ] = [camera]() { return camera->getFirstPersonOffset (); };
74
77
api[" setFirstPersonOffset" ] = [camera](const osg::Vec3f& v) { camera->setFirstPersonOffset (v); };
75
78
76
79
api[" getFocalPreferredOffset" ] = [camera]() -> osg::Vec2f { return camera->getFocalPointTargetOffset (); };
77
80
api[" setFocalPreferredOffset" ] = [camera](const osg::Vec2f& v) { camera->setFocalPointTargetOffset (v); };
78
81
api[" getFocalTransitionSpeed" ] = [camera]() { return camera->getFocalPointTransitionSpeed (); };
79
- api[" setFocalTransitionSpeed" ] = [camera](float v) { camera->setFocalPointTransitionSpeed (v); };
82
+ api[" setFocalTransitionSpeed" ] = [camera](const FiniteFloat v) { camera->setFocalPointTransitionSpeed (v); };
80
83
api[" instantTransition" ] = [camera]() { camera->instantTransition (); };
81
84
82
85
api[" getCollisionType" ] = [camera]() { return camera->getCollisionType (); };
@@ -86,11 +89,12 @@ namespace MWLua
86
89
api[" getFieldOfView" ]
87
90
= [renderingManager]() { return osg::DegreesToRadians (renderingManager->getFieldOfView ()); };
88
91
api[" setFieldOfView" ]
89
- = [renderingManager](float v) { renderingManager->setFieldOfView (osg::RadiansToDegrees (v)); };
92
+ = [renderingManager](const FiniteFloat v) { renderingManager->setFieldOfView (osg::RadiansToDegrees (v)); };
90
93
91
94
api[" getBaseViewDistance" ] = [] { return Settings::camera ().mViewingDistance .get (); };
92
95
api[" getViewDistance" ] = [renderingManager]() { return renderingManager->getViewDistance (); };
93
- api[" setViewDistance" ] = [renderingManager](float d) { renderingManager->setViewDistance (d, true ); };
96
+ api[" setViewDistance" ]
97
+ = [renderingManager](const FiniteFloat d) { renderingManager->setViewDistance (d, true ); };
94
98
95
99
api[" getViewTransform" ] = [camera]() { return LuaUtil::TransformM{ camera->getViewMatrix () }; };
96
100
0 commit comments