Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 32 additions & 21 deletions builder/builder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@
#include <editor/pluginmanager.h>
#include <editor/editorsettings.h>
#include <editor/assetmanager.h>
#include <editor/codebuilder.h>
#include <editor/nativecodebuilder.h>

#include <minizip/zip.h>

#include <QCoreApplication>

Builder::Builder() {
connect(AssetManager::instance(), &AssetManager::importFinished, this, &Builder::onImportFinished, Qt::QueuedConnection);
connect(AssetManager::instance(), &AssetManager::buildSuccessful, this, &Builder::onBuildSuccessful, Qt::QueuedConnection);
}

void Builder::setPlatform(const TString &platform) {
Expand All @@ -30,7 +31,7 @@ void Builder::setPlatform(const TString &platform) {
project->setCurrentPlatform(m_platformsToBuild.top());
m_platformsToBuild.pop();

CodeBuilder *builder = project->currentBuilder();
NativeCodeBuilder *builder = project->currentBuilder();
if(builder) {
builder->convertFile(nullptr);
}
Expand All @@ -39,23 +40,15 @@ void Builder::setPlatform(const TString &platform) {
}
}

void Builder::package(const TString &target) {
Url info(target);
TString pak = info.absoluteDir();
#if defined(Q_OS_MAC)
pak = target;
if(ProjectSettings::instance()->currentPlatformName() == "desktop") {
pak += "/Contents/MacOS";
}
#endif
pak += "/base.pak";
bool Builder::package(const TString &target) {
TString pak = target + "/base.pak";

aInfo() << "Packaging Assets to:" << pak;
aInfo() << "Packaging Assets to:" << pak << target;

zipFile zf = zipOpen(pak.data(), 0);
if(!zf) {
aError() << "Can't open package.";
return;
return false;
}

StringList list(File::list(ProjectSettings::instance()->importPath()));
Expand All @@ -70,7 +63,7 @@ void Builder::package(const TString &target) {
if(!inFile.open(File::ReadOnly)) {
zipClose(zf, nullptr);
aError() << "Can't open input file.";
return;
return false;
}

zip_fileinfo zi = {0};
Expand All @@ -85,17 +78,34 @@ void Builder::package(const TString &target) {
}

zipClose(zf, nullptr);

aInfo() << "Packaging Done.";
return true;
}

void Builder::onImportFinished() {
ProjectSettings *project = ProjectSettings::instance();
TString platform = project->currentPlatformName();
TString targetPath = project->targetPath() + "/" + platform;

NativeCodeBuilder *builder = project->currentBuilder();

if(builder) {
if(builder->packagingMode() == NativeCodeBuilder::Before) {
package(project->cachePath() + "/" + project->currentPlatformName());
}

builder->buildProject();
}
}

void Builder::onBuildSuccessful() {
ProjectSettings *project = ProjectSettings::instance();
TString targetPath = project->targetPath() + "/" + project->currentPlatformName();

if(!File::exists(targetPath) && !File::mkPath(targetPath)) {
aDebug() << "Unable to create build directory at:" << targetPath;
}

// Clean install dir
for(auto &it : File::list(targetPath)) {
File::remove(it);
}
Expand All @@ -108,10 +118,11 @@ void Builder::onImportFinished() {
if(result) {
aInfo() << "New build copied to:" << targetPath;

if(!project->currentBuilder()->isBundle(platform)) {
package(targetPath + "/" + project->projectName());

aInfo() << "Packaging Done.";
// Package after
NativeCodeBuilder *builder = project->currentBuilder();
if(builder && builder->packagingMode() == NativeCodeBuilder::After) {
// Package right to install dir
package(targetPath);
}

if(!m_platformsToBuild.empty()) {
Expand Down
3 changes: 2 additions & 1 deletion builder/builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@ class Builder : public QObject {

void setPlatform(const TString &platform);

void package(const TString &target);
bool package(const TString &target);

public slots:
void onImportFinished();
void onBuildSuccessful();

private:
std::stack<TString> m_platformsToBuild;
Expand Down
2 changes: 1 addition & 1 deletion builder/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ int main(int argc, char *argv[]) {
ProjectSettings::instance()->loadSettings();
ProjectSettings::instance()->loadPlatforms();

if(!PluginManager::instance()->rescanProject(ProjectSettings::instance()->pluginsPath().data())) {
if(!PluginManager::instance()->rescanProject(ProjectSettings::instance()->pluginsPath())) {
aWarning() << "Not all plugins were loaded.";
}
PluginManager::instance()->initSystems();
Expand Down
10 changes: 5 additions & 5 deletions config.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ static const char *gIndex("index");
static const char *gRhi("rhi");

#if defined(Q_OS_WIN)
static const char *gShared("dll");
static const char *gShared(".dll");
static const char *gPrefix("");
static const char *gApplication("exe");
static const char *gApplication(".exe");
#elif defined(Q_OS_MAC)
static const char *gShared("dylib");
static const char *gShared(".dylib");
static const char *gPrefix("lib");
static const char *gApplication("app");
static const char *gApplication(".app");
#elif defined(Q_OS_UNIX)
static const char *gShared("so");
static const char *gShared(".so");
static const char *gPrefix("lib");
static const char *gApplication("");
#endif
Expand Down
12 changes: 10 additions & 2 deletions engine/engine.qbs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ Project {
"../thirdparty/freetype/include",
"../thirdparty/assimp/include",
"../thirdparty/pugixml/src",
"../thirdparty/metal/metal-cpp",
"../thirdparty/metal/metal-cpp-extensions",
"includes/components",
"includes/resources",
"includes/adapters",
Expand Down Expand Up @@ -150,18 +152,24 @@ Project {
cpp.separateDebugInformation: qbs.buildVariant === "release"

Properties {
condition: engine.desktop
condition: qbs.targetOS.contains("windows") || (qbs.targetOS.contains("linux") && !qbs.targetOS.contains("android"))
files: outer.concat(["src/adapters/platformadaptor.cpp", "src/adapters/desktopadaptor.cpp"])
}

Properties {
condition: qbs.targetOS.contains("android")
files: outer.concat(["src/adapters/mobileadaptor.cpp"])
files: outer.concat(["src/adapters/platformadaptor.cpp", "src/adapters/mobileadaptor.cpp"])
cpp.defines: ["THUNDER_MOBILE"]
Android.ndk.appStl: engine.ANDROID_STL
Android.ndk.platform: engine.ANDROID
}

Properties {
condition: qbs.targetOS.contains("darwin") && !(qbs.targetOS.contains("ios") || qbs.targetOS.contains("tvos"))
files: outer.concat(["src/adapters/platformadaptor.cpp", "src/adapters/mobileadaptor.cpp", "src/adapters/appleplatform.mm"])
cpp.defines: ["THUNDER_MOBILE", "TARGET_OS_OSX"]
}

Properties {
condition: qbs.targetOS.contains("ios")
files: outer.concat(["src/adapters/platformadaptor.cpp", "src/adapters/mobileadaptor.cpp", "src/adapters/appleplatform.mm"])
Expand Down
12 changes: 5 additions & 7 deletions engine/includes/adapters/desktopadaptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,19 @@ struct GLFWmonitor;

class DesktopAdaptor : public PlatformAdaptor {
public:
DesktopAdaptor(const TString &rhi);
DesktopAdaptor();

virtual ~DesktopAdaptor() {}

bool init() override;

void update() override;

bool start() override;

void stop() override;
void update() override;

void destroy() override;
void loop() override;

bool isValid() override;
void destroy() override;

bool key(Input::KeyCode code) const override;
bool keyPressed(Input::KeyCode code) const override;
Expand Down Expand Up @@ -76,7 +74,7 @@ class DesktopAdaptor : public PlatformAdaptor {
GLFWwindow *m_pWindow;
GLFWmonitor *m_pMonitor;

TString m_rhi;
bool m_noOpenGL;

static Vector4 s_mousePosition;
static Vector4 s_oldMousePosition;
Expand Down
10 changes: 6 additions & 4 deletions engine/includes/adapters/handlers/defaultfilehandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ class DefaultFileHandler : public FileHandler {
try {
for(const auto &entry : std::filesystem::recursive_directory_iterator(path)) {
list.push_back(TString(entry.path().string()).replace('\\', '/'));
if(entry.is_directory()) {
listFilesRecursive(list, entry);
}
}
} catch (const std::filesystem::filesystem_error &ex) {
aError() << "Error:" << ex.what();
Expand All @@ -48,7 +45,12 @@ class DefaultFileHandler : public FileHandler {
}

bool remove(const char *path) override {
return std::filesystem::remove(path);
try {
return std::filesystem::remove(path);
} catch (const std::filesystem::filesystem_error &) {
return false;
}
return true;
}

bool rename(const char *origin, const char *target) override {
Expand Down
4 changes: 0 additions & 4 deletions engine/includes/adapters/mobileadaptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,8 @@ class MobileAdaptor : public PlatformAdaptor {

bool start() override;

void stop() override;

void destroy() override;

bool isValid() override;

TString locationLocalDir() const override;

uint32_t screenWidth() const override;
Expand Down
5 changes: 1 addition & 4 deletions engine/includes/adapters/platformadaptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#define PLATFORMADAPTER_H

#include <cstdint>
#include <string>

#include <amath.h>

Expand All @@ -20,12 +19,10 @@ class ENGINE_EXPORT PlatformAdaptor {

virtual bool start() = 0;

virtual void stop() = 0;
virtual void loop();

virtual void destroy() = 0;

virtual bool isValid() = 0;

virtual uint32_t screenWidth() const = 0;

virtual uint32_t screenHeight() const = 0;
Expand Down
4 changes: 2 additions & 2 deletions engine/includes/editor/assetmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class ENGINE_EXPORT AssetManager : public QObject {
public slots:
void reimport();

void onBuildSuccessful(CodeBuilder *builder);
void onBuildSuccessful(bool flag, CodeBuilder *builder);

void checkImportSettings(AssetConverterSettings *settings);

Expand All @@ -88,7 +88,7 @@ public slots:

void prefabCreated(uint32_t uuid, uint32_t clone);

void buildSuccessful();
void buildSuccessful(bool flag);

protected slots:
void onPerform();
Expand Down
5 changes: 3 additions & 2 deletions engine/includes/editor/codebuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class ENGINE_EXPORT CodeBuilder : public AssetConverter {

virtual void rescanSources(const TString &path);
virtual bool isEmpty() const;
virtual bool isBundle(const TString &platform) const;

void makeOutdated();
bool isOutdated() const;
Expand All @@ -31,7 +30,7 @@ class ENGINE_EXPORT CodeBuilder : public AssetConverter {

ReturnCode convertFile(AssetConverterSettings *) override;

void buildSuccessful();
void buildSuccessful(bool flag);

private:
AssetConverterSettings *createSettings() override;
Expand All @@ -43,6 +42,8 @@ class ENGINE_EXPORT CodeBuilder : public AssetConverter {

void updateTemplate(const TString &src, const TString &dst);

void copyTempalte(const TString &src, const TString &dst);

protected:
std::map<TString, TString> m_values;

Expand Down
4 changes: 0 additions & 4 deletions engine/includes/editor/editorplatform.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,8 @@ class ENGINE_EXPORT EditorPlatform : public PlatformAdaptor {

bool start() override { return true; }

void stop() override {}

void destroy() override {}

bool isValid() override { return true; }

bool key(Input::KeyCode) const override;
bool keyPressed(Input::KeyCode) const override;
bool keyReleased(Input::KeyCode) const override;
Expand Down
Loading
Loading