Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/opensb/interface/windowconfig/graphicsmenu.config.patch.lua2
-rw-r--r--source/application/StarRenderer.hpp2
-rw-r--r--source/application/StarRenderer_opengl.cpp8
-rw-r--r--source/application/StarRenderer_opengl.hpp4
-rw-r--r--source/base/StarAssets.cpp17
-rw-r--r--source/base/StarAssets.hpp2
6 files changed, 20 insertions, 15 deletions
diff --git a/assets/opensb/interface/windowconfig/graphicsmenu.config.patch.lua b/assets/opensb/interface/windowconfig/graphicsmenu.config.patch.lua
index ab154a4..7e9081a 100644
--- a/assets/opensb/interface/windowconfig/graphicsmenu.config.patch.lua
+++ b/assets/opensb/interface/windowconfig/graphicsmenu.config.patch.lua
@@ -17,7 +17,6 @@ end
function patch(config)
local layout = config.paneLayout
layout.panefeature.positionLocked = false
-
-- Create the camera pan speed widgets
shift(clone(layout, "zoomLabel", "cameraSpeedLabel"), 100).value = "CAMERA PAN SPEED"
shift(clone(layout, "zoomSlider", "cameraSpeedSlider"), 100)
@@ -26,7 +25,6 @@ function patch(config)
config.cameraSpeedList = jarray()
for i = 1, 50 do config.cameraSpeedList[i] = i / 10 end
for i = 1, 32 do config.zoomList[i] = i end
-
-- Create anti-aliasing toggle
shift(clone(layout, "multiTextureLabel", "antiAliasingLabel"), 98).value = "SUPER-SAMPLED AA"
shift(clone(layout, "multiTextureCheckbox", "antiAliasingCheckbox"), 99)
diff --git a/source/application/StarRenderer.hpp b/source/application/StarRenderer.hpp
index a926df0..2a156f7 100644
--- a/source/application/StarRenderer.hpp
+++ b/source/application/StarRenderer.hpp
@@ -161,7 +161,7 @@ public:
virtual void render(RenderPrimitive primitive) = 0;
virtual void renderBuffer(RenderBufferPtr const& renderBuffer, Mat3F const& transformation = Mat3F::identity()) = 0;
- virtual void flush() = 0;
+ virtual void flush(Mat3F const& transformation = Mat3F::identity()) = 0;
};
}
diff --git a/source/application/StarRenderer_opengl.cpp b/source/application/StarRenderer_opengl.cpp
index c816049..d8b26e8 100644
--- a/source/application/StarRenderer_opengl.cpp
+++ b/source/application/StarRenderer_opengl.cpp
@@ -482,8 +482,8 @@ void OpenGlRenderer::renderBuffer(RenderBufferPtr const& renderBuffer, Mat3F con
renderGlBuffer(*convert<GlRenderBuffer>(renderBuffer.get()), transformation);
}
-void OpenGlRenderer::flush() {
- flushImmediatePrimitives();
+void OpenGlRenderer::flush(Mat3F const& transformation) {
+ flushImmediatePrimitives(transformation);
}
void OpenGlRenderer::setScreenSize(Vec2U screenSize) {
@@ -889,13 +889,13 @@ void OpenGlRenderer::uploadTextureImage(PixelFormat pixelFormat, Vec2U size, uin
glTexImage2D(GL_TEXTURE_2D, 0, internalFormat.value(format), size[0], size[1], 0, format, type, data);
}
-void OpenGlRenderer::flushImmediatePrimitives() {
+void OpenGlRenderer::flushImmediatePrimitives(Mat3F const& transformation) {
if (m_immediatePrimitives.empty())
return;
m_immediateRenderBuffer->set(m_immediatePrimitives);
m_immediatePrimitives.resize(0);
- renderGlBuffer(*m_immediateRenderBuffer, Mat3F::identity());
+ renderGlBuffer(*m_immediateRenderBuffer, transformation);
}
auto OpenGlRenderer::createGlTexture(ImageView const& image, TextureAddressing addressing, TextureFiltering filtering)
diff --git a/source/application/StarRenderer_opengl.hpp b/source/application/StarRenderer_opengl.hpp
index 563ac96..61c67c9 100644
--- a/source/application/StarRenderer_opengl.hpp
+++ b/source/application/StarRenderer_opengl.hpp
@@ -42,7 +42,7 @@ public:
void render(RenderPrimitive primitive) override;
void renderBuffer(RenderBufferPtr const& renderBuffer, Mat3F const& transformation) override;
- void flush() override;
+ void flush(Mat3F const& transformation) override;
void setScreenSize(Vec2U screenSize);
@@ -205,7 +205,7 @@ private:
shared_ptr<GlRenderBuffer> createGlRenderBuffer();
- void flushImmediatePrimitives();
+ void flushImmediatePrimitives(Mat3F const& transformation = Mat3F::identity());
void renderGlBuffer(GlRenderBuffer const& renderBuffer, Mat3F const& transformation);
diff --git a/source/base/StarAssets.cpp b/source/base/StarAssets.cpp
index 7c1a67b..b334b31 100644
--- a/source/base/StarAssets.cpp
+++ b/source/base/StarAssets.cpp
@@ -118,8 +118,8 @@ Assets::Assets(Settings settings, StringList assetSources) {
table.set(p.first, luaEngine->createWrappedFunction(p.second));
luaEngine->setGlobal(name, table);
};
- pushGlobalContext("sb", LuaBindings::makeUtilityCallbacks());
- auto decorateLuaContext = [this](LuaContext& context, MemoryAssetSourcePtr newFiles) {
+
+ auto makeBaseAssetCallbacks = [this]() {
LuaCallbacks callbacks;
callbacks.registerCallbackWithSignature<StringSet, String>("byExtension", bind(&Assets::scanExtension, this, _1));
callbacks.registerCallbackWithSignature<Json, String>("json", bind(&Assets::json, this, _1));
@@ -132,7 +132,7 @@ Assets::Assets(Settings settings, StringList assetSources) {
callbacks.registerCallback("image", [this](String const& path) -> Image {
auto assetImage = image(path);
if (assetImage->bytesPerPixel() == 3)
- return assetImage->convert(PixelFormat::RGBA32);
+ return assetImage->convert(PixelFormat::RGBA32);
else
return *assetImage;
});
@@ -140,7 +140,14 @@ Assets::Assets(Settings settings, StringList assetSources) {
callbacks.registerCallback("scan", [this](Maybe<String> const& a, Maybe<String> const& b) -> StringList {
return b ? scan(a.value(), *b) : scan(a.value());
});
+ return callbacks;
+ };
+
+ pushGlobalContext("sb", LuaBindings::makeUtilityCallbacks());
+ pushGlobalContext("assets", makeBaseAssetCallbacks());
+ auto decorateLuaContext = [&](LuaContext& context, MemoryAssetSourcePtr newFiles) {
+ auto callbacks = makeBaseAssetCallbacks();
if (newFiles) {
callbacks.registerCallback("add", [&newFiles](LuaEngine& engine, String const& path, LuaValue const& data) {
ByteArray bytes;
@@ -872,7 +879,7 @@ ImageConstPtr Assets::readImage(String const& path) const {
image = make_shared<Image>(Image::readPng(p->source->open(p->sourceName)));
if (!p->patchSources.empty()) {
- MutexLocker luaLocker(m_luaMutex);
+ RecursiveMutexLocker luaLocker(m_luaMutex);
LuaEngine* luaEngine = as<LuaEngine>(m_luaEngine.get());
LuaValue result = luaEngine->createUserData(*image);
luaLocker.unlock();
@@ -953,7 +960,7 @@ Json Assets::readJson(String const& path) const {
auto& patchSource = pair.second;
auto patchStream = patchSource->read(patchPath);
if (patchPath.endsWith(".lua")) {
- MutexLocker luaLocker(m_luaMutex);
+ RecursiveMutexLocker luaLocker(m_luaMutex);
// Kae: i don't like that lock. perhaps have a LuaEngine and patch context cache per worker thread later on?
LuaContextPtr& context = m_patchContexts[patchPath];
if (!context) {
diff --git a/source/base/StarAssets.hpp b/source/base/StarAssets.hpp
index 952e024..54cbb2f 100644
--- a/source/base/StarAssets.hpp
+++ b/source/base/StarAssets.hpp
@@ -320,7 +320,7 @@ private:
// Lua
RefPtr<RefCounter> m_luaEngine; // dumb but to avoid including Lua.hpp in here...
mutable StringMap<LuaContextPtr> m_patchContexts;
- mutable Mutex m_luaMutex;
+ mutable RecursiveMutex m_luaMutex;
// Paths of all used asset sources, in load order.
StringList m_assetSources;