Changing engine to shared library
This commit is contained in:
@@ -10,10 +10,11 @@
|
||||
#include "MeshAsset.h"
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
extern AssetRegistry* instance;
|
||||
AssetRegistry* instance = new AssetRegistry();
|
||||
|
||||
AssetRegistry::~AssetRegistry()
|
||||
{
|
||||
@@ -96,6 +97,11 @@ AssetRegistry::AssetRegistry()
|
||||
{
|
||||
}
|
||||
|
||||
AssetRegistry* AssetRegistry::getInstance()
|
||||
{
|
||||
return instance;
|
||||
}
|
||||
|
||||
void AssetRegistry::loadRegistry()
|
||||
{
|
||||
get().loadRegistryInternal();
|
||||
|
||||
@@ -45,6 +45,7 @@ public:
|
||||
};
|
||||
AssetFolder* getOrCreateFolder(std::string foldername);
|
||||
AssetRegistry();
|
||||
static AssetRegistry* getInstance();
|
||||
private:
|
||||
static AssetRegistry& get();
|
||||
|
||||
|
||||
@@ -233,36 +233,38 @@ void ShapeBase::addCollider(Array<Vector> verts, Array<uint32> inds, Matrix4 mat
|
||||
|
||||
void ShapeBase::visualize() const
|
||||
{
|
||||
Array<DebugVertex> verts;
|
||||
for(uint32 i = 0; i < indices.size(); i+=3)
|
||||
{
|
||||
gDebugVertices.add(DebugVertex{
|
||||
verts.add(DebugVertex{
|
||||
.position = Vector(vertices[indices[i+0]]),
|
||||
.color = Vector(1, 0, 0),
|
||||
});
|
||||
|
||||
gDebugVertices.add(DebugVertex{
|
||||
verts.add(DebugVertex{
|
||||
.position = Vector(vertices[indices[i+1]]),
|
||||
.color = Vector(1, 0, 0),
|
||||
});
|
||||
|
||||
gDebugVertices.add(DebugVertex{
|
||||
verts.add(DebugVertex{
|
||||
.position = Vector(vertices[indices[i+1]]),
|
||||
.color = Vector(1, 0, 0),
|
||||
});
|
||||
|
||||
gDebugVertices.add(DebugVertex{
|
||||
verts.add(DebugVertex{
|
||||
.position = Vector(vertices[indices[i+2]]),
|
||||
.color = Vector(1, 0, 0),
|
||||
});
|
||||
|
||||
gDebugVertices.add(DebugVertex{
|
||||
verts.add(DebugVertex{
|
||||
.position = Vector(vertices[indices[i+2]]),
|
||||
.color = Vector(1, 0, 0),
|
||||
});
|
||||
|
||||
gDebugVertices.add(DebugVertex{
|
||||
verts.add(DebugVertex{
|
||||
.position = Vector(vertices[indices[i+0]]),
|
||||
.color = Vector(1, 0, 0),
|
||||
});
|
||||
}
|
||||
addDebugVertices(std::move(verts));
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ struct DebugVertex
|
||||
Vector position;
|
||||
Vector color;
|
||||
};
|
||||
extern Array<DebugVertex> gDebugVertices;
|
||||
void addDebugVertex(DebugVertex vert);
|
||||
void addDebugVertices(Array<DebugVertex> vert);
|
||||
} // namespace Seele
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
using namespace Seele;
|
||||
using namespace Seele::Gfx;
|
||||
|
||||
uint32 Gfx::currentFrameIndex = 0;
|
||||
double Gfx::currentFrameDelta = 0;
|
||||
|
||||
FormatCompatibilityInfo Gfx::getFormatInfo(SeFormat format)
|
||||
{
|
||||
|
||||
@@ -166,8 +166,7 @@ namespace Gfx
|
||||
static constexpr bool useAsyncCompute = true;
|
||||
static constexpr bool waitIdleOnSubmit = true;
|
||||
static constexpr uint32 numFramesBuffered = 8;
|
||||
extern uint32 currentFrameIndex;
|
||||
extern double currentFrameDelta;
|
||||
double getCurrentFrameDelta();
|
||||
|
||||
enum class MaterialShadingModel
|
||||
{
|
||||
|
||||
@@ -3,7 +3,17 @@
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
Array<DebugVertex> Seele::gDebugVertices;
|
||||
Array<DebugVertex> gDebugVertices;
|
||||
|
||||
void Seele::addDebugVertex(DebugVertex vert)
|
||||
{
|
||||
gDebugVertices.add(vert);
|
||||
}
|
||||
|
||||
void Seele::addDebugVertices(Array<DebugVertex> verts)
|
||||
{
|
||||
gDebugVertices.addAll(verts);
|
||||
}
|
||||
|
||||
DebugPass::DebugPass(Gfx::PGraphics graphics)
|
||||
: RenderPass(graphics)
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
using namespace Seele;
|
||||
using namespace Seele::Vulkan;
|
||||
|
||||
double currentFrameDelta = 0;
|
||||
double Gfx::getCurrentFrameDelta()
|
||||
{
|
||||
return currentFrameDelta;
|
||||
}
|
||||
|
||||
void glfwKeyCallback(GLFWwindow* handle, int key, int, int action, int modifier)
|
||||
{
|
||||
Window* window = (Window*)glfwGetWindowUserPointer(handle);
|
||||
@@ -209,6 +215,8 @@ void Window::recreateSwapchain(const WindowCreateInfo &windowInfo)
|
||||
createSwapchain();
|
||||
}
|
||||
|
||||
static uint32_t currentFrameIndex = 0;
|
||||
|
||||
void Window::present()
|
||||
{
|
||||
backBufferImages[currentImageIndex]->changeLayout(Gfx::SE_IMAGE_LAYOUT_PRESENT_SRC_KHR);
|
||||
@@ -230,11 +238,11 @@ void Window::present()
|
||||
{
|
||||
presentResult = vkQueuePresentKHR(graphics->getGraphicsCommands()->getQueue()->getHandle(), &info);
|
||||
}
|
||||
Gfx::currentFrameIndex = (Gfx::currentFrameIndex + 1)%Gfx::numFramesBuffered;
|
||||
currentFrameIndex = (currentFrameIndex + 1) % Gfx::numFramesBuffered;
|
||||
static double lastFrameTime = 0.f;
|
||||
double currentTime = glfwGetTime();
|
||||
double currentDelta = currentTime - lastFrameTime;
|
||||
Gfx::currentFrameDelta = currentDelta;
|
||||
currentFrameDelta = currentDelta;
|
||||
lastFrameTime = currentTime;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
#include "MinimalEngine.h"
|
||||
#include <mutex>
|
||||
|
||||
std::map<void *, void *> registeredObjects;
|
||||
std::mutex registeredObjectsLock;
|
||||
std::map<void*, void*>& getRegisteredObjects()
|
||||
{
|
||||
static std::map<void*, void*> map;
|
||||
return map;
|
||||
}
|
||||
|
||||
std::mutex& getRegisteredObjectLock()
|
||||
{
|
||||
static std::mutex lock;
|
||||
return lock;
|
||||
}
|
||||
|
||||
@@ -23,8 +23,9 @@
|
||||
typedef WeakPtr<x> W##x; \
|
||||
}
|
||||
|
||||
extern std::map<void *, void *> registeredObjects;
|
||||
extern std::mutex registeredObjectsLock;
|
||||
std::map<void*, void*>& getRegisteredObjects();
|
||||
std::mutex& getRegisteredObjectLock();
|
||||
|
||||
namespace Seele
|
||||
{
|
||||
template <typename T, typename Deleter>
|
||||
@@ -47,8 +48,8 @@ public:
|
||||
~RefObject()
|
||||
{
|
||||
{
|
||||
std::scoped_lock lock(registeredObjectsLock);
|
||||
registeredObjects.erase(handle);
|
||||
std::scoped_lock lock(getRegisteredObjectLock());
|
||||
getRegisteredObjects().erase(handle);
|
||||
}
|
||||
// #pragma warning( disable: 4150)
|
||||
deleter(handle);
|
||||
@@ -112,14 +113,14 @@ public:
|
||||
}
|
||||
constexpr RefPtr(T *ptr, Deleter deleter = Deleter())
|
||||
{
|
||||
std::scoped_lock l(registeredObjectsLock);
|
||||
auto registeredObj = registeredObjects.find(ptr);
|
||||
std::scoped_lock l(getRegisteredObjectLock());
|
||||
auto registeredObj = getRegisteredObjects().find(ptr);
|
||||
// get here for thread safetly
|
||||
auto registeredEnd = registeredObjects.end();
|
||||
auto registeredEnd = getRegisteredObjects().end();
|
||||
if (registeredObj == registeredEnd)
|
||||
{
|
||||
object = new RefObject<T, Deleter>(ptr, std::move(deleter));
|
||||
registeredObjects[ptr] = object;
|
||||
getRegisteredObjects()[ptr] = object;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -49,14 +49,16 @@ void BVH::colliderCallback(entt::registry& registry, entt::entity entity)
|
||||
|
||||
void BVH::visualize()
|
||||
{
|
||||
for(const auto& node : staticNodes)
|
||||
Array<DebugVertex> verts;
|
||||
for (const auto& node : staticNodes)
|
||||
{
|
||||
node.box.visualize(gDebugVertices);
|
||||
node.box.visualize(verts);
|
||||
}
|
||||
for(const auto& node : dynamicNodes)
|
||||
for (const auto& node : dynamicNodes)
|
||||
{
|
||||
node.box.visualize(gDebugVertices);
|
||||
node.box.visualize(verts);
|
||||
}
|
||||
addDebugVertices(verts);
|
||||
}
|
||||
|
||||
void BVH::traverseStaticTree(const AABB& aabb, entt::entity source, int32 nodeIndex, Array<Pair<entt::entity, entt::entity>>& overlaps)
|
||||
|
||||
@@ -284,11 +284,11 @@ void PhysicsSystem::calculateContacts(entt::entity id1, const ShapeBase& shape1,
|
||||
const Vector v1 = point2 - point1;
|
||||
const Vector v2 = point3 - point1;
|
||||
const Vector faceNormal = glm::normalize(glm::cross(v1, v2));
|
||||
Seele::gDebugVertices.add(DebugVertex{
|
||||
addDebugVertex(DebugVertex{
|
||||
.position = (point1 + point2 + point3) / 3.f,
|
||||
.color = Vector(1, 0, 0)
|
||||
});
|
||||
Seele::gDebugVertices.add(DebugVertex{
|
||||
addDebugVertex(DebugVertex{
|
||||
.position = faceNormal + (point1 + point2 + point3) / 3.f,
|
||||
.color = Vector(1, 0, 0)
|
||||
});
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
AssetRegistry* instance = new AssetRegistry();
|
||||
|
||||
GameView::GameView(Gfx::PGraphics graphics, PWindow window, const ViewportCreateInfo &createInfo, std::string dllPath)
|
||||
: View(graphics, window, createInfo, "Game")
|
||||
, gameInterface(dllPath)
|
||||
@@ -73,7 +71,7 @@ void GameView::render()
|
||||
void GameView::reloadGame()
|
||||
{
|
||||
scene = new Scene(graphics);
|
||||
gameInterface.reload(instance);
|
||||
gameInterface.reload(AssetRegistry::getInstance());
|
||||
|
||||
systemGraph = new SystemGraph();
|
||||
gameInterface.getGame()->setupScene(scene, systemGraph);
|
||||
|
||||
Reference in New Issue
Block a user