From 6e428a6243621f38367ae3a451e8715cc8b94b9b Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Mon, 21 Jan 2019 01:00:37 +0100 Subject: [PATCH] =?UTF-8?q?Remove=20deprecated=20code=20I=20don=E2=80=99t?= =?UTF-8?q?=20understand.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - configure.ac | 1 - doc/samples/Makefile.am | 2 +- doc/samples/meshviewer/Makefile.am | 19 - doc/samples/meshviewer/easymeshdictionnary.js | 106 -- doc/samples/meshviewer/imgui.ini | 10 - doc/samples/meshviewer/meshviewer.cpp | 1131 ----------------- doc/samples/meshviewer/meshviewer.h | 344 ----- doc/samples/meshviewer/meshviewer.vcxproj | 88 -- doc/samples/meshviewer/scenesetup.cpp | 313 ----- doc/samples/meshviewer/scenesetup.h | 227 ---- .../meshviewer/scenesetupdictionnary.js | 21 - doc/samples/meshviewer/shinyfur.lolfx | 117 -- doc/samples/meshviewer/shinymvtexture.lolfx | 98 -- lol.sln | 13 - src/t/sys/thread.cpp | 44 - 16 files changed, 1 insertion(+), 2534 deletions(-) delete mode 100644 doc/samples/meshviewer/Makefile.am delete mode 100644 doc/samples/meshviewer/easymeshdictionnary.js delete mode 100644 doc/samples/meshviewer/imgui.ini delete mode 100644 doc/samples/meshviewer/meshviewer.cpp delete mode 100644 doc/samples/meshviewer/meshviewer.h delete mode 100644 doc/samples/meshviewer/meshviewer.vcxproj delete mode 100644 doc/samples/meshviewer/scenesetup.cpp delete mode 100644 doc/samples/meshviewer/scenesetup.h delete mode 100644 doc/samples/meshviewer/scenesetupdictionnary.js delete mode 100644 doc/samples/meshviewer/shinyfur.lolfx delete mode 100644 doc/samples/meshviewer/shinymvtexture.lolfx diff --git a/.gitignore b/.gitignore index 7b35e34d..b0d1fc8b 100644 --- a/.gitignore +++ b/.gitignore @@ -81,7 +81,6 @@ demos/lol.js/lol.js doc/samples/benchsuite doc/samples/bluenoise doc/samples/btphystest -doc/samples/meshviewer/meshviewer doc/samples/sandbox/sample doc/samples/math/pi doc/samples/math/poly diff --git a/configure.ac b/configure.ac index 73ea3e50..34c351c7 100644 --- a/configure.ac +++ b/configure.ac @@ -269,7 +269,6 @@ AC_CONFIG_FILES( doc/doxygen.cfg doc/samples/Makefile doc/samples/math/Makefile - doc/samples/meshviewer/Makefile doc/samples/sandbox/Makefile doc/tutorial/Makefile tools/Makefile diff --git a/doc/samples/Makefile.am b/doc/samples/Makefile.am index 6f4f71ad..55fb3276 100644 --- a/doc/samples/Makefile.am +++ b/doc/samples/Makefile.am @@ -1,7 +1,7 @@ include $(top_srcdir)/build/autotools/common.am -SUBDIRS = math meshviewer sandbox +SUBDIRS = math sandbox bench: benchsuite$(EXEEXT) ./benchsuite$(EXEEXT) diff --git a/doc/samples/meshviewer/Makefile.am b/doc/samples/meshviewer/Makefile.am deleted file mode 100644 index e01551e0..00000000 --- a/doc/samples/meshviewer/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ - -include $(top_srcdir)/build/autotools/common.am - -if BUILD_SAMPLES -if LOL_USE_GL -noinst_PROGRAMS = meshviewer -endif -endif - -meshviewer_SOURCES = meshviewer.cpp meshviewer.h \ - scenesetup.cpp scenesetup.h \ - shinymvtexture.lolfx shinyfur.lolfx -meshviewer_CPPFLAGS = $(AM_CPPFLAGS) -meshviewer_DEPENDENCIES = @LOL_DEPS@ @LOL_LUA_DEPS@ -meshviewer_LDFLAGS = $(AM_LDFLAGS) @LOL_LUA_DEPS@ -if LOL_USE_EMSCRIPTEN -meshviewer_LDFLAGS += -s EXPORTED_FUNCTIONS="['_main', '_C_Send']" -endif - diff --git a/doc/samples/meshviewer/easymeshdictionnary.js b/doc/samples/meshviewer/easymeshdictionnary.js deleted file mode 100644 index 9af25cba..00000000 --- a/doc/samples/meshviewer/easymeshdictionnary.js +++ /dev/null @@ -1,106 +0,0 @@ -//------------------------------------------------------------------------- -//Command vars operations -//------------------------------------------------------------------------- -CmdVar("[ ]", ["Opens a new scope,\nevery operations between the braces\nwill only be done to the vertices added\nsince the start of this scope."]); -CmdVar("float", ["Fraction value", "0.0"]); -CmdVar("int", ["No decimal value", "0"]); -CmdVar("bool", ["Boolean value", "true/false", "1/0"]); -CmdVar("color", ["Red/Green/Blue/{Alpha}", - "HEXA: #ABC{D}", "      #AABBCC{DD}", - "FLOAT: f f f f", "      (f f f f)", "      (f)"]); -CmdVar("vec3", ["X/Y/Z as float", " f f f", "(f f f)", "(f)"]); -CmdVar("vec2", ["X/Y/Z as float", " f f", "(f f)", "(f)"]); - -//------------------------------------------------------------------------- -//Mesh CSG operations -//------------------------------------------------------------------------- -CmdType(["csgu", "csgunion"], "Performs a Union operation as :\n(current_scope_outside + new_scope_Outside)", [CmdArg("[ ]", "New scope")]); -CmdType(["csgs", "csgsubstract"], "Performs a Substract operation as :\n(current_scope_Outside + new_scope_Inside-inverted)", [CmdArg("[ ]", "New scope")]); -CmdType(["csgsl", "csgsubstractloss"], "Performs a Substract operation without keeping the new_scope part", [CmdArg("[ ]", "New scope")]); -CmdType(["csga", "csgand"], "Performs an And operation as :\n(current_scope_Inside + new_scope__Inside)", [CmdArg("[ ]", "New scope")]); -CmdType(["csgx", "csgxor"], "Performs a Xor operation as :\n(current_scope_Outside + current_scope_Inside-inverted + new_scope_Outside + new_scope_Inside-inverted)", [CmdArg("[ ]", "New scope")]); - -//------------------------------------------------------------------------- -//Mesh Base operations -//------------------------------------------------------------------------- -CmdType(["tsw", "tglscalewind"], "When active, on negative-scaling,\nnormal-vector correction will not occur\nDefault : Inactive"); -CmdType(["tqw", "tglquadweight"], "When active, quad will have a fifth center vertex\nDefault : Inactive"); -CmdType(["tpbn", "tglpstbuildnormal"], "When active, normal will be only computed after all the command\nDefault : Inactive"); -CmdType(["tvnc", "tglvertnocleanup"], "When active, vertices cleanup will not be done at the end of all the commands\nDefault : Inactive"); -CmdType(["sc", "setcolor"], "Set A & B color", [CmdArg("color", "color")]); -CmdType(["sca", "setcolora"], "Set A color", [CmdArg("color", "color")]); -CmdType(["scb", "setcolorb"], "Set B color", [CmdArg("color", "color")]); -CmdType(["scv", "setcolorv"], "Set the color of all vertices in this scope", [CmdArg("color", "color")]); -CmdType(["lp", "loop"], "Performs a loop with the code in the braces.\nDoesn't open a new scope.", [CmdArg("int", "loopnb"), CmdArg("[ ]", "Loop command")]); - -//------------------------------------------------------------------------- -//Vertices operations -//------------------------------------------------------------------------- -CmdType(["vm", "vertmerge"], "Will merge all the same face vertices"); -CmdType(["vs", "vertseparate"], "Will separate all the same face vertices"); - -//------------------------------------------------------------------------- -//Mesh transform operations -//------------------------------------------------------------------------- -CmdType(["tx", "translatex"], "Translate vertices along the X axis", [CmdArg("float", "n")]); -CmdType(["ty", "translatey"], "Translate vertices along the Y axis", [CmdArg("float", "n")]); -CmdType(["tz", "translatez"], "Translate vertices along the Z axis", [CmdArg("float", "n")]); -CmdType(["t", "translate"], "Translate vertices", [CmdArg("vec3", "v")]); -CmdType(["rx", "rotatex"], "Rotate vertices along the X axis", [CmdArg("float", "degree")]); -CmdType(["ry", "rotatey"], "Rotate vertices along the Y axis", [CmdArg("float", "degree")]); -CmdType(["rz", "rotatez"], "Rotate vertices along the Z axis", [CmdArg("float", "degree")]); -CmdType(["r", "rotate"], "Rotate vertices along the given axis", [CmdArg("float", "degree"), CmdArg("vec3", "axis")]); -CmdType(["rj", "radialjitter"], "Randomly move vertices along Origin-to-vertex as f(vtx) = vtx + o2v * (1.0 + rand(r))", [CmdArg("float", "r")]); -CmdType(["tax", "taperx"], "multiply axis y/z by f(x)\nf(z) = z * (1.0 + (nz * f(x) + xoff))\nf(x) = absolute ? abs_x : x", [CmdArg("float", "ny"), CmdArg("float", "nz"), CmdArg("float", "xoff", "0.0"), CmdArg("bool", "absolute", "true")]); -CmdType(["tay", "tapery"], "multiply axis x/z by f(y)\nf(x) = x * (1.0 + (nx * f(y) + yoff))\nf(y) = absolute ? abs_y : y", [CmdArg("float", "nx"), CmdArg("float", "nz"), CmdArg("float", "yoff", "0.0"), CmdArg("bool", "absolute", "true")]); -CmdType(["taz", "taperz"], "multiply axis x/y by f(z)\nf(y) = y * (1.0 + (ny * f(z) + zoff))\nf(z) = absolute ? abs_z : z", [CmdArg("float", "nx"), CmdArg("float", "ny"), CmdArg("float", "zoff", "0.0"), CmdArg("bool", "absolute", "true")]); -CmdType(["twx", "twistx"], "Twist vertices around x axis with x as rotation value\nf(p) = (RotateX(x * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["twy", "twisty"], "Twist vertices around y axis with y as rotation value\nf(p) = (RotateY(y * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["twz", "twistz"], "Twist vertices around z axis with z as rotation value\nf(p) = (RotateZ(z * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["shx", "shearx"], "Shear vertices using x value as shear quantity\nf(z) = z + (nz * f(x) + xoff)\nf(x) = absolute ? abs_x : x", [CmdArg("float", "ny"), CmdArg("float", "nz"), CmdArg("float", "xoff", "0.0"), CmdArg("bool", "absolute", "true")]); -CmdType(["shy", "sheary"], "Shear vertices using y value as shear quantity\nf(x) = x + (nx * f(y) + yoff)\nf(y) = absolute ? abs_y : y", [CmdArg("float", "nx"), CmdArg("float", "nz"), CmdArg("float", "yoff", "0.0"), CmdArg("bool", "absolute", "true")]); -CmdType(["shz", "shearz"], "Shear vertices using z value as shear quantity\nf(y) = y + (ny * f(z) + zoff)\nf(z) = absolute ? abs_z : z", [CmdArg("float", "nx"), CmdArg("float", "ny"), CmdArg("float", "zoff", "0.0"), CmdArg("bool", "absolute", "true")]); -CmdType(["stx", "stretchx"], "Stretch vertices using x value as stretch quantity\nf(z) = z + (pow(x, nz) + xoff)", [CmdArg("float", "ny"), CmdArg("float", "nz"), CmdArg("float", "xoff", "0.0")]); -CmdType(["sty", "stretchy"], "Stretch vertices using y value as stretch quantity\nf(x) = x + (pow(y, nx) + yoff)", [CmdArg("float", "nx"), CmdArg("float", "nz"), CmdArg("float", "yoff", "0.0")]); -CmdType(["stz", "stretchz"], "Stretch vertices using z value as stretch quantity\nf(y) = y + (pow(z, ny) + zoff)", [CmdArg("float", "nx"), CmdArg("float", "ny"), CmdArg("float", "zoff", "0.0")]); -CmdType(["bdxy", "bendxy"], "Bend vertices using x as bend quantity along y axis\nf(p) = (RotateY(x * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["bdxz", "bendxz"], "Bend vertices using x as bend quantity along z axis\nf(p) = (RotateZ(x * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["bdyx", "bendyx"], "Bend vertices using y as bend quantity along x axis\nf(p) = (RotateX(y * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["bdyz", "bendyz"], "Bend vertices using y as bend quantity along z axis\nf(p) = (RotateZ(y * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["bdzx", "bendzx"], "Bend vertices using z as bend quantity along x axis\nf(p) = (RotateX(z * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["bdzy", "bendzy"], "Bend vertices using z as bend quantity along y axis\nf(p) = (RotateY(z * t + toff) * p)", [CmdArg("float", "t"), CmdArg("float", "toff", "0.0")]); -CmdType(["sx", "scalex"], "Scale vertices", [CmdArg("vec3", "s")]); -CmdType(["sy", "scaley"], "Scale vertices", [CmdArg("vec3", "s")]); -CmdType(["sz", "scalez"], "Scale vertices", [CmdArg("vec3", "s")]); -CmdType(["s", "scale"], "Uniformly Scale vertices", [CmdArg("float", "s")]); -CmdType(["dup", "duplicate"], "Duplicate scope mesh and apply commands in the brackets.", [CmdArg("[ ]", "")]); -CmdType(["mx", "mirrorx"], "Mirror vertices through X-plane"); -CmdType(["my", "mirrory"], "Mirror vertices through Y-plane"); -CmdType(["mz", "mirrorz"], "Mirror vertices through Z-plane"); -CmdType(["ch", "chamfer"], "DOES NOT WORK: Performs a chamfer operation", [CmdArg("float", "f")]); -CmdType(["splt", "splittriangle"], "split triangles in 4 smaller ones", [CmdArg("int", "pass")]); -CmdType(["smth", "smooth"], "Smooth the mesh by subdivising it", [CmdArg("int", "pass"), CmdArg("int", "split_per_pass"), CmdArg("int", "smooth_per_pass")]); - -//------------------------------------------------------------------------- -//Mesh shape operations -//------------------------------------------------------------------------- -CmdType(["ac", "addcylinder"], "Cylinder centered on (0,0,0) with BBox:\nMin: [-.5 * max(d1, d2),-.5 * h,-.5 * max(d1, d2)]\nMax: [ .5 * max(d1, d2), .5 * h, .5 * max(d1, d2)]", - [CmdArg("int", "nsides"), CmdArg("float", "h"), CmdArg("float", "d1"), CmdArg("float", "d2", "d1"), - CmdArg("bool", "dualsides", "false"), CmdArg("bool", "smooth", "false"), CmdArg("bool", "close", "false")]); -CmdType(["asph", "addsphere"], "Sphere centered on (0,0,0) with BBox:\nMin: [-.5 * d]\nMax: [ .5 * d]", [CmdArg("int", "ndivisions"), CmdArg("float", "d")]); -CmdType(["acap", "addcapsule"], "Capsule centered on (0,0,0) with BBox:\nMin: [-.5 * d,-(.5 * d + h),-.5 * d]\nMax: [ .5 * d, (.5 * d + h), .5 * d]", [CmdArg("int", "ndivisions"), CmdArg("float", "h"), CmdArg("float", "d")]); -CmdType(["ato", "addtorus"], "Torus centered on (0,0,0) with BBox:\nMax: [-.5 * d2]\nMax: [ .5 * d2]", [CmdArg("int", "ndivisions"), CmdArg("float", "d1"), CmdArg("float", "d2")]); -CmdType(["ab", "addbox"], "Box centered on (0,0,0) with BBox:\nMin: [-.5 * size]\nMax: [ .5 * size]", [CmdArg("vec3", "size"), CmdArg("float", "chamf", "0.0")]); -CmdType(["ascb", "addsmoothchamfbox"], "Box centered on (0,0,0) with BBox:\nMin: [-.5 * size]\nMax: [ .5 * size]", [CmdArg("vec3", "size"), CmdArg("float", "chamf")]); -CmdType(["afcb", "addflatchamfbox"], "Box centered on (0,0,0) with BBox:\nMin: [-.5 * size]\nMax: [ .5 * size]", [CmdArg("vec3", "size"), CmdArg("float", "chamf")]); -CmdType(["as", "addstar"], "Append a Star centered on (0,0,0)\nContained in a disc of max(d1, d2) diameter.", - [CmdArg("int", "nbranches"), CmdArg("float", "d1"), CmdArg("float", "d2"), - CmdArg("bool", "fade", "false"), CmdArg("bool", "fade2", "false")]); -CmdType(["aes", "addexpandedstar"], "Star centered on (0,0,0)\nContained in a disc of max(max(d1, d2), max(d1 + extrad, d2 + extrad)) diameter.\nExpanded star branches use Color2.", - [CmdArg("int", "nbranches"), CmdArg("float", "d1"), CmdArg("float", "d2"), CmdArg("float", "extrad", "0.0")]); -CmdType(["ad", "adddisc"], "Disc centered on (0,0,0) with d diameter.", [CmdArg("int", "nsides"), CmdArg("float", "d"), CmdArg("bool", "fade", "false")]); -CmdType(["at", "addtriangle"], "Triangle centered on (0,0,0)\nContained in a disc of d diameter.", [CmdArg("float", "d"), CmdArg("bool", "fade", "false")]); -CmdType(["aq", "addquad"], "Quad centered on (0,0,0) with BBox:\nMin: [-size * .5f, 0,-size * .5f]\nMax: [ size * .5f, 0, size * .5f]", [CmdArg("float", "size"), CmdArg("bool", "fade", "false")]); -CmdType(["acg", "addcog"], "Gear centered on (0,0,0) with BBox:\nMin: [-.5 * max(d1, d2),-.5 * h,-.5 * max(d1, d2)]\nMax: [ .5 * max(d1, d2), .5 * h, .5 * max(d1, d2)]", - [CmdArg("float", "h"), CmdArg("vec2", "d10d20"), CmdArg("vec2", "d11d21"), CmdArg("vec2", "d12d22"), - CmdArg("float", "sidemul", "0.0"), CmdArg("bool", "offset", "false")]); diff --git a/doc/samples/meshviewer/imgui.ini b/doc/samples/meshviewer/imgui.ini deleted file mode 100644 index 0e0a9153..00000000 --- a/doc/samples/meshviewer/imgui.ini +++ /dev/null @@ -1,10 +0,0 @@ -[Debug] -Pos=60,60 -Size=400,400 -Collapsed=0 - -[Camera Setup] -Pos=60,60 -Size=307,314 -Collapsed=0 - diff --git a/doc/samples/meshviewer/meshviewer.cpp b/doc/samples/meshviewer/meshviewer.cpp deleted file mode 100644 index 2982fb09..00000000 --- a/doc/samples/meshviewer/meshviewer.cpp +++ /dev/null @@ -1,1131 +0,0 @@ -// -// Lol Engine — EasyMesh tutorial -// -// Copyright © 2011—2019 Sam Hocevar -// © 2012—2015 Benjamin “Touky” Huet -// -// Lol Engine is free software. It comes without any warranty, to -// the extent permitted by applicable law. You can redistribute it -// and/or modify it under the terms of the Do What the Fuck You Want -// to Public License, Version 2, as published by the WTFPL Task Force. -// See http://www.wtfpl.net/ for more details. -// - -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include /* for FLT_MAX */ -#include -#include - -#include -#include - -#include "scenesetup.h" - -using namespace lol; - -static int const TEXTURE_WIDTH = 256; - -//Basic build defines --------------------------------------------------------- -#define HAS_WEB (EMSCRIPTEN) -#define HAS_INPUT (_WIN32 && !HAS_WEB) - -//Basic config defines -------------------------------------------------------- -#define R_M 1.f -#if HAS_WEB -#define DEFAULT_WIDTH (800.f * R_M) -#define DEFAULT_HEIGHT (400.f * R_M) -#else -#define DEFAULT_WIDTH (1200.f * R_M) -#define DEFAULT_HEIGHT (800.f * R_M) -#endif //HAS_WEB -#define WIDTH ((float)Video::GetSize().x) -#define HEIGHT ((float)Video::GetSize().y) -#define SCREEN_W (10.f / WIDTH) -#define RATIO_HW (HEIGHT / WIDTH) -#define RATIO_WH (WIDTH / HEIGHT) -#define SCREEN_LIMIT 1.4f - -#define RESET_TIMER .2f -#define ROT_SPEED vec2(radians(50.f)) -#define ROT_CLAMP radians(89.f) -#define POS_SPEED vec2(1.2f) -#define POS_CLAMP 1.f -#define FOV_SPEED radians(20.f) -#define FOV_CLAMP radians(120.f) -#define ZOM_SPEED 3.f -#define ZOM_CLAMP 20.f -#define HST_SPEED .5f -#define HST_CLAMP 1.f - -#define WITH_TEXTURE 0 -#define WITH_THREAD_MANAGER 0 // FIXME: this was removed from Lol Engine - -#define HAS_KBOARD (m_input_usage & (1< 0) - { - ivec3 A((pass == 1 || (pass == 2 && mask == 1))?(1):(0)); - ivec3 B((pass == 2)?(1):(0)); B[mask] = 1; - vec3 offset = vec3(ivec3((int)(!A.x != !B.x), (int)(!A.y != !B.y), (int)(!A.z != !B.z))); - AddTarget(base_pos + offset * base_off * 2.f - base_off); - } - pass++; - } - } - - array m_targets; -}; - -//EasyMeshViewerObject -------------------------------------------------------- -void EasyMeshViewerObject::tick_draw(float seconds, Scene &scene) -{ - switch (m_mesh.GetMeshState().ToScalar()) - { - case MeshRender::NeedConvert: { m_mesh.MeshConvert(); break; } - case MeshRender::CanRender: { m_mesh.Render(scene, mat4::identity/*TODO:FIX THAT*/); break; } - default: break; - } -} - -//EasyMeshLoadJob ------------------------------------------------------------- -bool EasyMeshLoadJob::DoWork() -{ - std::map meshes; - if (m_loader.ExecLuaFile(m_path) && EasyMeshLuaLoader::GetRegisteredMeshes(meshes)) - { - for (auto const &kv : meshes) - m_meshes << new EasyMeshViewerObject(kv.first, kv.second->GetMesh()); - } - return m_meshes.count() > 0; -} - -//----------------------------------------------------------------------------- -MeshViewerLoadJob* EasyMeshLoadJob::GetInstance(std::string const& path) -{ - if (Check(path)) - return new EasyMeshLoadJob(path); - return nullptr; -} - -//----------------------------------------------------------------------------- -void EasyMeshLoadJob::RetrieveResult(class MeshViewer* app) -{ - for (EasyMeshViewerObject* mesh : m_meshes) - app->AddViewerObj(mesh); - m_meshes.clear(); -} - -//MeshViewer ------------------------------------------------------------------ -MeshViewer::MeshViewer(char const *file_name) - : m_file_name(file_name) -{ - LolImGui::Init(); -} - -//----------------------------------------------------------------------------- -MeshViewer::~MeshViewer() -{ - LolImGui::Shutdown(); - Stop(); -} - -//----------------------------------------------------------------------------- -void MeshViewer::Start() -{ - if (m_init) return; - - /** OLD STUFF **/ - //Prepare(); - - //Threads setup - m_entities << (m_file_check = new FileUpdateTester()); -#if WITH_THREAD_MANAGER - m_entities << (m_file_loader = new DefaultThreadManager(4, 0)); -#endif - - //Scene setup - m_ssetup_file_name = "../data/meshviewer.init.lua"; - UpdateSceneSetup(); - - //Mesh file - m_file_status = m_file_check->RegisterFile(m_file_name); -#if WITH_THREAD_MANAGER - m_file_loader->AddJob(GetLoadJob(m_file_name)); -#endif - - //Camera setup - m_camera = new Camera(); - m_camera->SetView(vec3(10.f, 10.f, 10.f), vec3::zero, vec3::axis_y); - m_camera->SetProjection(radians(40.f), .0001f, 200.f); - //m_camera->SetProjection(radians(90.f), .0001f, 2000.f, WIDTH * SCREEN_W, RATIO_HW); - //m_camera->UseShift(true); - Scene& scene = Scene::GetScene(); - scene.PushCamera(m_camera); - scene.SetTileCam(0); - - //Text setup - m_entities << (m_text = new Text("", "data/font/ascii.png")); - m_text->SetPos(vec3(0, 0 /*(float)-m_text->GetFontSize().y*/, 0)); - -#if HAS_INPUT - InputProfile& ip = m_profile; - ip.AddBindings(InputProfileType::Keyboard); - ip.AddBindings(InputProfileType::MouseKey); - - m_entities << (m_controller = new Controller("MeshViewer")); - m_controller->Init(m_profile); -#endif //HAS_INPUT - - //Ref all entities - for (Entity* entity : m_entities) Ticker::Ref(entity); - - /** ----- Start threads ----- **/ - m_file_check->Start(); - - /** ----- Init is done ----- **/ - m_init = true; -} - -//----------------------------------------------------------------------------- -void MeshViewer::Stop() -{ - if (!m_init) return; - - /** OLD STUFF **/ - //Unprepare(); - - //Destroy scene setup - UpdateSceneSetup(true); - - //Destroy core stuff - Scene& scene = Scene::GetScene(); - if (m_camera) scene.PopCamera(m_camera); - - m_file_check->UnregisterFile(m_file_status); - - //Unref all entities - for (Entity* entity : m_entities) Ticker::Unref(entity); - - //Delete objs - while (m_objs.count()) delete m_objs.pop(); - - //Nullify all - m_camera = nullptr; - m_controller = nullptr; - m_file_check = nullptr; -#if WITH_THREAD_MANAGER - m_file_loader = nullptr; -#endif - - /** ----- Init is needed ----- **/ - m_init = false; -} - -//----------------------------------------------------------------------------- -void MeshViewer::UpdateSceneSetup(bool only_destroy) -{ - //Delete previous setups - for (auto &key : m_ssetups) - delete key.second; - m_ssetups.clear(); - if (m_ssetup_file_status) - { - m_file_check->UnregisterFile(m_ssetup_file_status); - delete m_ssetup_file_status; - } - m_ssetup_file_status = nullptr; - - //Init new setups - if (!only_destroy) - { - m_ssetup_loader.ExecLuaFile(m_ssetup_file_name); - if (m_ssetup_loader.GetLoadedSetups(m_ssetups)) - { - m_ssetup_file_status = m_file_check->RegisterFile(m_ssetup_file_name); - if (!m_ssetup_name.length() || !has_key(m_ssetups, m_ssetup_name)) - m_ssetup_name = m_ssetups.begin()->first; - } - } -} - -//----------------------------------------------------------------------------- -MeshViewerLoadJob* MeshViewer::GetLoadJob(std::string const& path) -{ - MeshViewerLoadJob* job = nullptr; - if (job = EasyMeshLoadJob::GetInstance(path)) return job; - return job; -} - -//----------------------------------------------------------------------------- -void MeshViewer::tick_game(float seconds) -{ - super::tick_game(seconds); - - if (!m_init && Scene::IsReady()) Start(); - if (!m_init) return; - - m_first_tick = true; - -#if HAS_INPUT - { - //Shutdown logic - if (m_controller->IsKeyPressed(MeshViewerKeyInput::Exit)) - { - Ticker::Shutdown(); - return; - } - } -#endif //HAS_INPUT - - static bool default_open = true; - //static float fov = radians(40.f); - //static vec3 sphere_pos = vec3(20.f, 45.f, 45.f); - //static bool use_custom_cam = true; - //static float f; - //static int mesh_idx = 0; - //static array mesh_names_char; - //static array mesh_names_str; - - //Draw viewer objects - m_menu_mesh_names_char.clear(); - m_menu_mesh_names_str.clear(); - for (ViewerObject* obj : m_objs) - m_menu_mesh_names_str << obj->GetName(); - for (auto const &str : m_menu_mesh_names_str) - m_menu_mesh_names_char << str.c_str(); - - ImGuiIO& io = ImGui::GetIO(); - //CAMERA UI --------------------------------------------------------------- - ImGui::Begin("Camera Setup" /*, &default_open, ImGuiWindowFlags_AlwaysAutoResize*/); - { - ImGui::Text("Hello, world!"); - ImGui::Checkbox("Use custom cam", &m_menu_cam_useage); - ImGui::Text("MousePos! %.2f/%.2f", io.MousePos.x, io.MousePos.y); - ImGui::Text("Left Mouse: %s", io.MouseDown[0] ? "true" : "false"); - ImGui::SliderFloat("Cam FOV", &m_menu_cam_fov, 0.1f, 120.0f); - ImGui::SliderFloat("Cam Distance", &m_menu_cam_pos.x, 0.1f, 30.f); - ImGui::SliderFloat("Cam H-axis", &m_menu_cam_pos.y, -180.f, 180.f); - ImGui::SliderFloat("Cam V-axis", &m_menu_cam_pos.z, -89.f, 89.f); - ImGui::Combo("Scene Setup", &m_menu_mesh_idx, (const char**)m_menu_mesh_names_char.data(), (int)m_menu_mesh_names_char.count()); - - ImGui::ListBox("Meshes", &m_menu_mesh_idx, (const char**)m_menu_mesh_names_char.data(), (int)m_menu_mesh_names_char.count()); - //ImGui::ListBox() - } - ImGui::End(); - - //Camera - if (m_menu_cam_useage) - { - vec3 sphere_pos_rad = m_menu_cam_pos; - sphere_pos_rad.z = (sphere_pos_rad.z > 0.f) ? (90.f - sphere_pos_rad.z) : (sphere_pos_rad.z - 90.f); - sphere_pos_rad = vec3(sphere_pos_rad.x, radians(sphere_pos_rad.y), radians(sphere_pos_rad.z)); - m_camera->SetFov(radians(m_menu_cam_fov)); - m_camera->SetPosition(cartesian(sphere_pos_rad)); - m_camera->SetTarget(vec3::zero, vec3::axis_y); - } - - //Check file update - ASSERT(m_file_status); - //if (false) //DEBUG -#if WITH_THREAD_MANAGER - //m_file_status->GetTime() - if (m_file_status->HasUpdated()) - m_file_loader->AddJob(GetLoadJob(m_file_name)); -#endif - - //Check work done - //if (false) //DEBUG - { - array result; -#if WITH_THREAD_MANAGER - m_file_loader->GetWorkResult(result); -#endif - if (result.count()) - { - for (ThreadJob* job : result) - { - if (job->GetJobType() == ThreadJobType::WORK_SUCCEEDED) - { - MeshViewerLoadJob* mvjob = static_cast(job); - mvjob->RetrieveResult(this); - } - delete job; - } - } - } - - /** OLD STUFF **/ - //Update(seconds); -} - -//----------------------------------------------------------------------------- -void MeshViewer::tick_draw(float seconds, Scene &scene) -{ - super::tick_draw(seconds, scene); - - //Draw viewer objects - if (m_menu_mesh_idx >= 0 && m_menu_mesh_idx < m_objs.count()) - m_objs[m_menu_mesh_idx]->tick_draw(seconds, scene); - - m_text->SetText("CECI EST UN TEST\n"); - - //Draw gizmos & grid - Debug::DrawGizmo(vec3::zero, vec3::axis_x, vec3::axis_y, vec3::axis_z, 10.f); - auto context = Debug::DrawContext::New(Color::white); - Debug::DrawGrid(vec3::zero, vec3::axis_x, vec3::axis_y, vec3::axis_z, 10.f); - - /** OLD STUFF **/ - //Draw(seconds); -} - -//The basic main -------------------------------------------------------------- -int main(int argc, char **argv) -{ - sys::init(argc, argv); - - Application app("MeshViewer", ivec2((int)DEFAULT_WIDTH, (int)DEFAULT_HEIGHT), 60.0f); - if (argc > 1) - new MeshViewer(argv[1]); - else - new MeshViewer(); - - ////DEBUG TEST - //SceneDisplay* display = new ApplicationDisplay("newDisplay", ivec2(800, 600)); - //SceneDisplay::Add(display); - //Scene::GetScene(Scene::GetCount() - 1).SetDisplay(display); - - app.Run(); - - return EXIT_SUCCESS; -} - -//------------------------------------------------------------------------- -//OLD --------------------------------------------------------------------- -//------------------------------------------------------------------------- -#if HAS_INPUT -bool MeshViewer::KeyReleased(MVKeyboardList index) { return (HAS_KBOARD && m_controller->WasKeyReleasedThisFrame(index)); } -bool MeshViewer::KeyPressed(MVKeyboardList index) { return (HAS_KBOARD && m_controller->WasKeyPressedThisFrame(index)); } -bool MeshViewer::KeyDown(MVKeyboardList index) { return (HAS_KBOARD && m_controller->IsKeyPressed(index)); } -bool MeshViewer::KeyReleased(MVMouseKeyList index) { return (HAS_MOUSE && m_controller->WasKeyReleasedThisFrame(index)); } -bool MeshViewer::KeyPressed(MVMouseKeyList index) { return (HAS_MOUSE && m_controller->WasKeyPressedThisFrame(index)); } -bool MeshViewer::KeyDown(MVMouseKeyList index) { return (HAS_MOUSE && m_controller->IsKeyPressed(index)); } -float MeshViewer::AxisValue(MVMouseAxisList index) { return (HAS_MOUSE) ? (m_controller->GetAxisValue(index)) : (0.f); } -#endif //HAS_INPUT - -void MeshViewer::Prepare() -{ - // Message Service - MessageService::Setup(); - - //Compile ref meshes - m_gizmos << new EasyMesh(); - m_gizmos.last()->Compile("[sc#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .075 ty .5 dup[rz 90 ry 90 scv#00f dup[ry 90 scv#f00]]][sc#fff ab .1]"); - m_gizmos << new EasyMesh(); - m_gizmos.last()->Compile("[sc#666 acap 1 .5 .5 ty -.5 sc#fff asph 2 1]"); - m_gizmos << new EasyMesh(); - m_gizmos.last()->Compile("[sc#fff ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 [ad 3 .1 sy -1] ty 1 rz 90 ry 90]"); - - // Mesh Setup - m_render_max = vec2(-.9f, 4.1f); - m_mesh_render = 0; - m_mesh_id = 0; - m_mesh_id1 = 0.f; - m_default_texture = nullptr; - m_texture_shader = nullptr; - m_texture = nullptr; - - //Camera Setup - m_reset_timer = -1.f; - m_fov = radians(-100.f); - m_fov_mesh = 0.f; - m_fov_speed = 0.f; - m_zoom = 0.f; - m_zoom_mesh = 0.f; - m_zoom_speed = 0.f; - m_rot = vec2(/*45.f*/0.f, -45.f); - m_rot_mesh = vec2::zero; - m_rot_speed = vec2::zero; - m_pos = vec2::zero; - m_pos_mesh = vec2::zero; - m_pos_speed = vec2::zero; - m_screen_offset = vec2::zero; - m_hist_scale = vec2(.13f, .03f); - m_hist_scale_mesh = vec2(.0f); - m_hist_scale_speed = vec2(.0f); - - m_mat_prev = mat4(quat::fromeuler_xyz(vec3::zero)); - m_mat = mat4::translate(vec3(0.f));//mat4(quat::fromeuler_xyz(vec3(m_rot_mesh, .0f))); - - m_build_timer = 0.1f; - m_build_time = -1.f; - - //stream update - m_stream_update_time = 2.0f; - m_stream_update_timer = 1.0f; - - m_init = true; - m_input_usage = 0; - -#if HAS_INPUT - /* Register an input controller for the keyboard */ - m_controller = new Controller("Default"); - m_controller->SetInputCount(MAX_KEYS, MAX_AXIS); - - if (InputDevice::Get(g_name_mouse.c_str())) - { - m_input_usage |= (1 << IPT_MV_MOUSE); - - m_controller->GetKey(MSE_CAM_ROT).BindMouse("Left"); - m_controller->GetKey(MSE_CAM_POS).BindMouse("Right"); - m_controller->GetKey(MSE_CAM_FOV).BindMouse("Middle"); - m_controller->GetKey(MSE_FOCUS).BindMouse("InScreen"); - m_controller->GetAxis(MSEX_CAM_Y).BindMouse("Y"); - m_controller->GetAxis(MSEX_CAM_X).BindMouse("X"); - } - - if (InputDevice::Get(g_name_keyboard.c_str())) - { - m_input_usage |= (1 << IPT_MV_KBOARD); - - //Camera keyboard rotation - m_controller->GetKey(KEY_CAM_UP).BindKeyboard("Up"); - m_controller->GetKey(KEY_CAM_DOWN).BindKeyboard("Down"); - m_controller->GetKey(KEY_CAM_LEFT).BindKeyboard("Left"); - m_controller->GetKey(KEY_CAM_RIGHT).BindKeyboard("Right"); - - //Camera keyboard position switch - m_controller->GetKey(KEY_CAM_POS).BindKeyboard("LeftShift"); - m_controller->GetKey(KEY_CAM_FOV).BindKeyboard("LeftCtrl"); - - //Camera unzoom switch - m_controller->GetKey(KEY_CAM_RESET).BindKeyboard("Space"); - - //Mesh change - m_controller->GetKey(KEY_MESH_NEXT).BindKeyboard("PageUp"); - m_controller->GetKey(KEY_MESH_PREV).BindKeyboard("PageDown"); - - //Base setup - m_controller->GetKey(KEY_F1).BindKeyboard("F1"); - m_controller->GetKey(KEY_F2).BindKeyboard("F2"); - m_controller->GetKey(KEY_F3).BindKeyboard("F3"); - m_controller->GetKey(KEY_F4).BindKeyboard("F4"); - m_controller->GetKey(KEY_F5).BindKeyboard("F5"); - m_controller->GetKey(KEY_ESC).BindKeyboard("Escape"); - } -#endif //HAS_INPUT - - - m_camera = new Camera(); - m_camera->SetView(vec3(0.f, 0.f, 10.f), vec3::zero, vec3::axis_y); - m_camera->SetProjection(0.f, .0001f, 2000.f, WIDTH * SCREEN_W, RATIO_HW); - m_camera->UseShift(true); - Scene& scene = Scene::GetScene(); - scene.PushCamera(m_camera); - - //Lights setup - m_ssetup = new SceneSetup(); -#if NO_SC_SETUP - m_ssetup->m_lights << new Light(); - m_ssetup->m_lights.last()->SetPosition(vec4(4.f, -1.f, -4.f, 0.f)); - m_ssetup->m_lights.last()->SetColor(vec4(.0f, .2f, .5f, 1.f)); - Ticker::Ref(m_ssetup->m_lights.last()); - m_ssetup->m_lights << new Light(); - m_ssetup->m_lights.last()->SetPosition(vec4(8.f, 2.f, 6.f, 0.f)); - m_ssetup->m_lights.last()->SetColor(vec4(1.f)); - Ticker::Ref(m_ssetup->m_lights.last()); - EasyMesh* em = new EasyMesh(); - if (em->Compile("sc#fff ab 1")) - { - if (m_mesh_id == m_meshes.count() - 1) - m_mesh_id++; - m_meshes.push(em, nullptr); - } -#else - //TOUKY CHANGE THAT - /* - m_ssetup->Compile("addlight 0.0 position (4 -1 -4) color (.0 .2 .5 1) " - "addlight 0.0 position (8 2 6) color #ffff " - "showgizmo true "); - */ - m_ssetup->Startup(); -#endif //NO_SC_SETUP - for (int i = 0; i < m_ssetup->m_lights.count(); ++i) - { - m_light_datas << LightData(m_ssetup->m_lights[i]->GetPosition().xyz, m_ssetup->m_lights[i]->GetColor()); - m_ssetup->m_lights[i]->SetPosition(vec3::zero); - m_ssetup->m_lights[i]->SetColor(vec4::zero); - } -} - -void MeshViewer::Unprepare() -{ - Scene& scene = Scene::GetScene(); - if (m_camera) scene.PopCamera(m_camera); - if (m_ssetup) delete m_ssetup; - - MessageService::Destroy(); - - //Register all entities - for (Entity* entity : m_entities) - Ticker::Unref(entity); - - m_controller = nullptr; - m_camera = nullptr; - m_ssetup = nullptr; - - /** ----- Init is needed ----- **/ - m_init = false; -} - -void MeshViewer::Update(float seconds) -{ - //TODO : This should probably be "standard LoL behaviour" -#if HAS_INPUT - { - //Shutdown logic - if (KeyReleased(KEY_ESC)) - Ticker::Shutdown(); - } -#endif //HAS_INPUT - - //Compute render mesh count - float a_j = lol::abs(m_render_max[1]); - float i_m = m_hist_scale_mesh.x; - float i_trans = a_j - ((a_j * a_j * i_m * i_m + a_j * i_m) * .5f); - m_render_max[1] = a_j * ((RATIO_WH * 1.f) / ((i_trans != 0.f)?(i_trans):(RATIO_WH))) - RATIO_HW * .3f; - - //Mesh Change -#if HAS_INPUT - m_mesh_id = clamp(m_mesh_id + ((int)KeyPressed(KEY_MESH_PREV) - (int)KeyPressed(KEY_MESH_NEXT)), 0, m_meshes.count() - 1); -#endif //HAS_INPUT - m_mesh_id1 = damp(m_mesh_id1, (float)m_mesh_id, .2f, seconds); - -#if ALL_FEATURES - - //Update light position & damping - for (int i = 0; i < m_ssetup->m_lights.count(); ++i) - { - vec3 pos = (m_mat * inverse(m_mat_prev) * vec4(m_ssetup->m_lights[i]->GetPosition(), 1.f)).xyz; - vec3 tgt = (m_mat * vec4(m_light_datas[i].m_pos, 1.f)).xyz; - - vec3 new_pos = damp(pos, tgt, .3f, seconds); - vec4 new_col = damp(m_ssetup->m_lights[i]->GetColor(), m_light_datas[i].m_col, .3f, seconds); - - m_ssetup->m_lights[i]->SetPosition(new_pos); - m_ssetup->m_lights[i]->SetColor(new_col); - } - - //Camera update - bool is_pos = false; - bool is_fov = false; - bool is_hsc = false; - vec2 tmpv = vec2::zero; - -#if HAS_INPUT - is_pos = KeyDown(KEY_CAM_POS) || KeyDown(MSE_CAM_POS); - is_fov = KeyDown(KEY_CAM_FOV) || KeyDown(MSE_CAM_FOV); - - if (KeyDown(MSE_FOCUS) && (KeyDown(MSE_CAM_ROT) || KeyDown(MSE_CAM_POS) || KeyDown(MSE_CAM_FOV))) - { - tmpv += vec2(AxisValue(MSEX_CAM_Y), AxisValue(MSEX_CAM_X)); - if (KeyDown(MSE_CAM_ROT)) - tmpv *= vec2(1.f, 1.f) * 6.f; - if (KeyDown(MSE_CAM_POS)) - tmpv *= vec2(1.f, -1.f) * 3.f; - if (KeyDown(MSE_CAM_FOV)) - tmpv = vec2(tmpv.y * 4.f, tmpv.x * 6.f); - } - - tmpv += vec2((float)KeyDown(KEY_CAM_UP ) - (float)KeyDown(KEY_CAM_DOWN), - (float)KeyDown(KEY_CAM_RIGHT) - (float)KeyDown(KEY_CAM_LEFT)); -#endif //HAS_INPUT - - //Base data - vec2 rot = (!is_pos && !is_fov)?(tmpv):(vec2(.0f)); rot = vec2(rot.x, -rot.y); - vec2 pos = ( is_pos && !is_fov)?(tmpv):(vec2(.0f)); pos = -vec2(pos.y, pos.x); - vec2 fov = (!is_pos && is_fov )?(tmpv):(vec2(.0f)); fov = vec2(-fov.x, fov.y); - vec2 hsc = (is_hsc)?(vec2(0.f)):(vec2(0.f)); - - //speed - m_rot_speed = damp(m_rot_speed, rot * ROT_SPEED, .2f, seconds); - float pos_factor = 1.f / (1.f + m_zoom_mesh * .5f); - m_pos_speed = damp(m_pos_speed, pos * POS_SPEED * pos_factor, .2f, seconds); - float fov_factor = 1.f + lol::pow((m_fov_mesh / FOV_CLAMP) * 1.f, 2.f); - m_fov_speed = damp(m_fov_speed, fov.x * FOV_SPEED * fov_factor, .2f, seconds); - float zom_factor = 1.f + lol::pow((m_zoom_mesh / ZOM_CLAMP) * 1.f, 2.f); - m_zoom_speed = damp(m_zoom_speed, fov.y * ZOM_SPEED * zom_factor, .2f, seconds); - m_hist_scale_speed = damp(m_hist_scale_speed, hsc * HST_SPEED, .2f, seconds); - - m_rot += m_rot_speed * seconds; - -#if HAS_INPUT - if (m_reset_timer >= 0.f) - m_reset_timer -= seconds; - if (KeyPressed(KEY_CAM_RESET)) - { - if (m_reset_timer >= 0.f) - { - m_pos = vec2(0.f); - m_zoom = 0.f; - } - else - m_reset_timer = RESET_TIMER; - } - - //Transform update - if (!KeyDown(KEY_CAM_RESET)) - { - m_pos += m_pos_speed * seconds; - m_fov += m_fov_speed * seconds; - m_zoom += m_zoom_speed * seconds; - m_hist_scale += m_hist_scale_speed * seconds; - } -#endif //HAS_INPUT - - //clamp - vec2 rot_mesh = vec2(SmoothClamp(m_rot.x, -ROT_CLAMP, ROT_CLAMP, ROT_CLAMP * .1f), m_rot.y); - vec2 pos_mesh = vec2(SmoothClamp(m_pos.x, -POS_CLAMP, POS_CLAMP, POS_CLAMP * .1f), - SmoothClamp(m_pos.y, -POS_CLAMP, POS_CLAMP, POS_CLAMP * .1f)); - float fov_mesh = SmoothClamp(m_fov, 0.f, FOV_CLAMP, FOV_CLAMP * .1f); - float zoom_mesh = SmoothClamp(m_zoom, -ZOM_CLAMP, ZOM_CLAMP, ZOM_CLAMP * .1f); - vec2 hist_scale_mesh = vec2(SmoothClamp(m_hist_scale.x, 0.f, HST_CLAMP, HST_CLAMP * .1f), - SmoothClamp(m_hist_scale.y, 0.f, HST_CLAMP, HST_CLAMP * .1f)); - -#if HAS_INPUT - if (KeyDown(KEY_CAM_RESET) && m_reset_timer < 0.f) - { - pos_mesh = vec2::zero; - zoom_mesh = 0.f; - } -#endif //HAS_INPUT - - m_rot_mesh = vec2(damp(m_rot_mesh.x, rot_mesh.x, .2f, seconds), damp(m_rot_mesh.y, rot_mesh.y, .2f, seconds)); - m_pos_mesh = vec2(damp(m_pos_mesh.x, pos_mesh.x, .2f, seconds), damp(m_pos_mesh.y, pos_mesh.y, .2f, seconds)); - m_fov_mesh = damp(m_fov_mesh, fov_mesh, .2f, seconds); - m_zoom_mesh = damp(m_zoom_mesh, zoom_mesh, .2f, seconds); - m_hist_scale_mesh = damp(m_hist_scale_mesh, hist_scale_mesh, .2f, seconds); - - //Mesh mat calculation - m_mat_prev = m_mat; - m_mat = mat4::translate(vec3(0.f)); - - //Target List Setup - TargetCamera tc; - if (m_meshes.count() && m_mesh_id >= 0) - for (int i = 0; i < m_meshes[m_mesh_id].m1->GetVertexCount(); i++) - tc.AddTarget((m_mat * mat4::translate(m_meshes[m_mesh_id].m1->GetVertexLocation(i)))[3].xyz); - tc.AddTarget(box3(vec3(0.f), vec3(1.f))); - for (int k = 0; k < m_ssetup->m_lights.count() && m_ssetup->m_show_lights; ++k) - { - vec3 light_pos = m_ssetup->m_lights[k]->GetPosition(); - mat4 world_cam = m_camera->GetView(); - light_pos = (inverse(world_cam) * vec4((world_cam * vec4(light_pos, 1.0f)).xyz * vec3::axis_z, 1.0f)).xyz; - tc.AddTarget(box3(vec3(-1.f), vec3(1.f)) + light_pos * - ((m_ssetup->m_lights[k]->GetType() == LightType::Directional)?(-1.f):(1.f))); - } - - //-- - //Update mesh screen location - Get the Min/Max needed - //-- - vec2 cam_center(0.f); - float cam_factor = .0f; - vec3 local_min_max[2] = { vec3(FLT_MAX), vec3(-FLT_MAX) }; - vec2 screen_min_max[2] = { vec2(FLT_MAX), vec2(-FLT_MAX) }; - mat4 world_cam = m_camera->GetView(); - mat4 cam_screen = m_camera->GetProjection(); - - //target on-screen computation - for (int i = 0; i < tc.m_targets.count(); i++) - { - vec3 obj_loc = tc.m_targets[i]; - { - //Debug::DrawBox(obj_loc - vec3(4.f), obj_loc + vec3(4.f), vec4(1.f, 0.f, 0.f, 1.f)); - mat4 target_mx = mat4::translate(obj_loc); - vec3 vpos; - - //Get location in cam coordinates - target_mx = world_cam * target_mx; - vpos = target_mx[3].xyz; - local_min_max[0] = min(vpos.xyz, local_min_max[0]); - local_min_max[1] = max(vpos.xyz, local_min_max[1]); - - //Get location in screen coordinates - target_mx = cam_screen * target_mx; - vpos = (target_mx[3] / target_mx[3].w).xyz; - screen_min_max[0] = min(screen_min_max[0], vpos.xy * vec2(RATIO_WH, 1.f)); - screen_min_max[1] = max(screen_min_max[1], vpos.xy * vec2(RATIO_WH, 1.f)); - - //Build Barycenter - cam_center += vpos.xy; - cam_factor += 1.f; - } - } - float screen_ratio = max(max(lol::abs(screen_min_max[0].x), lol::abs(screen_min_max[0].y)), - max(lol::abs(screen_min_max[1].x), lol::abs(screen_min_max[1].y))); - float z_dist = //m_camera->m_target_distance - length(m_camera->m_position) - + max(local_min_max[0].z, local_min_max[1].z); - - vec2 screen_offset = vec2(0.f, -(screen_min_max[1].y + screen_min_max[0].y) * .5f); - m_screen_offset = damp(m_screen_offset, screen_offset, .9f, seconds); - - float forced_zoom = m_zoom_mesh; - - if (cam_factor > 0.f) - { - vec2 old_sscale = m_camera->GetScreenScale(); - float old_ssize = m_camera->GetScreenSize(); - float zoom_in = 1.f + lol::max(0.f, forced_zoom); - float zoom_out = 1.f + lol::max(0.f, -forced_zoom); - m_camera->SetScreenScale(max(vec2(0.001f), ((old_sscale * zoom_in) / (screen_ratio * zoom_out * SCREEN_LIMIT)))); - m_camera->SetFov(m_fov_mesh); - m_camera->SetScreenInfos(damp(old_ssize, max(1.f, screen_ratio * zoom_out), 1.2f, seconds)); - - vec3 posz = ((mat4::rotate(m_rot_mesh.y, vec3::axis_y) * mat4::rotate(-m_rot_mesh.x, vec3::axis_x) * vec4::axis_z)).xyz; - vec3 newpos = posz * damp(length(m_camera->m_position), z_dist * 1.2f, .1f, seconds); - m_camera->SetView(newpos, vec3(0.f), vec3::axis_y); - } - - //-- - //Message Service - //-- - std::string mesh; - int u = 1; - while (u-- > 0 && MessageService::FetchFirst(MessageBucket::AppIn, mesh)) - { - int o = 1; - while (o-- > 0) - { - SceneSetup* new_ssetup = new SceneSetup(); - if (false) //new_ssetup->Compile(mesh.c_str()) && new_ssetup->m_lights.count()) - { - //Store current light datas, in World - array light_datas; - for (int i = 0; i < m_ssetup->m_lights.count(); ++i) - light_datas << LightData(m_ssetup->m_lights[i]->GetPosition(), m_ssetup->m_lights[i]->GetColor()); - - if (m_ssetup) - delete m_ssetup; - m_ssetup = new_ssetup; - m_ssetup->Startup(); - - //Restore all light datas so blend can occur - mat4 light_mat = m_mat * inverse(mat4(quat::fromeuler_xyz(vec3::zero))); - for (int i = 0; i < m_ssetup->m_lights.count(); ++i) - { - //Store local dst in current m_ld - LightData ltmp = LightData(m_ssetup->m_lights[i]->GetPosition(), m_ssetup->m_lights[i]->GetColor()); - if (i < m_light_datas.count()) - m_light_datas[i] = ltmp; - else - m_light_datas << ltmp; - - vec3 loc = vec3::zero; - vec4 col = vec4::zero; - if (i < light_datas.count()) - { - loc = light_datas[i].m_pos; - col = light_datas[i].m_col; - } - - //Restore old light datas in new lights - m_ssetup->m_lights[i]->SetPosition(loc); - m_ssetup->m_lights[i]->SetColor(col); - } - } - else - { - m_ssetup->m_custom_cmd += new_ssetup->m_custom_cmd; - delete new_ssetup; - } - } - } - - //Check the custom cmd even if we don't have new messages. - int o = 1; - while (o-- > 0) - { - for (int i = 0; m_ssetup && i < m_ssetup->m_custom_cmd.count(); ++i) - { - if (m_ssetup->m_custom_cmd[i].m1 == "setmesh") - { - //Create a new mesh - EasyMesh* em = new EasyMesh(); - if (em->Compile(m_ssetup->m_custom_cmd[i].m2.c_str(), false)) - { - em->BD()->Cmdi() = 0; - if (m_mesh_id == m_meshes.count() - 1) - m_mesh_id++; - m_meshes.push(em, nullptr); - } - else - delete em; - } - } - } - m_ssetup->m_custom_cmd.clear(); -#endif //ALL_FEATURES - -#if HAS_WEB -/* - if (m_stream_update_time > .0f) - { - m_stream_update_time = -1.f; - MessageService::Send(MessageBucket::AppIn, - " addlight 0.0 position (4 -1 -4) color (.0 .2 .5 1) \ - addlight 0.0 position (8 2 6) color #ffff \ - custom setmesh \"[sc#f8f ab 1]\""); -// MessageService::Send(MessageBucket::AppIn, "[sc#f8f ab 1]"); -// MessageService::Send(MessageBucket::AppIn, "[sc#f8f ab 1 splt 4 twy 90]"); -// MessageService::Send(MessageBucket::AppIn, "[sc#8ff afcb 1 1 1 0]"); -// MessageService::Send(MessageBucket::AppIn, "[sc#ff8 afcb 1 1 1 0]"); - } -*/ -#elif defined(_WIN32) - //-- - //File management - //-- - m_stream_update_time += seconds; - if (m_stream_update_time > m_stream_update_timer) - { - m_stream_update_time = 0.f; - - File f; - f.Open(m_file_name.c_str(), FileAccess::Read); - std::string cmd = f.ReadString().C(); - f.Close(); - - if (cmd.count() - && (!m_cmdlist.count() || cmd != m_cmdlist.last())) - { - m_cmdlist << cmd; - MessageService::Send(MessageBucket::AppIn, cmd); - } - } -#endif //WINDOWS -} - -void MeshViewer::Draw(float seconds, Scene &scene) -{ - - if (!m_init || !m_first_tick) - return; - - //TODO : This should probably be "standard LoL behaviour" -#if HAS_INPUT - { - if (KeyReleased(KEY_F2)) - Video::SetDebugRenderMode((Video::GetDebugRenderMode() + 1) % DebugRenderMode::Max); - else if (KeyReleased(KEY_F1)) - Video::SetDebugRenderMode((Video::GetDebugRenderMode() + DebugRenderMode::Max - 1) % DebugRenderMode::Max); - } -#endif //HAS_INPUT - -#if !HAS_WEB && WITH_TEXTURE - if (!m_default_texture) - { - m_texture_shader = Shader::Create(LOLFX_RESOURCE_NAME(shinymvtexture)); - m_texture_uni = m_texture_shader->GetUniformLocation("u_Texture"); - m_default_texture = Tiler::Register("data/test-texture.png", ivec2::zero, ivec2(0,1)); - } - else if (m_texture && m_default_texture) - m_texture_shader->SetUniform(m_texture_uni, m_default_texture->GetTexture(), 0); -#endif //!HAS_WEB && WITH_TEXTURE - - scene.get_renderer()->SetClearColor(m_ssetup->m_clear_color); - - for (int i = 0; i < m_gizmos.count(); ++i) - { - if (m_gizmos[i]->GetMeshState() == MeshRender::NeedConvert) - m_gizmos[i]->MeshConvert(); - else - break; - } - - if (m_build_timer > .0f) - { - if (m_build_time < .0f) - { - m_build_time = m_build_timer; - for (int i = 0; i < m_meshes.count(); ++i) - { - if (m_meshes[i].m1 && m_meshes[i].m1->BD()->Cmdi() < m_meshes[i].m1->BD()->CmdStack().GetCmdNb()) - { - EasyMesh* tmp = m_meshes[i].m1; - EasyMesh* newtmp = new EasyMesh(*tmp); - int ii = 1; -#if 1 - bool stop = false; - while (!stop) - { - int cmdi = newtmp->BD()->Cmdi() + ii; - if (cmdi < newtmp->BD()->CmdStack().GetCmdNb()) - { - switch (newtmp->BD()->CmdStack().GetCmd(cmdi)) - { - case EasyMeshCmdType::LoopStart: - case EasyMeshCmdType::LoopEnd: - case EasyMeshCmdType::OpenBrace: - case EasyMeshCmdType::CloseBrace: - case EasyMeshCmdType::ScaleWinding: - case EasyMeshCmdType::QuadWeighting: - case EasyMeshCmdType::PostBuildNormal: - case EasyMeshCmdType::PreventVertCleanup: - case EasyMeshCmdType::SetColorA: - case EasyMeshCmdType::SetColorB: - { - ii++; - break; - } - default: - { - stop = true; - break; - } - } - } - else - stop = true; - } -#endif - newtmp->BD()->CmdExecNb() = ii; - newtmp->ExecuteCmdStack(false); - - m_meshes[i].m1 = newtmp; - delete tmp; - } - } - } - m_build_time -= seconds; - } - -#define NORMAL_USAGE 1 -#if NORMAL_USAGE - vec3 x = vec3(1.f,0.f,0.f); - vec3 y = vec3(0.f,1.f,0.f); - mat4 save_proj = m_camera->GetProjection(); - //Y object Offset - mat4 mat_obj_offset = mat4::translate(x * m_screen_offset.x + y * m_screen_offset.y) * - //Mesh Pos Offset - mat4::translate((x * m_pos_mesh.x * RATIO_HW + y * m_pos_mesh.y) * 2.f * (1.f + .5f * m_zoom_mesh / SCREEN_LIMIT)); - //Align right meshes - mat4 mat_align = mat4::translate(x - x * RATIO_HW); - mat4 mat_gizmo = mat_obj_offset * mat_align * save_proj; - for (int i = 0; i < m_meshes.count(); i++) - { - { - if (m_meshes[i].m1->GetMeshState() == MeshRender::NeedConvert) - { -#if WITH_TEXTURE - m_meshes[i].m1->MeshConvert(new DefaultShaderData(((1 << VertexUsage::Position) | (1 << VertexUsage::Normal) | - (1 << VertexUsage::Color) | (1 << VertexUsage::TexCoord)), - m_texture_shader, true)); -#else - m_meshes[i].m1->MeshConvert(); -#endif //WITH_TEXTURE - } -#if ALL_FEATURES - float j = -(float)(m_meshes.count() - (i + 1)) + (-m_mesh_id1 + (float)(m_meshes.count() - 1)); - - if (m_mesh_id1 - m_render_max[0] > (float)i && m_mesh_id1 - m_render_max[1] < (float)i && - m_meshes[i].m1->GetMeshState() > MeshRender::NeedConvert) - { - float a_j = lol::abs(j); - float i_trans = (a_j * a_j * m_hist_scale_mesh.x + a_j * m_hist_scale_mesh.x) * .5f; - float i_scale = clamp(1.f - (m_hist_scale_mesh.y * (m_mesh_id1 - (float)i)), 0.f, 1.f); - - //Mesh count offset - mat4 mat_count_offset = mat4::translate(x * RATIO_HW * 2.f * (j + i_trans)); - //Mesh count scale - mat4 mat_count_scale = mat4::scale(vec3(vec2(i_scale), 1.f)); - - //Camera projection - mat4 new_proj = mat_obj_offset * mat_count_offset * mat_align * mat_count_scale * save_proj; - m_camera->SetProjection(new_proj); - m_meshes[i].m1->Render(scene, m_mat); - scene.get_renderer()->Clear(ClearMask::Depth); - } - m_camera->SetProjection(save_proj); -#else - m_meshes[i].m1->Render(scene, m_mat); -#endif //ALL_FEATURES - } - } - - //Scene setup update - if (m_ssetup) - { - m_camera->SetProjection(mat_gizmo); - if (m_ssetup->m_show_gizmo) - m_gizmos[GZ_Editor]->Render(scene, m_mat); - - if (m_ssetup->m_show_lights) - { - for (int k = 0; k < m_ssetup->m_lights.count(); ++k) - { - Light* ltmp = m_ssetup->m_lights[k]; - mat4 world = mat4::translate(ltmp->GetPosition()); - mat4 local = mat4::translate((inverse(m_mat) * world)[3].xyz); - //dir light - if (ltmp->GetType() == LightType::Directional) - { - m_gizmos[GZ_LightPos]->Render(scene, m_mat * inverse(local)); - m_gizmos[GZ_LightDir]->Render(scene, inverse(world) * inverse(mat4::lookat(vec3::zero, -ltmp->GetPosition(), vec3::axis_y))); - } - else //point light - { - m_gizmos[GZ_LightPos]->Render(scene, m_mat * local); - } - } - } - m_camera->SetProjection(save_proj); - } -#endif //NORMAL_USAGE - -#if 0 //Debug normal draw - for (int i = m_meshes.count() - 1; 0 <= i && i < m_meshes.count(); i++) - { - for (int j = 0; j < m_meshes[i].m1->m_indices.count(); j += 3) - { - VertexData v[3] = { m_meshes[i].m1->m_vert[m_meshes[i].m1->m_indices[j ]], - m_meshes[i].m1->m_vert[m_meshes[i].m1->m_indices[j+1]], - m_meshes[i].m1->m_vert[m_meshes[i].m1->m_indices[j+2]] - }; - for (int k = 0; k < 3; k++) - Debug::DrawLine((m_mat * mat4::translate(v[k].m_coord))[3].xyz, - (m_mat * mat4::translate(v[(k+1)%3].m_coord))[3].xyz, vec4(vec3((v[k].m_coord.z + 1.f)*.5f),1.f)); - } - for (int j = 0; j < m_meshes[i].m1->m_vert.count(); j++) - { - VertexData &v = m_meshes[i].m1->m_vert[m_meshes[i].m1->m_indices[j]]; - Debug::DrawLine((m_mat * mat4::translate(v.m_coord))[3].xyz, - (m_mat * mat4::translate(v.m_coord))[3].xyz + - (m_mat * vec4(v.m_normal * 5.f, 0.f)).xyz, vec4(lol::abs(v.m_normal), 1.f)); - } - } -#endif -} diff --git a/doc/samples/meshviewer/meshviewer.h b/doc/samples/meshviewer/meshviewer.h deleted file mode 100644 index 49d25422..00000000 --- a/doc/samples/meshviewer/meshviewer.h +++ /dev/null @@ -1,344 +0,0 @@ -// -// Lol Engine — EasyMesh tutorial -// -// Copyright © 2009—2015 Benjamin “Touky” Huet -// © 2012—2018 Sam Hocevar -// -// Lol Engine is free software. It comes without any warranty, to -// the extent permitted by applicable law. You can redistribute it -// and/or modify it under the terms of the Do What the Fuck You Want -// to Public License, Version 2, as published by the WTFPL Task Force. -// See http://www.wtfpl.net/ for more details. -// - -#pragma once - -#include -#include - -namespace lol -{ - -enum -{ - IPT_MV_KBOARD = 0, - IPT_MV_MOUSE, - - INPUT_MAX -}; - -enum MVKeyboardList -{ - KEY_CAM_RESET = 0, - KEY_CAM_POS, - KEY_CAM_FOV, - - KEY_CAM_UP, - KEY_CAM_DOWN, - KEY_CAM_LEFT, - KEY_CAM_RIGHT, - - KEY_MESH_NEXT, - KEY_MESH_PREV, - - KEY_F1, - KEY_F2, - KEY_F3, - KEY_F4, - KEY_F5, - KEY_ESC, - - KEY_MAX -}; - -enum MVMouseKeyList -{ - MSE_CAM_ROT = KEY_MAX, - MSE_CAM_POS, - MSE_CAM_FOV, - MSE_FOCUS, - - MSE_MAX -}; - -enum MVMouseAxisList -{ - MSEX_CAM_Y = 0, - MSEX_CAM_X, - - MSEX_MAX -}; -#define MAX_KEYS MSE_MAX -#define MAX_AXIS MSEX_MAX - -//MeshViewerInput --------------------------------------------------------- -struct MeshViewerKeyInputBase : public StructSafeEnum -{ - enum Type - { - KBD_BEG = 0, - - Exit = KBD_BEG, - - KBD_END, - - MSE_BEG = KBD_END, - - LeftClick = MSE_BEG, - RightClick, - MiddleClick, - Focus, - - MSE_END, - - MAX = MSE_END, - }; -protected: - virtual bool BuildEnumMap(std::map& enum_map) - { - enum_map[Exit] = g_name_key_Escape; - - enum_map[LeftClick] = g_name_mouse_key_left; - enum_map[RightClick] = g_name_mouse_key_right; - enum_map[MiddleClick] = g_name_mouse_key_middle; - enum_map[Focus] = g_name_mouse_key_in_screen; - - return true; - } -}; -typedef SafeEnum MeshViewerKeyInput; - -#define ALL_FEATURES 1 -#define NO_SC_SETUP 0 - -enum GizmoType -{ - GZ_Editor = 0, - GZ_LightPos, - GZ_LightDir, - - GZ_MAX -}; - -struct LightData -{ - LightData(vec3 pos, vec4 col) - { - m_pos = pos; - m_col = col; - } - - vec3 m_pos; - vec4 m_col; -}; - -//ViewerObject ---------------------------------------------------------------- -class ViewerObject -{ -public: - ViewerObject() { } - ViewerObject(std::string const& name) : m_name(name) { } - virtual ~ViewerObject() { } - - virtual void tick_draw(float seconds, Scene &scene) { } - std::string GetName() { return m_name; } - -protected: - std::string m_name; -}; - -//EasyMeshViewerObject -------------------------------------------------------- -class EasyMeshViewerObject : public ViewerObject -{ - typedef ViewerObject super; - -public: - EasyMeshViewerObject() - : ViewerObject() { } - EasyMeshViewerObject(std::string const& name, EasyMesh const& mesh) - : ViewerObject(name) - { - Init(name, mesh); - } - virtual ~EasyMeshViewerObject() { } - - virtual void tick_draw(float seconds, Scene &scene); - - void Init(std::string const& name, EasyMesh const& mesh) - { - m_name = name; - m_mesh = mesh; - } - -protected: - EasyMesh m_mesh; -}; - -//MeshViewerLoadJob ----------------------------------------------------------- -class MeshViewerLoadJob : public ThreadJob -{ - friend class BaseThreadManager; - typedef ThreadJob super; - -public: - inline MeshViewerLoadJob() : ThreadJob() { } - inline MeshViewerLoadJob(std::string const& path) - : ThreadJob(ThreadJobType::WORK_TODO), m_path(path) { } - virtual ~MeshViewerLoadJob() { } - - virtual void RetrieveResult(class MeshViewer* app) { } - -protected: - virtual bool DoWork() { return super::DoWork(); } - -protected: - std::string m_path; -}; - -//EasyMeshLoadJob ------------------------------------------------------------- -class EasyMeshLoadJob : public MeshViewerLoadJob -{ - friend class BaseThreadManager; - typedef EasyMeshLoadJob super; - -public: - inline EasyMeshLoadJob() : MeshViewerLoadJob() { } - inline EasyMeshLoadJob(std::string const& path) - : MeshViewerLoadJob(path) { } - virtual ~EasyMeshLoadJob() { } - - static MeshViewerLoadJob* GetInstance(std::string const& path); - virtual void RetrieveResult(class MeshViewer* app); - -protected: - static bool Check(std::string const& path) { return path.find(".easymesh") != std::string::npos; } - virtual bool DoWork(); - -protected: - EasyMeshLuaLoader m_loader; - array m_meshes; -}; - -//MeshViewer ------------------------------------------------------------------ -class MeshViewer : public WorldEntity -{ - typedef WorldEntity super; -public: - MeshViewer(char const *file_name = "../data/meshviewer.easymesh.lua"); - ~MeshViewer(); - - void Start(); - void Stop(); - - void UpdateSceneSetup(bool only_destroy = false); - - MeshViewerLoadJob* GetLoadJob(std::string const& path); - void AddViewerObj(ViewerObject* obj) { m_objs << obj; } - - virtual void tick_game(float seconds); - virtual void tick_draw(float seconds, Scene &scene); - - bool KeyReleased(MVKeyboardList index); - bool KeyPressed(MVKeyboardList index); - bool KeyDown(MVKeyboardList index); - bool KeyReleased(MVMouseKeyList index); - bool KeyPressed(MVMouseKeyList index); - bool KeyDown(MVMouseKeyList index); - float AxisValue(MVMouseAxisList index); - - void Prepare(); - void Unprepare(); - void Update(float seconds); - void Draw(float seconds, Scene &scene); - -private: - //Main stuff -------------------------------------------------------------- - bool m_init = false; - bool m_first_tick = false; - InputProfile m_profile; - Camera* m_camera = nullptr; - Text* m_text = nullptr; - - //ImGui stuff - bool m_menu_cam_useage = true; - float m_menu_cam_fov = radians(40.f); - vec3 m_menu_cam_pos = vec3(20.f, 45.f, 45.f); - int m_menu_mesh_idx = 0; - array m_menu_mesh_names_char; - array m_menu_mesh_names_str; - - //Scene setup data - SceneSetupLuaLoader m_ssetup_loader; - FileUpdateStatus *m_ssetup_file_status = nullptr; - std::string m_ssetup_file_name; - std::string m_ssetup_name; - std::map m_ssetups; - - //File data - std::string m_file_name; - FileUpdateStatus* m_file_status; - - //Object data - array m_objs; - - //Entities listing - array m_entities; - - //Input - Controller* m_controller = nullptr; - - //Thread stuff - FileUpdateTester* m_file_check = nullptr; - DefaultThreadManager* m_file_loader = nullptr; - - //OLD --------------------------------------------------------------------- - SceneSetup *m_ssetup = nullptr; - array m_light_datas; - short m_input_usage; - mat4 m_mat; - mat4 m_mat_prev; - - //Camera Setup - float m_reset_timer; - float m_fov; - float m_fov_mesh; - float m_fov_speed; - float m_zoom; - float m_zoom_mesh; - float m_zoom_speed; - vec2 m_rot; - vec2 m_rot_mesh; - vec2 m_rot_speed; - vec2 m_pos; - vec2 m_pos_mesh; - vec2 m_pos_speed; - vec2 m_hist_scale; - vec2 m_hist_scale_mesh; - vec2 m_hist_scale_speed; - vec2 m_screen_offset; - - //Mesh update timer - float m_build_timer; - float m_build_time; - - //Mesh infos - vec2 m_render_max; - int m_mesh_render; - int m_mesh_id; - float m_mesh_id1; - array m_meshes; - array m_gizmos; - - //File data - array m_cmdlist; - float m_stream_update_time; - float m_stream_update_timer; - - //misc datas - Shader * m_texture_shader; - TileSet * m_default_texture; - Texture * m_texture; - ShaderUniform m_texture_uni; -}; - -} /* namespace lol */ diff --git a/doc/samples/meshviewer/meshviewer.vcxproj b/doc/samples/meshviewer/meshviewer.vcxproj deleted file mode 100644 index 523351cb..00000000 --- a/doc/samples/meshviewer/meshviewer.vcxproj +++ /dev/null @@ -1,88 +0,0 @@ - - - - $(SolutionDir)\lol - $(SolutionDir) - - - - Debug - ORBIS - - - Debug - Win32 - - - Debug - x64 - - - Release - ORBIS - - - Release - Win32 - - - Release - x64 - - - - - - - - - {9e62f2fe-3408-4eae-8238-fd84238ceeda} - - - {83d3b207-c601-4025-8f41-01dedc354661} - - - {d84021ca-b233-4e0f-8a52-071b83bbccc4} - - - - - true - true - - - true - - - true - - - - - - - - - - - - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E} - Application - Win32Proj - - - - - - - - - - - - - - - - - diff --git a/doc/samples/meshviewer/scenesetup.cpp b/doc/samples/meshviewer/scenesetup.cpp deleted file mode 100644 index 23284f6b..00000000 --- a/doc/samples/meshviewer/scenesetup.cpp +++ /dev/null @@ -1,313 +0,0 @@ -// -// Lol Engine — Mesh viewer -// -// Copyright © 2003—2015 Benjamin “Touky” Huet -// © 2013—2018 Sam Hocevar -// -// Lol Engine is free software. It comes without any warranty, to -// the extent permitted by applicable law. You can redistribute it -// and/or modify it under the terms of the Do What the Fuck You Want -// to Public License, Version 2, as published by the WTFPL Task Force. -// See http://www.wtfpl.net/ for more details. -// - -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include - -#include -#include - -#include "scenesetup.h" - -namespace lol -{ - -//----------------------------------------------------------------------------- -//CTor/DTor -SceneSetup::SceneSetup(std::string const& name) -{ - m_name = name; - m_clear_color = vec4(vec3::zero, 1.f); - m_show_gizmo = true; - m_show_lights = true; -} - -//---- -SceneSetup::~SceneSetup() -{ - Shutdown(true); -} - -//----------------------------------------------------------------------------- -bool SceneSetup::Startup() -{ - for (int i = 0; i < m_lights.count(); i++) - Ticker::Ref(m_lights[i]); - return true; -} - -//----------------------------------------------------------------------------- -bool SceneSetup::Shutdown(bool destroy) -{ - for (int i = 0; i < m_lights.count(); i++) - if (m_lights[i]->IsTicked()) - Ticker::Unref(m_lights[i]); - - if (destroy) - m_lights.clear(); - return true; -} - -//----------------------------------------------------------------------------- -void SceneSetup::AddLight(LightType type) -{ - m_last_cmd = SceneSetup::Command::AddLight; - m_lights << new Light(); - m_lights.last()->SetType(type); -} - -//----------------------------------------------------------------------------- -void SceneSetup::SetupScene() -{ - m_last_cmd = SceneSetup::Command::SetupScene; -} - -//----------------------------------------------------------------------------- -void SceneSetup::SetPosition(vec3 const& v) -{ - switch (m_last_cmd.ToScalar()) - { - case SceneSetup::Command::AddLight: - m_lights.last()->SetPosition(v); - break; - } -} - -//----------------------------------------------------------------------------- -void SceneSetup::SetLookAt(vec3 const& v) -{ - switch (m_last_cmd.ToScalar()) - { - case SceneSetup::Command::AddLight: - //TODO: Do better - m_lights.last()->SetPosition(v - m_lights.last()->GetPosition()); - break; - } -} - -//----------------------------------------------------------------------------- -void SceneSetup::SetColor(vec4 const& c) -{ - switch (m_last_cmd.ToScalar()) - { - case SceneSetup::Command::AddLight: - m_lights.last()->SetColor(c); - break; - case SceneSetup::Command::SetupScene: - m_clear_color = c; - break; - } -} - -//----------------------------------------------------------------------------- -void SceneSetup::Show(SceneSetup::Display const& d) -{ - Set(d, DisplayFlag::On); -} - -//----------------------------------------------------------------------------- -void SceneSetup::Hide(SceneSetup::Display const& d) -{ - Set(d, DisplayFlag::Off); -} - -//----------------------------------------------------------------------------- -void SceneSetup::Toggle(SceneSetup::Display const& d) -{ - Set(d, DisplayFlag::Toggle); -} - -//----------------------------------------------------------------------------- -void SceneSetup::Set(SceneSetup::Display const& d, DisplayFlag const& f) -{ - bool value = f == DisplayFlag::On ? true : false; - switch (m_last_cmd.ToScalar()) - { - case SceneSetup::Command::SetupScene: - switch (d.ToScalar()) - { - case SceneSetup::Display::Gizmo: - m_show_gizmo = f == DisplayFlag::Toggle ? !m_show_gizmo : value; - break; - case SceneSetup::Display::Light: - m_show_lights = f == DisplayFlag::Toggle ? !m_show_lights : value; - break; - } - break; - } -} - -//----------------------------------------------------------------------------- -SceneSetupLuaObject::SceneSetupLuaObject(std::string const& name) : LuaObject() -{ - m_setup = new SceneSetup(name); - SceneSetupLuaLoader::RegisterSetup(m_setup); -} - -//----------------------------------------------------------------------------- -SceneSetupLuaObject::~SceneSetupLuaObject() -{ -} - -//----------------------------------------------------------------------------- -SceneSetupLuaObject* SceneSetupLuaObject::New(lua_State* l, int arg_nb) -{ - UNUSED(arg_nb); - auto s = LuaStack::Begin(l); - auto n = s.Get(); - return new SceneSetupLuaObject(n); -} - -//-- Setup command ------------------------------------------------------------ -int SceneSetupLuaObject::AddLight(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - auto t = s.Get(); - o->m_setup->AddLight(FindValue(t)); - return s.End(); -} -int SceneSetupLuaObject::SetupScene(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - o->m_setup->SetupScene(); - return s.End(); -} -//-- main funcs --------------------------------------------------------------- -int SceneSetupLuaObject::SetPosition(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - auto c = s.Get(); - o->m_setup->SetPosition(c); - return s.End(); -} -int SceneSetupLuaObject::SetLookAt(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - auto c = s.Get(); - o->m_setup->SetLookAt(c); - return s.End(); -} -int SceneSetupLuaObject::SetColor(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - auto c = s.Get(); - o->m_setup->SetColor(c); - return s.End(); -} -int SceneSetupLuaObject::Show(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - auto e = s.GetEnum(); - o->m_setup->Show(e); - return s.End(); -} -int SceneSetupLuaObject::Hide(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - auto e = s.GetEnum(); - o->m_setup->Hide(e); - return s.End(); -} -int SceneSetupLuaObject::Toggle(lua_State* l) -{ - auto s = LuaStack::Begin(l); - auto o = s.GetPtr(); - auto e = s.GetEnum(); - o->m_setup->Toggle(e); - return s.End(); -} - -//----------------------------------------------------------------------------- -const LuaObjectLibrary* SceneSetupLuaObject::GetLib() -{ - typedef SceneSetupLuaObject SSLO; - static const LuaObjectLibrary lib = LuaObjectLibrary( - "SceneSetup", - //Statics - { { nullptr, nullptr } }, - //Methods - { - //----------------------------------------------------------------- - { "AddLight", AddLight }, - { "Setup", SetupScene }, - //-- main funcs - { "Position", SetPosition }, - { "LookAt", SetLookAt }, - { "Color", SetColor }, - { "Show", Show }, - { "Hide", Hide }, - { "Toggle", Toggle }, - }, - //Variables - { { nullptr, nullptr, nullptr } }); - return &lib; -} - -//----------------------------------------------------------------------------- -std::map SceneSetupLuaLoader::m_setups; -SceneSetupLuaLoader::SceneSetupLuaLoader() : LuaLoader() -{ - lua_State* l = GetLuaState(); - - LuaObjectHelper::Register(l); -} - -//----------------------------------------------------------------------------- -SceneSetupLuaLoader::~SceneSetupLuaLoader() { } - -//----------------------------------------------------------------------------- -static array g_instances; -void SceneSetupLuaLoader::Store(LuaObject* obj) -{ - SceneSetupLuaObject* ezm = static_cast(obj); - g_instances << ezm; -} - -//----------------------------------------------------------------------------- -array& SceneSetupLuaLoader::GetInstances() -{ - return g_instances; -} - -//----------------------------------------------------------------------------- -void SceneSetupLuaLoader::RegisterSetup(SceneSetup* setup) -{ - m_setups[setup->m_name] = setup; -} - -//----------------------------------------------------------------------------- -bool SceneSetupLuaLoader::GetRegisteredSetups(std::map& setups) -{ - setups = m_setups; - return m_setups.size() > 0; -} - -//----------------------------------------------------------------------------- -bool SceneSetupLuaLoader::GetLoadedSetups(std::map& setups) -{ - return GetRegisteredSetups(setups); -} - - -} /* namespace lol */ diff --git a/doc/samples/meshviewer/scenesetup.h b/doc/samples/meshviewer/scenesetup.h deleted file mode 100644 index 9d20284d..00000000 --- a/doc/samples/meshviewer/scenesetup.h +++ /dev/null @@ -1,227 +0,0 @@ -// -// Lol Engine — Mesh viewer -// -// Copyright © 2003—2015 Benjamin “Touky” Huet -// © 2013—2018 Sam Hocevar -// -// Lol Engine is free software. It comes without any warranty, to -// the extent permitted by applicable law. You can redistribute it -// and/or modify it under the terms of the Do What the Fuck You Want -// to Public License, Version 2, as published by the WTFPL Task Force. -// See http://www.wtfpl.net/ for more details. -// - -#pragma once - -// -// The Scene setup class -// ---------------- -// - -#include -#include - -namespace lol -{ - -//----------------------------------------------------------------------------- -class SceneSetup -{ - friend class SceneSetupLuaLoader; - friend class SceneSetupLuaObject; - -public: - //CTor/DTor - SceneSetup() : SceneSetup("default") { } - SceneSetup(std::string const& name); - ~SceneSetup(); - - static std::string GetName() { return ""; } - - //-- - bool Startup(); - bool Shutdown(bool destroy=false); - - //-- Setup command - void AddLight(LightType type); - void SetupScene(); - - //-- main funcs - void SetPosition(vec3 const& v); - void SetLookAt(vec3 const& v); - void SetColor(vec4 const& c); - - //------------------------------------------------------------------------- - struct DisplayBase : public StructSafeEnum - { - enum Type - { - Gizmo, - Light, - - Max - }; - protected: - virtual bool BuildEnumMap(std::map& enum_map) - { - enum_map[Gizmo] = "Gizmo"; - enum_map[Light] = "Light"; - return true; - } - }; - typedef SafeEnum Display; - - void Show(Display const& d); - void Hide(Display const& d); - void Toggle(Display const& d); -protected: - void Set(Display const& d, DisplayFlag const& f); - -protected: - //------------------------------------------------------------------------- - struct CommandBase : public StructSafeEnum - { - enum Type - { - AddLight, - SetupScene, - - Max - }; - protected: - virtual bool BuildEnumMap(std::map& enum_map) - { - enum_map[AddLight] = "AddLight"; - enum_map[SetupScene] = "SetupScene"; - return true; - } - }; - typedef SafeEnum Command; - -public: - //-- - std::string m_name; - Command m_last_cmd; - vec4 m_clear_color; - array m_lights; - array m_custom_cmd; - bool m_show_gizmo; - bool m_show_lights; -}; - -//----------------------------------------------------------------------------- -class SceneSetupLuaObject : public LuaObject -{ -public: - //------------------------------------------------------------------------- - SceneSetupLuaObject(std::string const& name); - virtual ~SceneSetupLuaObject(); - - //------------------------------------------------------------------------- - static SceneSetupLuaObject* New(lua_State* l, int arg_nb); - static const LuaObjectLibrary* GetLib(); - - //------------------------------------------------------------------------- -public: - //-- Setup command - static int AddLight(lua_State* l); - static int SetupScene(lua_State* l); - //-- main funcs - static int SetPosition(lua_State* l); - static int SetLookAt(lua_State* l); - static int SetColor(lua_State* l); - static int Show(lua_State* l); - static int Hide(lua_State* l); - static int Toggle(lua_State* l); - - //-- Setup command - void AddLight(LightType type); - void SetupScene(); - - //-- main funcs - void SetPosition(vec3& v); - void SetLookAt(vec3& v); - void SetColor(vec4& c); - void Show(SceneSetup::Display const& d); - void Hide(SceneSetup::Display const& d); - void Toggle(SceneSetup::Display const& d); - -private: - SceneSetup* m_setup = nullptr; -}; - -//----------------------------------------------------------------------------- -class SceneSetupLuaLoader : public LuaLoader -{ - friend class SceneSetupLuaObject; -public: - SceneSetupLuaLoader(); - virtual ~SceneSetupLuaLoader(); - //Virtual Store lua object ------------------------------------------------ - virtual void Store(LuaObject* obj); - array& GetInstances(); - - //------------------------------------------------------------------------- -protected: - static void RegisterSetup(SceneSetup* setup); - static bool GetRegisteredSetups(std::map& setups); -public: - bool GetLoadedSetups(std::map& setups); - -private: - static std::map m_setups; -}; - -/* -addlight { return token::T_ADDLIGHT; } -position { return token::T_OBJPOSITION; } -lookat { return token::T_OBJLOOKAT; } -color { return token::T_OBJCOLOR; } -clearcolor { return token::T_CLEARCOLOR; } - -showgizmo { return token::T_SHOWGIZMO; } -showlight { return token::T_SHOWLIGHT; } -custom { return token::T_CUSTOMCMD; } - -custom { return token::T_CUSTOMCMD; } - -light_command: -T_ADDLIGHT { uc.m_sstp.m_lights << new Light(); uc.m_last_cmd = "ADDLIGHT"; } -| T_ADDLIGHT fv { uc.m_sstp.m_lights << new Light(); uc.m_last_cmd = "ADDLIGHT"; -uc.m_sstp.m_lights.last()->SetType(LightType($2)); } -| T_ADDLIGHT svv { uc.m_sstp.m_lights << new Light(); uc.m_last_cmd = "ADDLIGHT"; -uc.m_sstp.m_lights.last()->SetType(FindValue($2)); } -; - -setup_command: -T_OBJPOSITION v3 { if (uc.m_last_cmd == "ADDLIGHT") -uc.m_sstp.m_lights.last()->SetPosition(vec3($2[0], $2[1], $2[2])); } -| T_OBJLOOKAT v3 { if (uc.m_last_cmd == "ADDLIGHT") -{ -} } -| T_OBJCOLOR v4{ if (uc.m_last_cmd == "ADDLIGHT") -uc.m_sstp.m_lights.last()->SetColor(vec4($2[0], $2[1], $2[2], $2[3])); } -| T_OBJCOLOR COLOR{ uint32_t x = $2; -ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); -vec4 vv = vec4(v) * (1.f / 255.f); -if (uc.m_last_cmd == "ADDLIGHT") -uc.m_sstp.m_lights.last()->SetColor(vv); } -; - -scene_command: -T_CLEARCOLOR v4{ uc.m_sstp.m_clear_color = vec4($2[0], $2[1], $2[2], $2[3]); } -T_CLEARCOLOR v3{ uc.m_sstp.m_clear_color = vec4($2[0], $2[1], $2[2], 1.f); } -| T_CLEARCOLOR COLOR{ uint32_t x = $2; ivec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff); -uc.m_sstp.m_clear_color = vec4(v) * (1.f / 255.f); } -| T_SHOWGIZMO bv{ uc.m_sstp.m_show_gizmo = $2; } -| T_SHOWLIGHT bv{ uc.m_sstp.m_show_lights = $2; } -; - -custom_command: -T_CUSTOMCMD svv sv{ uc.m_sstp.m_custom_cmd.push($2, $3); } -; - -*/ - -} /* namespace lol */ - diff --git a/doc/samples/meshviewer/scenesetupdictionnary.js b/doc/samples/meshviewer/scenesetupdictionnary.js deleted file mode 100644 index db1faa01..00000000 --- a/doc/samples/meshviewer/scenesetupdictionnary.js +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------- -//Command vars operations -//------------------------------------------------------------------------- -CmdVar("float", ["Fraction value", "0.0"]); -CmdVar("int", ["No decimal value", "0"]); -CmdVar("bool", ["Boolean value", "true/false", "1/0"]); -CmdVar("color", ["Red/Green/Blue/{Alpha}", - "HEXA: #ABC{D}", "      #AABBCC{DD}", - "FLOAT: f f f f", "      (f f f f)", "      (f)"]); -CmdVar("vec3", ["X/Y/Z as float", " f f f", "(f f f)", "(f)"]); - -//------------------------------------------------------------------------- -//scene operations -//------------------------------------------------------------------------- -CmdType(["addlight"], "Add a light to the scene.\nUse other commands after this one to fully setup.", [CmdArg("float", "type")]); -CmdType(["position"], "Set a position.\nWhen put after a light, sets its position.", [CmdArg("vec3", "pos")]); -CmdType(["color"], "Set a color.", [CmdArg("color", "color")]); -CmdType(["clearcolor"], "Sets the color used for screen clearing.", [CmdArg("color", "color")]); -CmdType(["showgizmo"], "If true, show the axis gizmo.", [CmdArg("bool", "show")]); -CmdType(["showlight"], "If true, show the light locations.", [CmdArg("bool", "show")]); - diff --git a/doc/samples/meshviewer/shinyfur.lolfx b/doc/samples/meshviewer/shinyfur.lolfx deleted file mode 100644 index f26c870d..00000000 --- a/doc/samples/meshviewer/shinyfur.lolfx +++ /dev/null @@ -1,117 +0,0 @@ - -[vert.glsl] -#version 130 - -in vec3 in_position; -in vec3 in_Normal; -in vec4 in_color; - -uniform mat4 u_modelview; -uniform mat4 u_view; -uniform mat4 u_projection; -uniform mat3 u_normalmat; -uniform float u_damage; - -out vec4 pass_vertex; /* View space */ -out vec3 pass_tnormal; -out vec4 pass_color; - -void main(void) -{ - vec4 vertex = vec4(in_position + (in_Normal * u_damage), 1.0); - float dam_perc = u_damage / (0.1 * 40); - vec3 vGravity = vec3(0.0, -0.981, 0.0) * 2.0; - float k = pow(dam_perc, 3); - vertex = u_modelview * vertex + u_view * vec4(vGravity * k, 1.0); - vec3 tnorm = normalize(u_normalmat * in_Normal); - - pass_vertex = vertex; - pass_tnormal = tnorm; - pass_color = in_color; - - gl_Position = u_projection * vertex; -} - -[frag.glsl] -#version 130 - -#if defined GL_ES -precision highp float; -#endif - -in vec4 pass_vertex; /* View space */ -in vec3 pass_tnormal; -in vec4 pass_color; - -uniform mat4 u_view; -uniform mat4 u_inv_view; -uniform mat4 u_inv_modelview; -uniform float u_damage; - -//Light list -uniform vec4 u_lights[8 * 2]; - -void main(void) -{ - /* Material properties */ - vec3 specular_reflect = vec3(0.8, 0.75, 0.4); - float specular_power = 60.0; - - /* World properties */ - vec3 ambient = vec3(0.7, 0.7, 0.7); - vec3 specular = vec3(0.0, 0.0, 0.0); - vec3 diffuse = vec3(0.0, 0.0, 0.0); - - /* Light precalculations */ - vec3 v = normalize(-pass_vertex.xyz); - - /* Apply lighting */ - for (int i = 0; i < 8; i++) - { - vec4 pos = u_lights[i * 2]; - vec4 color = u_lights[i * 2 + 1]; - vec3 s, r; - - if (pos.w > 0.0) - { - /* Point light -- no attenuation yet */ - s = normalize((u_view * pos).xyz - pass_vertex.xyz); - r = reflect(-s, pass_tnormal); - } - else - { - /* Directional light */ - s = normalize(-pos.xyz); - r = reflect(s, pass_tnormal); - } - - float sdotn = max(dot(s, pass_tnormal), 0.0); - diffuse += color.xyz * sdotn; - if (sdotn > 0.0) - specular += color.xyz * specular_reflect - * pow(max(dot(r, v), 0.0), specular_power); - } - - vec3 light = ambient + diffuse + specular; - - vec4 world_vertex = u_inv_modelview * pass_vertex; - vec4 world_normal = u_inv_modelview * vec4(pass_tnormal, 1.0); - - float dam_perc = u_damage / (0.1 * 40); - float PI = 3.14159265358979323846264; - dam_perc = (sin(PI * (dam_perc - 0.5)) * 0.5 + 0.5); - dam_perc *= dam_perc; - dam_perc = 1.0 - dam_perc; - float mod = 2.0; - float transp = dam_perc; - /* - abs(sin(world_vertex.x * mod) * dam_perc * 0.5 + 0.5) * - abs(sin(world_vertex.y * mod) * dam_perc * 0.5 + 0.5) * - abs(sin(world_vertex.z * mod) * dam_perc * 0.5 + 0.5) - */ - - //vec4 real_color = mix(pass_color, vec4(1.2, 1.2, 1.2, 1.0), u_damage); - // - u_damage - gl_FragColor = pass_color * vec4(light, (u_damage == 0)?(1.0):(transp)); -} - diff --git a/doc/samples/meshviewer/shinymvtexture.lolfx b/doc/samples/meshviewer/shinymvtexture.lolfx deleted file mode 100644 index b8fb3974..00000000 --- a/doc/samples/meshviewer/shinymvtexture.lolfx +++ /dev/null @@ -1,98 +0,0 @@ - -[vert.glsl] -#version 130 - -in vec3 in_position; -in vec3 in_Normal; -in vec4 in_color; -in vec2 in_texcoord; - -uniform mat4 u_modelview; -uniform mat4 u_view; -uniform mat4 u_projection; -uniform mat3 u_normalmat; - -out vec4 pass_vertex; /* View space */ -out vec3 pass_tnormal; -out vec4 pass_color; -out vec2 pass_texcoord; - -void main(void) -{ - vec4 vertex = u_modelview * vec4(in_position, 1.0); - vec3 tnorm = normalize(u_normalmat * in_Normal); - - pass_vertex = vertex; - pass_tnormal = tnorm; - pass_color = in_color; - pass_texcoord = in_texcoord; - - gl_Position = u_projection * vertex; -} - -[frag.glsl] -#version 130 - -#if defined GL_ES -precision highp float; -#endif - -in vec4 pass_vertex; /* View space */ -in vec3 pass_tnormal; -in vec4 pass_color; -in vec2 pass_texcoord; - -uniform mat4 u_view; -uniform mat4 u_inv_view; -uniform mat4 u_inv_modelview; -uniform sampler2D u_Texture; - -//Light list -uniform vec4 u_lights[8 * 2]; - -void main(void) -{ - /* Material properties */ - vec3 specular_reflect = vec3(0.8, 0.75, 0.4); - float specular_power = 60.0; - - /* World properties */ - vec3 ambient = vec3(0.7, 0.7, 0.7); - vec3 specular = vec3(0.0, 0.0, 0.0); - vec3 diffuse = vec3(0.0, 0.0, 0.0); - - /* Light precalculations */ - vec3 v = normalize(-pass_vertex.xyz); - - /* Apply lighting */ - for (int i = 0; i < 8; i++) - { - vec4 pos = u_lights[i * 2]; - vec4 color = u_lights[i * 2 + 1]; - vec3 s, r; - - if (pos.w > 0.0) - { - /* Point light -- no attenuation yet */ - s = normalize((u_view * pos).xyz - pass_vertex.xyz); - r = reflect(-s, pass_tnormal); - } - else - { - /* Directional light */ - s = normalize(-pos.xyz); - r = reflect(s, pass_tnormal); - } - - float sdotn = max(dot(s, pass_tnormal), 0.0); - diffuse += color.xyz * sdotn; - if (sdotn > 0.0) - specular += color.xyz * specular_reflect - * pow(max(dot(r, v), 0.0), specular_power); - } - - vec3 light = ambient + diffuse + specular; - - gl_FragColor = texture2D(u_Texture, pass_texcoord.xy) * pass_color * vec4(light, 1.0f); -} - diff --git a/lol.sln b/lol.sln index b9d4dfba..a7424270 100644 --- a/lol.sln +++ b/lol.sln @@ -44,8 +44,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "03_noise", "doc\tutorial\03 EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "04_texture", "doc\tutorial\04_texture.vcxproj", "{834852DB-EDB6-4FD0-BCF9-45CD01126962}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "meshviewer", "doc\samples\meshviewer\meshviewer.vcxproj", "{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "12_Voronoi", "doc\tutorial\12_Voronoi.vcxproj", "{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "07_input", "doc\tutorial\07_input.vcxproj", "{572E5B9C-7E19-489C-BD8A-E8401CFBBC47}" @@ -233,16 +231,6 @@ Global {834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|Win32.Build.0 = Release|Win32 {834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|x64.ActiveCfg = Release|x64 {834852DB-EDB6-4FD0-BCF9-45CD01126962}.Release|x64.Build.0 = Release|x64 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|ORBIS.ActiveCfg = Debug|Win32 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Win32.ActiveCfg = Debug|Win32 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Win32.Build.0 = Debug|Win32 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|x64.ActiveCfg = Debug|x64 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|x64.Build.0 = Debug|x64 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|ORBIS.ActiveCfg = Release|Win32 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Win32.ActiveCfg = Release|Win32 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Win32.Build.0 = Release|Win32 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|x64.ActiveCfg = Release|x64 - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|x64.Build.0 = Release|x64 {6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|ORBIS.ActiveCfg = Debug|Win32 {6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|Win32.ActiveCfg = Debug|Win32 {6BF81B39-EDC2-4227-9982-C2D8ABEA95AF}.Debug|x64.ActiveCfg = Debug|x64 @@ -326,7 +314,6 @@ Global {BCEE0132-8E24-49BE-AFEB-96DAD14396BA} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} {B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} {834852DB-EDB6-4FD0-BCF9-45CD01126962} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} - {7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} {6BF81B39-EDC2-4227-9982-C2D8ABEA95AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} {572E5B9C-7E19-489C-BD8A-E8401CFBBC47} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} {E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} diff --git a/src/t/sys/thread.cpp b/src/t/sys/thread.cpp index 12f34825..8a35dff3 100644 --- a/src/t/sys/thread.cpp +++ b/src/t/sys/thread.cpp @@ -31,50 +31,6 @@ lolunit_declare_fixture(thread_test) { } - lolunit_declare_test(threads) - { - msg::info("%s START\n", m_manager.GetName().c_str()); - //Start threads manager - m_manager.Start(); - msg::info("%s STARTED\n", m_manager.GetName().c_str()); - - UnitTestJob job[4]; - lolunit_assert_equal(0, m_manager.Test_GetDispatchCount()); - m_manager.AddJob(&job[0]); - lolunit_assert_equal(1, m_manager.Test_GetDispatchCount()); - lolunit_assert_equal(false, job[0].IsDone()); - bool dispatch_check = true; - while (!m_manager.IsDone()) - { - m_manager.tick_game(1.f / 60.f); - if (dispatch_check) - { - lolunit_assert_equal(0, m_manager.Test_GetDispatchCount()); -#if !defined(LOL_FEATURE_THREADS) || !LOL_FEATURE_THREADS - lolunit_assert_equal(0, m_manager.Test_GetDispatchedCount()); -#else //LOL_FEATURE_THREADS - lolunit_assert_equal(1, m_manager.Test_GetDispatchedCount()); -#endif - m_manager.AddJob(&job[1]); - m_manager.AddJob(&job[2]); - m_manager.AddJob(&job[3]); - dispatch_check = false; - } - } - lolunit_assert_equal(true, job[0].IsDone()); - lolunit_assert_equal(true, job[1].IsDone()); - lolunit_assert_equal(true, job[2].IsDone()); - lolunit_assert_equal(true, job[3].IsDone()); - array results; - m_manager.GetWorkResult(results); - lolunit_assert_equal(4, results.count()); - - msg::info("%s STOP\n", m_manager.GetName().c_str()); - //Stop manager - m_manager.Stop(); - msg::info("%s STOPPED\n", m_manager.GetName().c_str()); - } - lolunit_declare_test(queue_try_push) { queue q;