#ifndef SFW_H #define SFW_H // https://github.com/Relintai/sfw /* Copyright (c) 2023-present Péter Magyar. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // TODO gather all licenses to here #include #include #include #include //--STRIP //no includes //--STRIP {{FILE:sfw/core/int_types.h}} //--STRIP //no includes //--STRIP {{FILE:sfw/core/math_defs.h}} //--STRIP //no includes //--STRIP {{FILE:sfw/core/error_list.h}} //--STRIP //no includes //--STRIP {{FILE:sfw/core/logger.h}} //--STRIP //#include "core/int_types.h" //#include "core/error_list.h" //--STRIP {{FILE:sfw/core/typedefs.h}} //--STRIP //#include "core/int_types.h" //--STRIP {{FILE:sfw/core/stime.h}} //--STRIP //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/safe_refcount.h}} //--STRIP //#include "core/logger.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/error_macros.h}} //--STRIP //#include "core/error_macros.h" //#include "core/safe_refcount.h" //--STRIP {{FILE:sfw/core/memory.h}} //--STRIP //#include "core/error_list.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/mutex.h}} //--STRIP //#include "core/error_list.h" //--STRIP {{FILE:sfw/core/rw_lock.h}} //--STRIP //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/spin_lock.h}} //--STRIP //#include "core/mutex.h" //--STRIP {{FILE:sfw/core/thread_safe.h}} //--STRIP //#include "core/error_macros.h" //#include "core/math_defs.h" //#include "core/random_pcg.h" //#include "core/typedefs.h" //#include "core/pcg.h" //--STRIP {{FILE:sfw/core/math_funcs.h}} //--STRIP //Simple almost dependencyless containers //--STRIP //--STRIP //#include "core/error_list.h" //#include "core/error_macros.h" //#include "core/memory.h" //#include "core/safe_refcount.h" //--STRIP {{FILE:sfw/core/cowdata.h}} //--STRIP //#include "core/error_macros.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/sort_array.h}} //--STRIP //#include "core/error_macros.h" //#include "core/memory.h" //--STRIP {{FILE:sfw/core/rb_map.h}} //--STRIP //#include "core/memory.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/rb_set.h}} //--STRIP //#include "cowdata.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/vmap.h}} //--STRIP //#include "cowdata.h" //#include "core/sort_array.h" //#include "core/error_macros.h" //#include "core/memory.h" //--STRIP {{FILE:sfw/core/vector.h}} //--STRIP //#include "core/vector.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/vset.h}} //--STRIP //#include "core/sort_array.h" //#include "core/error_macros.h" //#include "core/memory.h" //--STRIP {{FILE:sfw/core/list.h}} //--STRIP //#include "core/vector.h" //--STRIP {{FILE:sfw/core/ring_buffer.h}} //--STRIP //#include "core/memory.h" //#include "spin_lock.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/paged_allocator.h}} //--STRIP //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/pool_allocator.h}} //--STRIP //Strings they need vector.h, and cowdata.h //--STRIP //--STRIP //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/char_range.inc}} //--STRIP //#include "core/typedefs.h" //#include "core/char_range.inc" //--STRIP {{FILE:sfw/core/char_utils.h}} //--STRIP //#include "cowdata.h" //#include "core/vector.h" //#include "char_utils.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/ustring.h}} //--STRIP //#include "core/mutex.h" //#include "core/safe_refcount.h" //#include "core/ustring.h" //--STRIP {{FILE:sfw/core/string_name.h}} //--STRIP //Needs ustring.h //--STRIP //--STRIP //#include "core/memory.h" //#include "core/mutex.h" //#include "pool_allocator.h" //#include "rw_lock.h" //#include "core/safe_refcount.h" //#include "core/ustring.h" //--STRIP {{FILE:sfw/core/pool_vector.h}} //--STRIP //#include "core/pool_vector.h" //#include "core/sort_array.h" //#include "core/vector.h" //#include "core/error_macros.h" //#include "core/memory.h" //--STRIP {{FILE:sfw/core/tight_local_vector.h}} //--STRIP //#include "core/pool_vector.h" //#include "core/sort_array.h" //#include "core/vector.h" //#include "core/error_macros.h" //#include "core/memory.h" //--STRIP {{FILE:sfw/core/local_vector.h}} //--STRIP //Math classes //--STRIP //--STRIP //#include "core/math_funcs.h" //#include "core/ustring.h" //--STRIP {{FILE:sfw/core/color.h}} //--STRIP //#include "core/math_funcs.h" //#include "core/error_macros.h" //--STRIP {{FILE:sfw/core/vector2.h}} //--STRIP //#include "core/error_macros.h" //#include "core/math_funcs.h" //#include "core/vector2.h" //--STRIP {{FILE:sfw/core/vector2i.h}} //--STRIP //#include "core/vector2.h" // also includes math_funcs and ustring //#include "core/vector2i.h" //--STRIP {{FILE:sfw/core/rect2.h}} //--STRIP //#include "core/vector2i.h" // also includes math_funcs and ustring //--STRIP {{FILE:sfw/core/rect2i.h}} //--STRIP //#include "core/math_funcs.h" //#include "core/ustring.h" //--STRIP {{FILE:sfw/core/vector3.h}} //--STRIP //#include "core/error_macros.h" //#include "core/math_funcs.h" //--STRIP {{FILE:sfw/core/vector3i.h}} //--STRIP //#include "core/math_defs.h" //#include "core/math_funcs.h" //#include "core/ustring.h" //--STRIP {{FILE:sfw/core/vector4.h}} //--STRIP //#include "core/error_macros.h" //#include "core/math_funcs.h" //--STRIP {{FILE:sfw/core/vector4i.h}} //--STRIP //#include "core/vector3.h" //--STRIP {{FILE:sfw/core/plane.h}} //--STRIP //#include "core/math_defs.h" //#include "core/plane.h" //#include "core/vector3.h" //--STRIP {{FILE:sfw/core/aabb.h}} //--STRIP //#include "core/aabb.h" //#include "core/plane.h" //#include "core/transform.h" //#include "core/vector3.h" //--STRIP {{FILE:sfw/core/face3.h}} //--STRIP //#include "core/math_defs.h" //#include "core/math_funcs.h" //#include "core/vector3.h" //#include "core/ustring.h" //--STRIP {{FILE:sfw/core/quaternion.h}} //--STRIP //#include "core/vector.h" //#include "core/math_defs.h" //#include "core/vector3.h" //#include "core/math_defs.h" //#include "core/math_funcs.h" //#include "core/ustring.h" //#include "core/vector4.h" //--STRIP {{FILE:sfw/core/projection.h}} //--STRIP //#include "core/quaternion.h" //#include "core/vector3.h" //#include "core/vector3i.h" //--STRIP {{FILE:sfw/core/basis.h}} //--STRIP //#include "core/pool_vector.h" //#include "core/rect2.h" // also includes vector2, math_funcs, and ustring //#include "core/rect2i.h" // also includes vector2i, math_funcs, and ustring //--STRIP {{FILE:sfw/core/transform_2d.h}} //--STRIP //#include "core/aabb.h" //#include "core/basis.h" //#include "core/plane.h" //#include "core/vector3i.h" //#include "core/pool_vector.h" //--STRIP {{FILE:sfw/core/transform.h}} //--STRIP //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/pcg.h}} //--STRIP //#include "core/math_defs.h" //#include "core/pcg.h" //--STRIP {{FILE:sfw/core/random_pcg.h}} //--STRIP //hashfuncs.h Needs most math classes //--STRIP //--STRIP //#include "core/aabb.h" //#include "core/math_defs.h" //#include "core/math_funcs.h" //#include "core/rect2.h" //#include "core/rect2i.h" //#include "core/vector2.h" //#include "core/vector2i.h" //#include "core/vector3.h" //#include "core/vector3i.h" //#include "core/vector4.h" //#include "core/vector4i.h" //#include "core/string_name.h" //#include "core/ustring.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/hashfuncs.h}} //--STRIP //Containers that need hashfuncs.h //--STRIP //--STRIP //#include "core/hashfuncs.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/core/pair.h}} //--STRIP //#include "core/hashfuncs.h" //#include "core/list.h" //#include "core/error_macros.h" //#include "core/math_funcs.h" //#include "core/memory.h" //#include "core/ustring.h" //--STRIP {{FILE:sfw/core/og_hash_map.h}} //--STRIP //#include "core/list.h" //#include "core/og_hash_map.h" //#include "core/pair.h" //--STRIP {{FILE:sfw/core/ordered_hash_map.h}} //--STRIP //#include "core/hashfuncs.h" //#include "paged_allocator.h" //#include "pair.h" //#include "core/math_funcs.h" //#include "core/memory.h" //#include "list.h" //--STRIP {{FILE:sfw/core/hash_map.h}} //--STRIP //#include "core/hash_map.h" //#include "core/hashfuncs.h" //#include "core/math_funcs.h" //#include "core/memory.h" //--STRIP {{FILE:sfw/core/hash_set.h}} //--STRIP //=================== OBJECT SECTION =================== //--STRIP //--STRIP //Dependencyless stuff //--STRIP //--STRIP //#include "core/typedefs.h" //--STRIP {{FILE:sfw/object/ref_ptr.h}} //--STRIP //#include "core/int_types.h" //--STRIP {{FILE:sfw/object/object_id.h}} //--STRIP //#include "core/memory.h" //#include "core/typedefs.h" //--STRIP {{FILE:sfw/object/object_rc.h}} //--STRIP //#include "core/string_name.h" //--STRIP {{FILE:sfw/object/core_string_names.h}} //--STRIP //Variants //--STRIP //--STRIP //#include "core/typedefs.h" //--STRIP {{FILE:sfw/object/array.h}} //--STRIP //#include "core/list.h" //#include "core/ustring.h" //#include "object/array.h" //--STRIP {{FILE:sfw/object/dictionary.h}} //--STRIP //#include "core/aabb.h" //#include "core/basis.h" //#include "core/color.h" //#include "core/face3.h" //#include "core/plane.h" //#include "core/pool_vector.h" //#include "core/projection.h" //#include "core/quaternion.h" //#include "core/transform.h" //#include "core/transform_2d.h" //#include "core/ustring.h" //#include "core/vector3.h" //#include "core/vector3i.h" //#include "core/vector4.h" //#include "core/vector4i.h" //#include "object/array.h" //#include "object/dictionary.h" //#include "object/ref_ptr.h" //#include "object/object_id.h" //--STRIP {{FILE:sfw/object/variant.h}} //--STRIP //Stuff that needs Variant //--STRIP //--STRIP //#include "core/vector.h" //#include "core/ustring.h" //#include "object/variant.h" //#include "object/reference.h" //--STRIP {{FILE:sfw/object/psignal.h}} //--STRIP //#include "core/hash_map.h" //#include "core/rw_lock.h" //#include "core/string_name.h" //#include "core/ustring.h" //#include "core/vector.h" //#include "object/object_id.h" //#include "object/variant.h" //#include "object/dictionary.h" //--STRIP {{FILE:sfw/object/object.h}} //--STRIP //#include "core/memory.h" //#include "core/safe_refcount.h" //#include "object/object.h" //#include "object/ref_ptr.h" //--STRIP {{FILE:sfw/object/reference.h}} //--STRIP //#include "object/reference.h" //#include "psignal.h" //--STRIP {{FILE:sfw/object/resource.h}} //--STRIP //=================== RENDER CORE SECTION =================== //--STRIP //--STRIP //#include "core/projection.h" //#include "core/transform.h" //#include "core/vector3.h" //#include "core/transform_2d.h" //#include "core/vector2.h" //--STRIP {{FILE:sfw/render_core/render_state.h}} //--STRIP //#include "core/color.h" //#include "core/rect2.h" //#include "core/rect2i.h" //#include "object/reference.h" //#include "core/vector.h" //#include "core/vector2i.h" //--STRIP {{FILE:sfw/render_core/image.h}} //--STRIP //#include "core/vector2i.h" //#include "object/resource.h" //#include "render_core/3rd_glad.h" //#include "render_core/image.h" //--STRIP {{FILE:sfw/render_core/texture.h}} //--STRIP //#include "core/vector.h" //#include "core/int_types.h" //#include "core/color.h" //#include "object/resource.h" //#include "render_core/3rd_glad.h" //--STRIP {{FILE:sfw/render_core/mesh.h}} //--STRIP //{//{//FILE:sfw/render_core/primitive_meshes.h}} //--STRIP //--STRIP //#include "render_core/mesh.h" //--STRIP {{FILE:sfw/render_core/mesh_utils.h}} //--STRIP //#include "core/ustring.h" //--STRIP {{FILE:sfw/render_core/keyboard.h}} //--STRIP //#include "core/transform_2d.h" //#include "core/typedefs.h" //#include "core/ustring.h" //#include "object/resource.h" //--STRIP {{FILE:sfw/render_core/input_event.h}} //--STRIP //#include "object/resource.h" //--STRIP {{FILE:sfw/render_core/shortcut.h}} //--STRIP //#include "render_core/input_event.h" //#include "object/object.h" //#include "core/rb_map.h" //--STRIP {{FILE:sfw/render_core/input_map.h}} //--STRIP //#include "core/vector2i.h" //#include "object/object.h" //#include "core/rb_map.h" //#include "core/rb_set.h" //#include "core/thread_safe.h" //#include "object/psignal.h" //#include "object/reference.h" //#include "render_core/input_event.h" //--STRIP {{FILE:sfw/render_core/input.h}} //--STRIP //#include "render_core/3rd_glad.h" //#include "core/hash_map.h" //--STRIP {{FILE:sfw/render_core/shader.h}} //--STRIP //#include "core/projection.h" //#include "core/transform.h" //#include "core/transform_2d.h" //#include "object/reference.h" //#include "render_core/shader.h" //--STRIP {{FILE:sfw/render_core/material.h}} //--STRIP //#include "render_core/material.h" //#include "render_core/render_state.h" //--STRIP {{FILE:sfw/render_core/color_material.h}} //--STRIP //#include "render_core/material.h" //#include "render_core/texture.h" //#include "render_core/render_state.h" //--STRIP {{FILE:sfw/render_core/color_material_2d.h}} //--STRIP //#include "render_core/material.h" //#include "render_core/texture.h" //#include "render_core/render_state.h" //--STRIP {{FILE:sfw/render_core/texture_material_2d.h}} //--STRIP //#include "render_core/material.h" //#include "render_core/texture.h" //#include "render_core/render_state.h" //--STRIP {{FILE:sfw/render_core/texture_material.h}} //--STRIP //#include "render_core/material.h" //#include "core/color.h" //#include "render_core/render_state.h" //--STRIP {{FILE:sfw/render_core/colored_material.h}} //--STRIP //#include "render_core/material.h" //#include "render_core/texture.h" //#include "render_core/render_state.h" //--STRIP {{FILE:sfw/render_core/font_material.h}} //--STRIP //#include "render_core/material.h" //#include "render_core/texture.h" //#include "render_core/render_state.h" //--STRIP {{FILE:sfw/render_core/transparent_texture_material.h}} //--STRIP //#include "core/color.h" //#include "core/ustring.h" //#include "object/resource.h" //#include "font_material.h" //--STRIP {{FILE:sfw/render_core/font.h}} //--STRIP //#include "object/reference.h" //#include "render_core/input_event.h" //--STRIP {{FILE:sfw/render_core/scene.h}} //--STRIP //#include "core/color.h" //#include "core/int_types.h" //#include "core/vector2.h" //--STRIP {{FILE:sfw/render_core/window.h}} //--STRIP //#include "core/int_types.h" //#include "object/object.h" //#include "object/reference.h" //#include "render_core/scene.h" //--STRIP {{FILE:sfw/render_core/application.h}} //--STRIP //=================== RENDER IMMEDIATE SECTION =================== //--STRIP //--STRIP //#include "core/color.h" //#include "core/rect2.h" //#include "core/transform.h" //#include "core/transform_2d.h" //#include "core/vector2i.h" //#include "object/object.h" //#include "object/reference.h" //--STRIP {{FILE:sfw/render_immediate/renderer.h}} //--STRIP //=================== RENDER OBJCTS SECTION =================== //--STRIP //--STRIP //#include "object/object.h" //#include "core/transform_2d.h" //--STRIP {{FILE:sfw/render_objects/object_2d.h}} //--STRIP //#include "object/object.h" //#include "core/transform.h" //--STRIP {{FILE:sfw/render_objects/object_3d.h}} //--STRIP //#include "render_core/3rd_glad.h" //#include "render_objects/object_2d.h" //#include "core/transform.h" //#include "core/transform_2d.h" //#include "core/vector2.h" //--STRIP {{FILE:sfw/render_objects/camera_2d.h}} //--STRIP //#include "core/vector.h" //#include "render_core/material.h" //#include "render_core/mesh.h" //#include "core/transform.h" //--STRIP {{FILE:sfw/render_objects/mesh_instance_2d.h}} //--STRIP //#include "render_objects/object_2d.h" //#include "core/transform_2d.h" //#include "render_objects/mesh_instance_2d.h" //--STRIP {{FILE:sfw/render_objects/sprite.h}} //--STRIP //#include "core/color.h" //#include "core/ustring.h" //#include "core/vector2.h" //#include "object/reference.h" //#include "object_2d.h" //--STRIP {{FILE:sfw/render_objects/text_2d.h}} //--STRIP //#include "render_objects/object_2d.h" //#include "render_core/mesh.h" //#include "render_core/material.h" //--STRIP {{FILE:sfw/render_objects/tile_map.h}} //--STRIP //#include "render_objects/object_3d.h" //#include "render_core/3rd_glad.h" //#include "core/projection.h" //#include "core/transform.h" //#include "core/vector3.h" //--STRIP {{FILE:sfw/render_objects/camera_3d.h}} //--STRIP //#include "core/vector.h" //#include "render_objects/object_3d.h" //#include "render_core/material.h" //#include "render_core/mesh.h" //#include "core/transform.h" //--STRIP {{FILE:sfw/render_objects/mesh_instance_3d.h}} // expose glfw/glad apis #if __EMSCRIPTEN__ #include #include #include #include #define gladLoadGL(func) (glewExperimental = true, glewInit() == GLEW_OK) ///- #else #if is(win32) /*&& is(tcc)*/ // && ENABLE_DLL #ifdef GLAD_API_CALL #undef GLAD_API_CALL #endif #define GLAD_API_CALL extern API ///- #endif #ifndef GLAD_GL_H_ #include "sfw" #endif #endif #endif