Skip to content

Commit

Permalink
Refactor: Split libgloom and GloomEd out of the Gloom test app
Browse files Browse the repository at this point in the history
libgloom is a standalone rendering/audio engine. GloomEd is a Qt
application for setting up Gloom maps.

Todo: GloomEd needs to launch the Gloom app after exporting a package.
  • Loading branch information
skyjake committed Sep 1, 2019
1 parent d6fe03c commit 6180a8a
Show file tree
Hide file tree
Showing 222 changed files with 556 additions and 295 deletions.
1 change: 1 addition & 0 deletions doomsday/apps/CMakeLists.txt
Expand Up @@ -10,5 +10,6 @@ if (DE_ENABLE_SERVER AND NOT IOS)
endif ()
if (DE_ENABLE_GUI)
add_subdirectory (gloom)
add_subdirectory (gloomed)
add_subdirectory (client)
endif ()
99 changes: 16 additions & 83 deletions doomsday/apps/gloom/CMakeLists.txt
@@ -1,86 +1,20 @@
cmake_minimum_required (VERSION 3.1)
project (GLOOM)
project (DE_GLOOM)

include (../../cmake/Config.cmake)
include (QtConfig)

set (CMAKE_AUTOMOC ON)
set (CMAKE_AUTORCC ON)

find_package (Qt5 COMPONENTS Gui Widgets)
find_package (FMOD)
find_package (Json)
find_Package (SDL2Libs)

list (APPEND DE_REQUIRED_PACKAGES
net.dengine.stdlib
net.dengine.stdlib.gui
net.dengine.base
net.dengine.gloom
)
deng_add_package (net.dengine.gloom)
deng_add_package (net.dengine.gloom.test)

set (SOURCES
gloom/audio/audiosystem.cpp
gloom/audio/audiosystem.h
gloom/identity.h
gloom/geo/geomath.cpp
gloom/geo/geomath.h
gloom/geo/polygon.cpp
gloom/geo/polygon.h
gloom/gloomwidget.cpp
gloom/gloomwidget.h
gloom/gloomworld.cpp
gloom/gloomworld.h
gloom/render/bloom.cpp
gloom/render/bloom.h
gloom/render/context.cpp
gloom/render/context.h
gloom/render/databuffer.h
gloom/render/defs.h
gloom/render/entityrender.cpp
gloom/render/entityrender.h
gloom/render/gbuffer.cpp
gloom/render/gbuffer.h
gloom/render/icamera.h
gloom/render/light.cpp
gloom/render/light.h
gloom/render/lightrender.cpp
gloom/render/lightrender.h
gloom/render/mapbuild.cpp
gloom/render/mapbuild.h
gloom/render/maprender.cpp
gloom/render/maprender.h
gloom/render/materiallib.cpp
gloom/render/materiallib.h
gloom/render/render.cpp
gloom/render/render.h
gloom/render/screenquad.cpp
gloom/render/screenquad.h
gloom/render/shadow.cpp
gloom/render/shadow.h
gloom/render/skybox.cpp
gloom/render/skybox.h
gloom/render/ssao.cpp
gloom/render/ssao.h
gloom/render/tonemap.cpp
gloom/render/tonemap.h
gloom/render/view.cpp
gloom/render/view.h
gloom/world/entity.cpp
gloom/world/entity.h
gloom/world/entitymap.cpp
gloom/world/entitymap.h
gloom/world/environment.cpp
gloom/world/environment.h
gloom/world/map.cpp
gloom/world/map.h
gloom/world/mapimport.cpp
gloom/world/mapimport.h
gloom/world/sectorpolygonizer.cpp
gloom/world/sectorpolygonizer.h
gloom/world/user.cpp
gloom/world/user.h
gloom/world/world.cpp
gloom/world/world.h
src/approotwidget.cpp
src/approotwidget.h
src/appwindowsystem.cpp
Expand All @@ -89,14 +23,11 @@ set (SOURCES
src/globalshortcuts.h
src/gloomapp.cpp
src/gloomapp.h
src/editor.cpp
src/editor.h
src/editorwindow.cpp
src/editorwindow.h
src/gloomwidget.cpp
src/gloomwidget.h
src/main.cpp
src/mainwindow.cpp
src/mainwindow.h
src/utils.h
)

# Deploy the FMOD library.
Expand All @@ -109,25 +40,27 @@ if (APPLE)
endif ()

deng_add_application (gloom ${SOURCES} ${HEADERS})

target_include_directories (gloom PRIVATE ${CMAKE_CURRENT_LIST_DIR} ${DE_EXTERNAL_SOURCE_DIR}/gpc)
deng_link_libraries (gloom PRIVATE DengAppfw DengDoomsday fmodex json)
deng_target_link_qt (gloom PRIVATE Widgets)
deng_link_libraries (gloom PRIVATE DengGloom SDL2)

if (APPLE)
set_target_properties (gloom PROPERTIES
OUTPUT_NAME gloom
OUTPUT_NAME Gloom
MACOSX_BUNDLE_INFO_PLIST ${DE_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
)
set (MACOSX_BUNDLE_BUNDLE_EXECUTABLE "Gloom")
deng_install_bundle_deps (gloom
fmodex
CPlus::cplus
Deng::libcore
Deng::libgui
Deng::libappfw
Deng::libshell
Deng::liblegacy
Deng::libdoomsday
CPlus::cplus
fmodex
Deng::libgloom
)
deng_install_deployqt (gloom)
endif ()

if (WIN32)
set_property (TARGET gloom PROPERTY OUTPUT_NAME "Gloom")
endif ()
2 changes: 0 additions & 2 deletions doomsday/apps/gloom/net.dengine.gloom.pack/shaders.dei

This file was deleted.

@@ -0,0 +1 @@
@include <shaders/app.dei>
2 changes: 1 addition & 1 deletion doomsday/apps/gloom/src/appwindowsystem.cpp
Expand Up @@ -26,7 +26,7 @@ DE_PIMPL(AppWindowSystem)
{
Impl(Public *i) : Base(i)
{
self().style().load(App::packageLoader().load("net.dengine.gloom.defaultstyle"));
self().style().load(App::packageLoader().load("net.dengine.gloom.test.defaultstyle"));
}
};

Expand Down
38 changes: 15 additions & 23 deletions doomsday/apps/gloom/src/gloomapp.cpp
Expand Up @@ -17,28 +17,26 @@
*/

#include "gloomapp.h"
#include "editorwindow.h"
#include "appwindowsystem.h"
#include "utils.h"
#include "../gloom/gloomworld.h"
#include "../gloom/gloomwidget.h"
#include "../gloom/world/user.h"
#include "gloomwidget.h"

#include <gloom/gloomworld.h>
#include <gloom/world/user.h>

#include <doomsday/DataBundle>

#include <de/DisplayMode>
#include <de/FileSystem>
#include <de/PackageLoader>
#include <de/ScriptSystem>
#include <doomsday/DataBundle>

#include <QApplication>

using namespace de;
using namespace gloom;

DE_PIMPL(GloomApp)
{
ImageBank images;
std::unique_ptr<EditorWindow> editWin;
// std::unique_ptr<EditorWindow> editWin;
std::unique_ptr<AppWindowSystem> winSys;
std::unique_ptr<AudioSystem> audioSys;
std::unique_ptr<GloomWorld> world;
Expand Down Expand Up @@ -83,20 +81,15 @@ GloomApp::GloomApp(const StringList &args)
{
setMetadata("Deng Team", "dengine.net", "Gloom Test", "1.0");
setUnixHomeFolderName(".gloom");

const auto &amd = metadata();
qApp->setApplicationName (convert(amd.gets(APP_NAME)));
qApp->setApplicationVersion(convert(amd.gets(APP_VERSION)));
qApp->setOrganizationName (convert(amd.gets(ORG_NAME)));
qApp->setOrganizationDomain(convert(amd.gets(ORG_DOMAIN)));
}

void GloomApp::initialize()
{
using gloom::Map;

d->world.reset(new GloomWorld);
d->world.reset(new GloomWorld(shaders(), images()));

#if 0
// Set up the editor.
{
d->editWin.reset(new EditorWindow);
Expand Down Expand Up @@ -136,8 +129,10 @@ void GloomApp::initialize()
}
});
}
#endif

addInitPackage("net.dengine.gloom");
addInitPackage("net.dengine.gloom.test");
initSubsystems(App::DisablePlugins);

// Create subsystems.
Expand All @@ -153,7 +148,7 @@ void GloomApp::initialize()

// Load resource banks.
{
const Package &base = App::packageLoader().package("net.dengine.gloom");
const Package &base = App::packageLoader().package("net.dengine.gloom.test");
d->images .addFromInfo(base.root().locate<File>("images.dei"));
waveforms().addFromInfo(base.root().locate<File>("audio.dei"));
}
Expand All @@ -165,17 +160,14 @@ void GloomApp::initialize()

scriptSystem().importModule("bootstrap");
win->show();

Loop::get().audienceForIteration() += [this]() { qApp->processEvents(); };
}

QDir GloomApp::userDir() const
NativePath GloomApp::userDir() const
{
const QDir home = QDir::home();
const QDir dir = home.filePath(convert(unixHomeFolderName()));
const auto dir = NativePath::homePath() / unixHomeFolderName();
if (!dir.exists())
{
home.mkdir(convert(unixHomeFolderName()));
NativePath::createDirectory(dir);
}
return dir;
}
Expand Down
9 changes: 3 additions & 6 deletions doomsday/apps/gloom/src/gloomapp.h
@@ -1,4 +1,4 @@
/** @file testapp.h Test application.
/** @file gloomapp.h Gloom test application.
*
* @authors Copyright (c) 2014-2018 Jaakko Keränen <jaakko.keranen@iki.fi>
*
Expand All @@ -21,20 +21,17 @@

#include <de/BaseGuiApp>
#include <de/ImageBank>
#include "gloom/audio/audiosystem.h"
#include <gloom/audio/audiosystem.h>
#include "appwindowsystem.h"

#include <QDir>
#include <QApplication>

class GloomApp : public de::BaseGuiApp
{
public:
GloomApp(const de::StringList &args);

void initialize();

QDir userDir() const;
de::NativePath userDir() const;

static GloomApp & app();
static AppWindowSystem & windowSystem();
Expand Down
Expand Up @@ -16,12 +16,12 @@
* http://www.gnu.org/licenses</small>
*/

#include "gloom/gloomwidget.h"
#include "gloom/audio/audiosystem.h"
#include "gloom/gloomworld.h"
#include "gloom/world/user.h"
#include "gloom/world/world.h"
#include "gloomwidget.h"

#include <gloom/audio/audiosystem.h>
#include <gloom/gloomworld.h>
#include <gloom/world/user.h>
#include <gloom/world/world.h>
#include <de/Drawable>
#include <de/GLBuffer>
#include <de/KeyEvent>
Expand Down Expand Up @@ -211,7 +211,7 @@ bool GloomWidget::handleEvent(Event const &event)

if (mouse.type() == Event::MouseWheel)
{
d->user.turn(Vec2f(mouse.wheel())/10.f);
d->user.turn(Vec2f(mouse.wheel()) / 10.f);
return true;
}

Expand All @@ -220,7 +220,7 @@ bool GloomWidget::handleEvent(Event const &event)
const Vec2i delta = mouse.pos() - d->lastMousePos;
d->lastMousePos = mouse.pos();

d->user.turn(Vec2f(delta)/7.f);
d->user.turn(Vec2f(delta) / 7.f);
}

switch (handleMouseClick(event, MouseEvent::Left))
Expand Down
File renamed without changes.
11 changes: 4 additions & 7 deletions doomsday/apps/gloom/src/main.cpp
Expand Up @@ -18,17 +18,13 @@

#include "gloomapp.h"
#include "mainwindow.h"
#include "utils.h"
#include <de/EscapeParser>
#include <QApplication>
#include <QMessageBox>
#include <QDebug>
#include <SDL2/SDL_messagebox.h>

using namespace de;

int main(int argc, char **argv)
{
QApplication qtApp(argc, argv);
GloomApp app(makeList(argc, argv));
try
{
Expand All @@ -39,8 +35,9 @@ int main(int argc, char **argv)
{
EscapeParser esc;
esc.parse(er.asText());
warning( "App init failed: %s", esc.plainText().c_str());
QMessageBox::critical(0, "Gloom", convert("App init failed:\n" + esc.plainText()));
warning("App init failed: %s", esc.plainText().c_str());
SDL_ShowSimpleMessageBox(
SDL_MESSAGEBOX_ERROR, "Gloom", "App init failed:\n" + esc.plainText(), nullptr);
return -1;
}

Expand Down
5 changes: 3 additions & 2 deletions doomsday/apps/gloom/src/mainwindow.cpp
Expand Up @@ -20,7 +20,7 @@
#include "gloomapp.h"
#include "approotwidget.h"
#include "globalshortcuts.h"
#include "../gloom/gloomwidget.h"
#include "gloomwidget.h"

#include <de/CommandLine>
#include <de/GLState>
Expand Down Expand Up @@ -134,7 +134,8 @@ DE_PIMPL(MainWindow)
void windowFocusChanged(GLWindow &, bool hasFocus)
{
auto &loop = Loop::get();
loop.setRate(hasFocus? 60 : 1);
loop.setRate(hasFocus ? 60 : 1);
self().eventHandler().trapMouse(hasFocus);
}
};

Expand Down

0 comments on commit 6180a8a

Please sign in to comment.