slight refactoring

This commit is contained in:
Hartmut Seichter 2020-03-02 19:35:34 +01:00
parent e01df69575
commit 47d28b4f1e
8 changed files with 79 additions and 73 deletions

View file

@ -6,7 +6,7 @@ add_subdirectory(system)
add_subdirectory(io)
#add_subdirectory(ui)
add_subdirectory(scripting)
add_subdirectory(binding)
add_subdirectory(visual)
add_subdirectory(geometry)

View file

@ -14,7 +14,7 @@ set(srcs
src/runtime_lua.cpp
)
add_library(pwscripting
add_library(pwbinding
STATIC
${hdrs}
${srcs}
@ -22,7 +22,7 @@ add_library(pwscripting
target_include_directories(
pwscripting
pwbinding
PRIVATE
${CMAKE_SOURCE_DIR}/src/deps/lua-5.3.5/src
${CMAKE_SOURCE_DIR}/src/deps/sol2-2.20.6
@ -30,7 +30,7 @@ target_include_directories(
include
)
target_link_libraries(pwscripting
target_link_libraries(pwbinding
lualib
pwcore
pwsystem

View file

@ -73,6 +73,7 @@ public:
void compute_normals();
void compute_bounds();
protected:
@ -90,10 +91,6 @@ protected:
// TODO add weights, tangents etc. pp.
private:
void compute_bounds();
};
}

View file

@ -15,7 +15,7 @@ void mesh::compute_normals()
vertex3array_t normals; normals.resize(_vertices.size());
// for indexed-faceset
for (auto i = 1; i < _indices.size()-1;i++)
for (size_t i = 1; i < _indices.size()-1;i++)
{
// left index and right index
auto il = (i - 1 + _indices.size()) % _indices.size();
@ -26,13 +26,12 @@ void mesh::compute_normals()
auto li = _indices[il];
auto ri = _indices[ir];
// calculate delta vectors
auto dL = vector3( _vertices[li] - _vertices[ci] );
auto dR = vector3( _vertices[ri] - _vertices[ci] );
// calculate edges between vertices
auto edgeLeft = vector3( _vertices[li] - _vertices[ci] );
auto edgeRight = vector3( _vertices[ri] - _vertices[ci] );
auto N = dR.cross(dL).normalized();
//auto dV = _vertices[idx0].cross(_vertices[idx1]);
// calculate counter clockwise and normalize
auto N = edgeRight.cross(edgeLeft).normalized();
// NOTE that addition is ugly
normals[ci] = N + normals[ci];

View file

@ -24,7 +24,7 @@ target_include_directories(pixwerx
)
target_link_libraries(pixwerx
pwscripting
pwbinding
# -Wl,--whole-archive -lpwscripting -Wl,--no-whole-archive
pwcore
pwsystem)

View file

@ -39,11 +39,11 @@ public:
void set_visible(bool is_visible);
protected:
on_update_t _on_update;
struct impl;
std::unique_ptr<impl> _impl;
on_update_t _on_update;
};
}

View file

@ -84,9 +84,10 @@ std::string path::executable_path() const
return result;
}
std::string path::find_file(const std::string& filename) const
std::string path::find_file(const std::string&) const
{
// for ()
// TODO: Implement
return std::string();
}
path::path()

View file

@ -48,6 +48,11 @@ struct window::impl {
// window_context _context;
static void error_callback(int error, const char* description)
{
debug::e() << "GLFW error: " << description;
}
static void drop_callback(GLFWwindow* window, int count, const char** paths)
{
// std::cout << __FUNCTION__ << std::endl;
@ -73,12 +78,13 @@ struct window::impl {
input::get()._mouse_position = pointd(xpos,ypos).cast<float>();
}
static void key_callback(GLFWwindow *window,int key, int scancode, int action, int mods)
{
input::get()._key_code = scancode;
input::get()._key_pressed = action;
// action 0,1,2
// std::cout << __FUNCTION__ << action << std::endl;
// std::cout << __FUNCTION__ << action << std::endl;
}
// static void character_callback(GLFWwindow* window, unsigned int codepoint)
@ -107,66 +113,69 @@ struct window::impl {
// glViewport(0, 0, width, height);
}
void update_display_list()
{
display::_displays.clear();
void update_display_list()
{
display::_displays.clear();
// fetch all monitors
int monitor_count = 0;
GLFWmonitor** monitors = glfwGetMonitors(&monitor_count);
// fetch all monitors
int monitor_count = 0;
GLFWmonitor** monitors = glfwGetMonitors(&monitor_count);
for (int i = 0; i < monitor_count;i++) {
display d;
d._name = std::string(glfwGetMonitorName(monitors[i]));
for (int i = 0; i < monitor_count;i++) {
display d;
d._name = std::string(glfwGetMonitorName(monitors[i]));
display::_displays.push_back(d);
display::_displays.push_back(d);
// debug::d() <<
}
// debug::d() <<
}
// GLFWvidmode
// glfwGetVideoModes() ... get all
// glfwGetVideoMode( . get current
// glfwGetMonitorPos(
// glfwGetMonitorPhysicalSize(
// glfwGetMonitorName();
// GLFWvidmode
// glfwGetVideoModes() ... get all
// glfwGetVideoMode( . get current
// glfwGetMonitorPos(
// glfwGetMonitorPhysicalSize(
// glfwGetMonitorName();
}
}
impl(window& w)
: _parent(w)
{
// initialize
glfwInit();
// initialize
if (!glfwInit())
{
debug::e() << "Initalization error";
}
update_display_list();
update_display_list();
// request specific version 3.3
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//
_window = glfwCreateWindow(640, 480, "pixwerxs", nullptr, nullptr);
//
_window = glfwCreateWindow(640, 480, "pixwerx", nullptr, nullptr);
// make window current
glfwMakeContextCurrent(_window);
// make window current
glfwMakeContextCurrent(_window);
// load opengl
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
debug::e() << "glad couldn't get OpenGL API";
}
// load opengl
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
debug::e() << "glad couldn't get OpenGL API";
}
// check Version
int major, minor, rev;
major = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MAJOR);
minor = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MINOR);
rev = glfwGetWindowAttrib(_window, GLFW_CONTEXT_REVISION);
// check Version
int major, minor, rev;
major = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MAJOR);
minor = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MINOR);
rev = glfwGetWindowAttrib(_window, GLFW_CONTEXT_REVISION);
// maybe something to pass to the outside
debug::d() << "OpenGL " << major << "." << minor << "." << rev;
// maybe something to pass to the outside
debug::d() << "OpenGL " << major << "." << minor << "." << rev;
glfwSetWindowUserPointer(_window,this);
@ -182,7 +191,10 @@ struct window::impl {
glfwSetMouseButtonCallback(_window, mouse_button_callback);
glfwSetScrollCallback(_window, scroll_callback);
// glfwSetWindowCloseCallback(_window,close_callback);
glfwSetErrorCallback(error_callback);
//glfwSetWindowCloseCallback(_window,close_callback);
}
~impl()
@ -192,24 +204,23 @@ struct window::impl {
bool update()
{
if (!glfwWindowShouldClose(_window)) {
if (_window && !glfwWindowShouldClose(_window))
{
// reset input
input::get().reset();
// get new events
glfwPollEvents();
// // reset input
// input::get().reset();
_parent._on_update(_parent);
glfwSwapBuffers(_window);
// // get new events
glfwPollEvents();
return true;
}
return false;
}
void set_title(const std::string& title)
@ -290,8 +301,6 @@ struct window::impl {
//
//
//
window::window()
: _impl(std::make_unique<window::impl>(*this))
, _on_update([](window&){})