| @@ -1,7 +1,7 @@ | |||
| // | |||
| // Lol Engine — Sample math program: check trigonometric functions | |||
| // Lol Engine — Sample math program: polynomials | |||
| // | |||
| // Copyright © 2005—2011 Sam Hocevar <sam@hocevar.net> | |||
| // Copyright © 2005—2017 Sam Hocevar <sam@hocevar.net> | |||
| // | |||
| // This program is free software. It comes without any warranty, to | |||
| // the extent permitted by applicable law. You can redistribute it | |||
| @@ -20,28 +20,11 @@ | |||
| using namespace lol; | |||
| mat4 multiply_copy(mat4 m1, mat4 m2, mat4 m3) | |||
| { | |||
| return m1 * m2 * m3; | |||
| } | |||
| mat4 multiply_ref(mat4 const &m1, mat4 const &m2, mat4 const &m3) | |||
| { | |||
| return m1 * m2 * m3; | |||
| } | |||
| int main(int argc, char **argv) | |||
| { | |||
| UNUSED(argc, argv); | |||
| mat4 a = mat4::rotate(0.1f, vec3(1.f, 1.f, 0.f)); | |||
| mat4 b = mat4::rotate(0.1f, vec3(0.f, 0.f, 1.f)); | |||
| mat4 m = mat4(1.f); | |||
| for (int i = 0; i < 40000000; ++i) | |||
| //m = multiply_copy(a, m, b); | |||
| m = multiply_ref(a, m, b); | |||
| m.printf(); | |||
| polynomial<polynomial<float>> p; | |||
| return EXIT_SUCCESS; | |||
| } | |||
| @@ -64,9 +64,9 @@ void audio::set_channels(int channels) | |||
| void audio::set_volume(int channel, int volume) | |||
| { | |||
| #if defined LOL_USE_SDL_MIXER | |||
| Mix_Volume(channel,volume); | |||
| Mix_Volume(channel, volume); | |||
| #else | |||
| UNUSED(channel); | |||
| UNUSED(channel, volume); | |||
| #endif | |||
| } | |||
| @@ -220,7 +220,6 @@ void Debug::DrawBox(vec2 a, vec2 b, mat2 transform, DCD data) | |||
| v[2] = b; | |||
| v[3] = vec2(b.x, a.y); | |||
| int i = 0; | |||
| Debug::DrawLine((transform * v[0]).xy, (transform * v[1]).xy, data); | |||
| Debug::DrawLine((transform * v[1]).xy, (transform * v[2]).xy, data); | |||
| Debug::DrawLine((transform * v[2]).xy, (transform * v[3]).xy, data); | |||
| @@ -253,7 +252,6 @@ void Debug::DrawCircle(vec2 a, vec2 s, DCD data) | |||
| //-- | |||
| void Debug::DrawCircle(vec3 a, vec3 x, vec3 y, DCD data) | |||
| { | |||
| Scene& scene = Scene::GetScene(); | |||
| float size = F_PI * 2.f * lol::max(length(x), length(y)); | |||
| int segment_nb = lol::max(1, (int)((size * .25f) / data.m_segment_size)); | |||
| for (int i = 0; i < segment_nb; i++) | |||
| @@ -272,7 +270,6 @@ void Debug::DrawCircle(vec3 a, vec3 x, vec3 y, DCD data) | |||
| //-- | |||
| void Debug::DrawCircle(vec2 a, vec2 x, vec2 y, DCD data) | |||
| { | |||
| Scene& scene = Scene::GetScene(); | |||
| float size = F_PI * 2.f * lol::max(length(x), length(y)); | |||
| int segment_nb = lol::max(1, (int)((size * .25f) / data.m_segment_size)); | |||
| for (int i = 0; i < segment_nb; i++) | |||
| @@ -318,7 +315,6 @@ void Debug::DrawCapsule(vec3 a, float s, vec3 h, DCD data) | |||
| //-- | |||
| void Debug::DrawCapsule(vec3 a, vec3 x, vec3 y, vec3 z, vec3 h, DCD data) | |||
| { | |||
| Scene& scene = Scene::GetScene(); | |||
| float size = F_PI * 2.f * lol::max(length(x), length(y)); | |||
| int segment_nb = lol::max(1, (int)((size * .25f) / data.m_segment_size)); | |||
| for (int i = -1; i < 2; i += 2) | |||
| @@ -97,7 +97,6 @@ void CsgBsp::AddTriangleToTree(int const &tri_idx, vec3 const &tri_p0, vec3 cons | |||
| { | |||
| //there are two intersections, no more. | |||
| vec3 isec_v[2] = { vec3(.0f), vec3(.0f) }; | |||
| int isec_i[2] = { 0, 0 }; | |||
| int isec_base = 0; | |||
| int isec_idx = 0; | |||
| @@ -108,7 +107,7 @@ void CsgBsp::AddTriangleToTree(int const &tri_idx, vec3 const &tri_p0, vec3 cons | |||
| if (TestRayVsPlane(v[i], v[(i + 1) % 3], | |||
| m_tree[leaf_idx].m_origin, m_tree[leaf_idx].m_normal, | |||
| isec_v[isec_idx])) | |||
| isec_i[isec_idx++] = i; | |||
| ++isec_idx; | |||
| else | |||
| isec_base = i; | |||
| } | |||
| @@ -274,7 +273,6 @@ int CsgBsp::TestTriangleToTree(vec3 const &tri_p0, vec3 const &tri_p1, vec3 cons | |||
| int isec_i[2] = { 0, 0 }; | |||
| int new_v_idx[2] = { 0, 0 }; | |||
| int isec_base = 0; | |||
| int isec_idx = 0; | |||
| int i = 0; | |||
| for (; i < m_tree[leaf_idx].m_tri_list.count(); i++) | |||
| @@ -351,11 +349,11 @@ int CsgBsp::TestTriangleToTree(vec3 const &tri_p0, vec3 const &tri_p1, vec3 cons | |||
| int v_idx0 = (isec_base == 1)?(1):(0); | |||
| int v_idx1 = (isec_base == 1)?(0):(1); | |||
| int tri_to_remove = tri_to_process.count() - 1; | |||
| #if 0 | |||
| //Leaf_type is the type for the triangle that is alone on its side. | |||
| int leaf_type = res_side[(isec_base + 2) % 3]; | |||
| int tri_to_remove = tri_to_process.count() - 1; | |||
| #if 0 | |||
| if (m_tree[leaf_idx].m_leaves[leaf_type] == LEAF_CURRENT && tri_to_process.last().m1.last() == 1) | |||
| tri_list.push(leaf_type, | |||
| t[(isec_base + 2) % 3], new_v_idx[v_idx1], new_v_idx[v_idx0]); | |||
| @@ -187,17 +187,18 @@ const LuaObjectLibrary* EasyMeshLuaObject::GetLib() | |||
| } | |||
| //----------------------------------------------------------------------------- | |||
| bool EasyMesh::Compile(char const *command, bool Execute) | |||
| bool EasyMesh::Compile(char const *command, bool execute) | |||
| { | |||
| bool res = false; | |||
| // FIXME: make this work again | |||
| UNUSED(command, execute); | |||
| #if 0 | |||
| EasyMeshCompiler mc(*this); | |||
| BD()->Enable(MeshBuildOperation::CommandRecording); | |||
| if ((res = mc.ParseString(command))) | |||
| { | |||
| BD()->Disable(MeshBuildOperation::CommandRecording); | |||
| if (Execute) | |||
| if (execute) | |||
| ExecuteCmdStack(); | |||
| } | |||
| #endif | |||
| @@ -259,6 +259,8 @@ EglApp::EglApp(char const *title, ivec2 res, float fps) : | |||
| Ticker::Setup(fps); | |||
| Video::Setup((ivec2)data->screen_size); | |||
| audio::init(); | |||
| #else | |||
| UNUSED(title, res, fps); | |||
| #endif | |||
| } | |||
| @@ -70,7 +70,7 @@ void Emitter::TickDraw(float seconds, Scene &scene) | |||
| for (int i = 0; i < data->nparticles; i++) | |||
| scene.AddTile(data->tileset, data->particles[i], | |||
| data->positions[i], 0, vec2(1.0f), 0.0f); | |||
| data->positions[i], vec2(1.0f), 0.0f); | |||
| } | |||
| void Emitter::AddParticle(int id, vec3 pos, vec3 vel) | |||
| @@ -69,7 +69,7 @@ void Entity::TickGame(float seconds) | |||
| void Entity::TickDraw(float seconds, Scene &scene) | |||
| { | |||
| (void)seconds; | |||
| UNUSED(seconds, scene); | |||
| #if !LOL_BUILD_RELEASE | |||
| if (m_tickstate != STATE_PRETICK_DRAW) | |||
| msg::error("invalid entity draw tick\n"); | |||
| @@ -89,7 +89,7 @@ void Font::Print(Scene &scene, vec3 pos, char const *str, vec2 scale, float spac | |||
| break; | |||
| default: | |||
| if (ch != ' ') | |||
| scene.AddTile(data->tileset, ch & 255, pos, 0, scale, 0.0f); | |||
| scene.AddTile(data->tileset, ch & 255, pos, scale, 0.0f); | |||
| pos.x += data->size.x * scale.x; | |||
| break; | |||
| } | |||
| @@ -320,6 +320,7 @@ static float cie_1931_xyz[] = | |||
| /* CIE 1964 Colorimetric Observer, aka. 10º Observer | |||
| * for wavelengths 360 to 830. */ | |||
| #if 0 | |||
| static float cie_1964_xyz[] = | |||
| { | |||
| /* 360 — 399 nm */ | |||
| @@ -571,6 +572,7 @@ static float cie_1964_xyz[] = | |||
| 1.747e-06f, 7.074e-07f, 0.0000000f, 1.647e-06f, 6.675e-07f, 0.0000000f, | |||
| 1.553e-06f, 6.297e-07f, 0.0000000f, | |||
| }; | |||
| #endif | |||
| vec3 Color::WavelengthToCIExyY(float nm) | |||
| { | |||
| @@ -152,7 +152,7 @@ image image::Median(ivec2 ksize) const | |||
| return ret; | |||
| } | |||
| image image::Median(array2d<float> const &kernel) const | |||
| image image::Median(array2d<float> const &ker) const | |||
| { | |||
| ivec2 const isize = size(); | |||
| image tmp = *this; | |||
| @@ -166,7 +166,7 @@ image image::Median(array2d<float> const &kernel) const | |||
| else | |||
| #endif | |||
| { | |||
| ivec2 const ksize = kernel.size(); | |||
| ivec2 const ksize = ker.size(); | |||
| array2d<vec3> list(ksize); | |||
| vec4 *srcp = tmp.lock<PixelFormat::RGBA_F32>(); | |||
| @@ -207,7 +207,7 @@ image image::Median(array2d<float> const &kernel) const | |||
| for (int j = 0; j < ksize.y; ++j) | |||
| for (int i = 0; i < ksize.x; ++i) | |||
| { | |||
| float d = kernel[i][j] / | |||
| float d = ker[i][j] / | |||
| (1e-10f + distance(median, list[i][j])); | |||
| s1 += list[i][j] * d; | |||
| s2 += d; | |||
| @@ -99,9 +99,11 @@ bool movie::open_file(char const *filename) | |||
| msg::error("could not write header: %s\n", ERROR_TO_STRING(ret)); | |||
| return false; | |||
| } | |||
| #endif | |||
| return true; | |||
| #else | |||
| UNUSED(filename); | |||
| return false; | |||
| #endif | |||
| } | |||
| bool movie::push_image(image &im) | |||
| @@ -144,6 +146,8 @@ bool movie::push_image(image &im) | |||
| return false; | |||
| } | |||
| } | |||
| #else | |||
| UNUSED(im); | |||
| #endif | |||
| return true; | |||
| @@ -63,6 +63,10 @@ struct LOL_ATTR_NODISCARD mat_t | |||
| inline vec_t<T,ROWS>& operator[](size_t n) { return m_data[n]; } | |||
| inline vec_t<T,ROWS> const& operator[](size_t n) const { return m_data[n]; } | |||
| template<class U> | |||
| friend std::ostream &operator<<(std::ostream &stream, | |||
| mat_t<U,COLS,ROWS> const &m); | |||
| private: | |||
| vec_t<T,ROWS> m_data[COLS]; | |||
| }; | |||
| @@ -131,10 +135,6 @@ struct LOL_ATTR_NODISCARD mat_t<T, 2, 2> | |||
| void printf() const; | |||
| String tostring() const; | |||
| template<class U> | |||
| friend std::ostream &operator<<(std::ostream &stream, | |||
| mat_t<U,2,2> const &m); | |||
| static const mat_t<T,2,2> identity; | |||
| private: | |||
| @@ -262,10 +262,6 @@ struct LOL_ATTR_NODISCARD mat_t<T, 3, 3> | |||
| void printf() const; | |||
| String tostring() const; | |||
| template<class U> | |||
| friend std::ostream &operator<<(std::ostream &stream, | |||
| mat_t<U,3,3> const &m); | |||
| static const mat_t<T,3,3> identity; | |||
| private: | |||
| @@ -442,10 +438,6 @@ struct LOL_ATTR_NODISCARD mat_t<T, 4, 4> | |||
| void printf() const; | |||
| String tostring() const; | |||
| template<class U> | |||
| friend std::ostream &operator<<(std::ostream &stream, | |||
| mat_t<U,4,4> const &m); | |||
| static const mat_t<T,4,4> identity; | |||
| private: | |||
| @@ -463,6 +455,24 @@ static_assert(sizeof(f16mat4) == 32, "sizeof(f16mat4) == 32"); | |||
| static_assert(sizeof(mat4) == 64, "sizeof(mat4) == 64"); | |||
| static_assert(sizeof(dmat4) == 128, "sizeof(dmat4) == 128"); | |||
| /* | |||
| * stdstream method implementations | |||
| */ | |||
| template<class U, int COLS, int ROWS> | |||
| std::ostream &operator<<(std::ostream &stream, | |||
| mat_t<U,COLS,ROWS> const &m) | |||
| { | |||
| for (int y = 0; y < ROWS; ++y) | |||
| { | |||
| stream << (y == 0 ? "(" : ", "); | |||
| for (int x = 0; x < COLS; ++x) | |||
| stream << (x == 0 ? "(" : ", ") << m[x][y]; | |||
| stream << ")"; | |||
| } | |||
| return stream << ")"; | |||
| } | |||
| /* | |||
| * Transpose any matrix | |||
| */ | |||
| @@ -321,6 +321,23 @@ struct LOL_ATTR_NODISCARD sqt_t | |||
| T s; | |||
| }; | |||
| /* | |||
| * stdstream method implementations | |||
| */ | |||
| template<typename U> | |||
| std::ostream &operator<<(std::ostream &stream, cmplx_t<U> const &c) | |||
| { | |||
| return stream << "(" << c.x << ", " << c.y << ")"; | |||
| } | |||
| template<typename U> | |||
| std::ostream &operator<<(std::ostream &stream, quat_t<U> const &q) | |||
| { | |||
| return stream << "(" << q.w << ", " << q.x << ", " | |||
| << q.y << ", " << q.z << ")"; | |||
| } | |||
| /* | |||
| * Common operations on transforms | |||
| */ | |||
| @@ -1017,6 +1017,29 @@ static_assert(sizeof(f16vec4) == 8, "sizeof(f16vec4) == 8"); | |||
| static_assert(sizeof(vec4) == 16, "sizeof(vec4) == 16"); | |||
| static_assert(sizeof(dvec4) == 32, "sizeof(dvec4) == 32"); | |||
| /* | |||
| * stdstream method implementations | |||
| */ | |||
| template<typename U> | |||
| std::ostream &operator<<(std::ostream &stream, vec_t<U,2> const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ")"; | |||
| } | |||
| template<typename U> | |||
| std::ostream &operator<<(std::ostream &stream, vec_t<U,3> const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ", " << v.z << ")"; | |||
| } | |||
| template<typename U> | |||
| std::ostream &operator<<(std::ostream &stream, vec_t<U,4> const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ", " | |||
| << v.z << ", " << v.w << ")"; | |||
| } | |||
| /* | |||
| * vec_t *(scalar, vec_t) | |||
| */ | |||
| @@ -346,6 +346,8 @@ void LolImGui::TickDraw(float seconds, Scene &scene) | |||
| } | |||
| void PrimitiveLolImGui::Render(Scene& scene, PrimitiveSource* primitive) | |||
| { | |||
| UNUSED(scene, primitive); | |||
| ImGuiIO& io = ImGui::GetIO(); | |||
| if (io.Fonts->TexID) | |||
| ImGui::Render(); | |||
| @@ -416,7 +418,7 @@ void LolImGui::RenderDrawListsMethod(ImDrawData* draw_data) | |||
| for (int n = 0; n < draw_data->CmdListsCount; n++) | |||
| { | |||
| const ImDrawList* cmd_list = draw_data->CmdLists[n]; | |||
| const unsigned char* vtx_buffer = (const unsigned char*)&cmd_list->VtxBuffer.front(); | |||
| /*const unsigned char* vtx_buffer = (const unsigned char*)&cmd_list->VtxBuffer.front();*/ | |||
| //Register uniforms | |||
| m_shader->SetUniform(m_ortho, ortho); | |||
| @@ -151,7 +151,7 @@ void Loader::StoreObject(lua_State* l, Object* obj) | |||
| //----------------------------------------------------------------------------- | |||
| bool Loader::ExecLuaFile(String const &lua) | |||
| { | |||
| const char* c = lua_pushstring(m_lua_state, lua.C()); | |||
| lua_pushstring(m_lua_state, lua.C()); | |||
| int status = LuaBaseData::LuaDoFile(m_lua_state); | |||
| return status == 0; | |||
| } | |||
| @@ -123,7 +123,7 @@ namespace lol | |||
| //We first need to find two points intersecting, no matter on which triangle. | |||
| for (int i = 0; i < 2 && isecIdx < 2; i++) | |||
| { | |||
| int found_isec = -1; | |||
| /*int found_isec = -1;*/ | |||
| for (int j = 0; j < 3 && isecIdx < 2; j++) | |||
| { | |||
| int pIdx = j + i * 3; | |||
| @@ -150,7 +150,7 @@ namespace lol | |||
| //if it's the second intersection, we need it to be different from the first one. | |||
| (isecIdx == 1 && length(isec[0] - isec[1]) > TestEpsilon::Get())) | |||
| { | |||
| found_isec = i; | |||
| /*found_isec = i;*/ | |||
| isecIdx++; | |||
| } | |||
| } | |||
| @@ -172,11 +172,9 @@ namespace lol | |||
| vec3 &isec_p) | |||
| { | |||
| vec3 rayD0 = ray_p01 - ray_p00; | |||
| float rayS0 = length(rayD0); | |||
| vec3 rayD0N = normalize(rayD0); | |||
| vec3 rayD1 = ray_p11 - ray_p10; | |||
| float rayS1 = length(rayD1); | |||
| vec3 rayD1N = normalize(rayD1); | |||
| vec3 rayP0P1 = ray_p10 - ray_p00; | |||
| @@ -92,61 +92,5 @@ template<> String mat4::tostring() const | |||
| p[0][3], p[1][3], p[2][3], p[3][3]); | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, ivec2 const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, ivec3 const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ", " << v.z << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, ivec4 const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ", " | |||
| << v.z << ", " << v.w << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, vec2 const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, cmplx const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, vec3 const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ", " << v.z << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, vec4 const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ", " | |||
| << v.z << ", " << v.w << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, quat const &v) | |||
| { | |||
| return stream << "(" << v.x << ", " << v.y << ", " | |||
| << v.z << ", " << v.w << ")"; | |||
| } | |||
| template<> std::ostream &operator<<(std::ostream &stream, mat4 const &m) | |||
| { | |||
| stream << "((" << m[0][0] << ", " << m[1][0] | |||
| << ", " << m[2][0] << ", " << m[3][0] << "), "; | |||
| stream << "(" << m[0][1] << ", " << m[1][1] | |||
| << ", " << m[2][1] << ", " << m[3][1] << "), "; | |||
| stream << "(" << m[0][2] << ", " << m[1][2] | |||
| << ", " << m[2][2] << ", " << m[3][2] << "), "; | |||
| stream << "(" << m[0][3] << ", " << m[1][3] | |||
| << ", " << m[2][3] << ", " << m[3][3] << "))"; | |||
| return stream; | |||
| } | |||
| } /* namespace lol */ | |||
| @@ -132,11 +132,13 @@ void SubMesh::Render() | |||
| attribs[j] = m_shader->GetAttribLocation(usage, usages[usage_index]++); | |||
| } | |||
| vertex_count = m_vbos[i]->GetSize() / m_vdecl->GetStream(i).GetSize(); | |||
| vertex_count += m_vbos[i]->GetSize() / m_vdecl->GetStream(i).GetSize(); | |||
| m_vdecl->SetStream(m_vbos[i], attribs); | |||
| } | |||
| UNUSED(vertex_count); | |||
| for (int i = 0; i < m_textures.count(); ++i) | |||
| { | |||
| // TODO: might be good to cache this | |||
| @@ -39,6 +39,9 @@ void PrimitiveMesh::Render(Scene& scene, PrimitiveSource* primitive) | |||
| ShaderUniform u_model, u_modelview, u_normalmat, uni_tex, uni_texsize; | |||
| ShaderAttrib a_pos, a_tex; | |||
| /* FIXME: ignored for now */ | |||
| UNUSED(primitive); | |||
| { | |||
| /* If this primitive uses a new shader, update attributes */ | |||
| if (m_submesh->GetShader() != shader) | |||
| @@ -58,6 +58,8 @@ static inline void gpu_marker(char const *message) | |||
| #if LOL_USE_GLEW | |||
| if (GLEW_GREMEDY_string_marker) | |||
| glStringMarkerGREMEDY(0, message); | |||
| #else | |||
| UNUSED(message); | |||
| #endif | |||
| } | |||
| @@ -498,7 +500,7 @@ void Scene::ReleaseAllPrimitiveRenderers(uintptr_t key) | |||
| } | |||
| //----------------------------------------------------------------------------- | |||
| void Scene::AddTile(TileSet *tileset, int id, vec3 pos, int o, vec2 scale, float radians) | |||
| void Scene::AddTile(TileSet *tileset, int id, vec3 pos, vec2 scale, float radians) | |||
| { | |||
| ASSERT(id < tileset->GetTileCount()); | |||
| @@ -582,7 +584,7 @@ void Scene::DisableDisplay() | |||
| static bool do_pp = true; | |||
| void Scene::pre_render(float seconds) | |||
| void Scene::pre_render(float) | |||
| { | |||
| gpu_marker("Pre Render"); | |||
| @@ -615,7 +617,7 @@ void Scene::render(float seconds) | |||
| render_lines(seconds); | |||
| } | |||
| void Scene::post_render(float seconds) | |||
| void Scene::post_render(float) | |||
| { | |||
| gpu_marker("Post Render"); | |||
| @@ -230,7 +230,7 @@ public: | |||
| /* FIXME: this should be deprecated -- it doesn't really match | |||
| * the architecture we want to build */ | |||
| void AddTile(TileSet *tileset, int id, vec3 pos, int o, vec2 scale, float radians); | |||
| void AddTile(TileSet *tileset, int id, vec3 pos, vec2 scale, float radians); | |||
| void AddTile(TileSet *tileset, int id, mat4 model); | |||
| public: | |||
| @@ -46,7 +46,7 @@ void Sprite::TickDraw(float seconds, Scene &scene) | |||
| { | |||
| Entity::TickDraw(seconds, scene); | |||
| scene.AddTile(data->tileset, data->id, m_position, 0, vec2(1.0f), 0.0f); | |||
| scene.AddTile(data->tileset, data->id, m_position, vec2(1.0f), 0.0f); | |||
| } | |||
| Sprite::~Sprite() | |||
| @@ -25,6 +25,10 @@ | |||
| # include <dirent.h> | |||
| #endif | |||
| #if defined HAVE_UNISTD_H | |||
| # include <unistd.h> | |||
| #endif | |||
| #include <atomic> | |||
| #include <sys/stat.h> | |||
| @@ -60,6 +64,7 @@ class FileData | |||
| case StreamType::StdOut: m_fd = stdout; break; | |||
| case StreamType::StdErr: m_fd = stderr; break; | |||
| #endif | |||
| default: break; | |||
| } | |||
| } | |||
| @@ -352,6 +357,8 @@ class DirectoryData | |||
| void Open(String const &directory, FileAccess mode) | |||
| { | |||
| UNUSED(mode); /* FIXME */ | |||
| m_type = StreamType::File; | |||
| #if __ANDROID__ | |||
| /* FIXME: not implemented */ | |||
| @@ -540,6 +547,7 @@ bool Directory::GetContent(array<String>* files, array<Directory>* directories) | |||
| { | |||
| array<String> sfiles, sdirectories; | |||
| bool found_some = m_data->GetContentList(&sfiles, &sdirectories); | |||
| UNUSED(found_some); | |||
| if (directories) | |||
| for (int i = 0; i < sdirectories.count(); i++) | |||
| @@ -608,8 +616,8 @@ bool Directory::SetCurrent(String directory) | |||
| String result = directory; | |||
| result.replace('/', '\\', true); | |||
| return !!SetCurrentDirectory(result.C()); | |||
| #elif HAVE_STDIO_H | |||
| /* FIXME: not implemented */ | |||
| #elif HAVE_UNISTD_H | |||
| chdir(directory.C()); | |||
| #endif | |||
| return false; | |||
| } | |||
| @@ -46,21 +46,21 @@ protected: | |||
| */ | |||
| TileSet::TileSet(char const *path) | |||
| : m_tileset_data(new TileSetData()), | |||
| m_palette(nullptr), | |||
| TextureImage(path) | |||
| : TextureImage(path), | |||
| m_tileset_data(new TileSetData()), | |||
| m_palette(nullptr) | |||
| { | |||
| } | |||
| TileSet::TileSet(char const *path, Image* image) | |||
| : TextureImage(path, image), | |||
| : TextureImage(path, image), | |||
| m_tileset_data(new TileSetData()), | |||
| m_palette(nullptr) | |||
| { | |||
| } | |||
| TileSet::TileSet(char const *path, Image* image, array<ivec2, ivec2>& tiles) | |||
| : TextureImage(path, image), | |||
| : TextureImage(path, image), | |||
| m_tileset_data(new TileSetData()), | |||
| m_palette(nullptr) | |||
| { | |||
| @@ -121,6 +121,8 @@ void Video::Capture(uint32_t *buffer) | |||
| buffer[j * width + i] = buffer[(height - j - 1) * width + i]; | |||
| buffer[(height - j - 1) * width + i] = tmp; | |||
| } | |||
| #else | |||
| UNUSED(buffer); | |||
| #endif | |||
| } | |||