mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-01 15:09:43 +00:00
Merge branch 'lua_viewdistance' into 'master'
Lua Bindings: Add view distance bindings to camera See merge request OpenMW/openmw!1838
This commit is contained in:
commit
f809354d92
4 changed files with 37 additions and 9 deletions
apps/openmw
files/lua_api/openmw
|
@ -92,6 +92,13 @@ namespace MWLua
|
|||
api["getFieldOfView"] = [renderingManager]() { return osg::DegreesToRadians(renderingManager->getFieldOfView()); };
|
||||
api["setFieldOfView"] = [renderingManager](float v) { renderingManager->setFieldOfView(osg::RadiansToDegrees(v)); };
|
||||
|
||||
api["getBaseViewDistance"] = []()
|
||||
{
|
||||
return std::max(0.f, Settings::Manager::getFloat("viewing distance", "Camera"));
|
||||
};
|
||||
api["getViewDistance"] = [renderingManager]() { return renderingManager->getViewDistance(); };
|
||||
api["setViewDistance"] = [renderingManager](float d) { renderingManager->setViewDistance(d, true); };
|
||||
|
||||
api["getViewTransform"] = [camera]() { return LuaUtil::TransformM{camera->getViewMatrix()}; };
|
||||
|
||||
api["viewportToWorldVector"] = [camera, renderingManager](osg::Vec2f pos) -> osg::Vec3f
|
||||
|
|
|
@ -363,7 +363,7 @@ namespace MWRender
|
|||
|| reverseZ
|
||||
|| Stereo::getMultiview();
|
||||
resourceSystem->getSceneManager()->setForceShaders(forceShaders);
|
||||
|
||||
|
||||
// FIXME: calling dummy method because terrain needs to know whether lighting is clamped
|
||||
resourceSystem->getSceneManager()->setClampLighting(Settings::Manager::getBool("clamp lighting", "Shaders"));
|
||||
resourceSystem->getSceneManager()->setAutoUseNormalMaps(Settings::Manager::getBool("auto use object normal maps", "Shaders"));
|
||||
|
@ -511,7 +511,7 @@ namespace MWRender
|
|||
|
||||
// water goes after terrain for correct waterculling order
|
||||
mWater.reset(new Water(sceneRoot->getParent(0), sceneRoot, mResourceSystem, mViewer->getIncrementalCompileOperation(), resourcePath));
|
||||
|
||||
|
||||
mCamera.reset(new Camera(mViewer->getCamera()));
|
||||
|
||||
mScreenshotManager.reset(new ScreenshotManager(viewer, mRootNode, sceneRoot, mResourceSystem, mWater.get()));
|
||||
|
@ -1293,10 +1293,7 @@ namespace MWRender
|
|||
}
|
||||
else if (it->first == "Camera" && it->second == "viewing distance")
|
||||
{
|
||||
mViewDistance = Settings::Manager::getFloat("viewing distance", "Camera");
|
||||
if(!Settings::Manager::getBool("use distant fog", "Fog"))
|
||||
mStateUpdater->setFogEnd(mViewDistance);
|
||||
updateProjection = true;
|
||||
setViewDistance(Settings::Manager::getFloat("viewing distance", "Camera"));
|
||||
}
|
||||
else if (it->first == "General" && (it->second == "texture filter" ||
|
||||
it->second == "texture mipmap" ||
|
||||
|
@ -1346,9 +1343,17 @@ namespace MWRender
|
|||
}
|
||||
}
|
||||
|
||||
float RenderingManager::getNearClipDistance() const
|
||||
void RenderingManager::setViewDistance(float distance, bool delay)
|
||||
{
|
||||
return mNearClip;
|
||||
mViewDistance = distance;
|
||||
|
||||
if (delay)
|
||||
{
|
||||
mUpdateProjectionMatrix = true;
|
||||
return;
|
||||
}
|
||||
|
||||
updateProjectionMatrix();
|
||||
}
|
||||
|
||||
float RenderingManager::getTerrainHeightAt(const osg::Vec3f &pos)
|
||||
|
|
|
@ -206,7 +206,10 @@ namespace MWRender
|
|||
|
||||
void processChangedSettings(const Settings::CategorySettingVector& settings);
|
||||
|
||||
float getNearClipDistance() const;
|
||||
float getNearClipDistance() const { return mNearClip; }
|
||||
float getViewDistance() const { return mViewDistance; }
|
||||
|
||||
void setViewDistance(float distance, bool delay = false);
|
||||
|
||||
float getTerrainHeightAt(const osg::Vec3f& pos);
|
||||
|
||||
|
|
|
@ -186,6 +186,19 @@
|
|||
-- @function [parent=#camera] setFieldOfView
|
||||
-- @param #number fov Field of view vertical angle in radians
|
||||
|
||||
--- Return base view distance.
|
||||
-- @function [parent=#camera] getBaseViewDistance
|
||||
-- @return #number
|
||||
|
||||
--- Return current view distance.
|
||||
-- @function [parent=#camera] getViewDistance
|
||||
-- @return #number
|
||||
|
||||
--- Set view distance.
|
||||
--- Takes effect on the next frame.
|
||||
-- @function [parent=#camera] setViewDistance
|
||||
-- @param #number distance View distance in game units
|
||||
|
||||
--- Get world to local transform for the camera.
|
||||
-- @function [parent=#camera] getViewTransform
|
||||
-- @return openmw.util#Transform
|
||||
|
|
Loading…
Reference in a new issue