From 8bfe54676f728076a92d802bb5d064e58265c8f2 Mon Sep 17 00:00:00 2001
From: chai <chaifix@163.com>
Date: Thu, 6 Jun 2019 00:12:17 +0800
Subject: =?UTF-8?q?-=E6=96=87=E4=BB=B6=E5=A4=B9=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 source/libs/asura-lib-core/application.cpp         |  26 -
 source/libs/asura-lib-core/application.h           |  83 ---
 source/libs/asura-lib-core/core_config.h           |   8 -
 source/libs/asura-lib-core/core_module.cpp         |   0
 source/libs/asura-lib-core/core_module.h           |  11 -
 source/libs/asura-lib-core/font/glyph.cpp          |   0
 source/libs/asura-lib-core/font/glyph.h            |   0
 source/libs/asura-lib-core/font/string.cpp         | 376 -----------
 source/libs/asura-lib-core/font/string.hpp         | 594 ----------------
 source/libs/asura-lib-core/font/string.inl         |  29 -
 source/libs/asura-lib-core/font/ttf.cpp            |   0
 source/libs/asura-lib-core/font/ttf.h              |  17 -
 source/libs/asura-lib-core/font/utf.hpp            | 720 --------------------
 source/libs/asura-lib-core/font/utf.inl            | 752 ---------------------
 .../asura-lib-core/graphics/binding/_canvas.cpp    |  46 --
 .../asura-lib-core/graphics/binding/_color.cpp     |  54 --
 .../asura-lib-core/graphics/binding/_color32.cpp   |  86 ---
 .../asura-lib-core/graphics/binding/_image.cpp     |  99 ---
 .../graphics/binding/_image_data.cpp               |  70 --
 .../graphics/binding/_image_decode_task.cpp        |  21 -
 .../asura-lib-core/graphics/binding/_mesh2d.cpp    |  21 -
 .../asura-lib-core/graphics/binding/_shader.cpp    | 126 ----
 .../graphics/binding/_sprite_batch.cpp             |  21 -
 .../asura-lib-core/graphics/binding/_window.cpp    | 103 ---
 source/libs/asura-lib-core/graphics/blend_mode.h   |  17 -
 source/libs/asura-lib-core/graphics/canvas.cpp     |  41 --
 source/libs/asura-lib-core/graphics/canvas.h       |  83 ---
 source/libs/asura-lib-core/graphics/color.cpp      |  47 --
 source/libs/asura-lib-core/graphics/color.h        |  55 --
 source/libs/asura-lib-core/graphics/color32.cpp    |  39 --
 source/libs/asura-lib-core/graphics/color32.h      |  51 --
 .../libs/asura-lib-core/graphics/color_palette.h   |   0
 source/libs/asura-lib-core/graphics/gif.cpp        |   0
 source/libs/asura-lib-core/graphics/gif.h          |  20 -
 source/libs/asura-lib-core/graphics/gl.cpp         |  25 -
 source/libs/asura-lib-core/graphics/gl.h           |  41 --
 source/libs/asura-lib-core/graphics/image.cpp      |  32 -
 source/libs/asura-lib-core/graphics/image.h        |  83 ---
 source/libs/asura-lib-core/graphics/image_data.cpp |  51 --
 source/libs/asura-lib-core/graphics/image_data.h   |  68 --
 .../asura-lib-core/graphics/image_decode_task.cpp  |   0
 .../asura-lib-core/graphics/image_decode_task.h    |  25 -
 .../libs/asura-lib-core/graphics/image_decoder.h   |  35 -
 source/libs/asura-lib-core/graphics/mesh2d.cpp     |   0
 source/libs/asura-lib-core/graphics/mesh2d.h       |  28 -
 .../libs/asura-lib-core/graphics/mesh2d_data.cpp   |   0
 source/libs/asura-lib-core/graphics/mesh2d_data.h  |   0
 source/libs/asura-lib-core/graphics/pixel_format.h |  91 ---
 .../libs/asura-lib-core/graphics/png_decoder.cpp   |  19 -
 source/libs/asura-lib-core/graphics/png_decoder.h  |  27 -
 source/libs/asura-lib-core/graphics/quad.cpp       |   0
 source/libs/asura-lib-core/graphics/quad.h         |   1 -
 source/libs/asura-lib-core/graphics/render_state.h |  49 --
 .../libs/asura-lib-core/graphics/render_target.cpp |   0
 .../libs/asura-lib-core/graphics/render_target.h   |  56 --
 source/libs/asura-lib-core/graphics/shader.cpp     |  81 ---
 source/libs/asura-lib-core/graphics/shader.h       | 126 ----
 source/libs/asura-lib-core/graphics/shape.cpp      |   0
 source/libs/asura-lib-core/graphics/shape.h        |   0
 .../libs/asura-lib-core/graphics/sprite_batch.cpp  |   0
 source/libs/asura-lib-core/graphics/sprite_batch.h |  28 -
 .../libs/asura-lib-core/graphics/stb_decoder.cpp   |  65 --
 source/libs/asura-lib-core/graphics/stb_decoder.h  |  28 -
 source/libs/asura-lib-core/graphics/texture.cpp    |  26 -
 source/libs/asura-lib-core/graphics/texture.h      |  68 --
 source/libs/asura-lib-core/input/clipboard.cpp     |   0
 source/libs/asura-lib-core/input/clipboard.h       |  37 -
 source/libs/asura-lib-core/input/cursor.cpp        |   0
 source/libs/asura-lib-core/input/cursor.defs       |  25 -
 source/libs/asura-lib-core/input/cursor.h          |  54 --
 .../libs/asura-lib-core/input/cursor_impl_sdl.cpp  |   0
 source/libs/asura-lib-core/input/cursor_impl_sdl.h |   0
 source/libs/asura-lib-core/input/event.h           |  45 --
 source/libs/asura-lib-core/input/input_device.hpp  |  31 -
 source/libs/asura-lib-core/input/joypad.h          |   0
 source/libs/asura-lib-core/input/keyboard.cpp      |   0
 source/libs/asura-lib-core/input/keyboard.defs     | 482 -------------
 source/libs/asura-lib-core/input/keyboard.h        |  73 --
 source/libs/asura-lib-core/input/mouse.cpp         |   0
 source/libs/asura-lib-core/input/mouse.defs        |   7 -
 source/libs/asura-lib-core/input/mouse.h           |  56 --
 source/libs/asura-lib-core/profiler/stats.cpp      |   0
 source/libs/asura-lib-core/profiler/stats.h        |   0
 source/libs/asura-lib-core/threading/coroutine.cpp |   0
 source/libs/asura-lib-core/threading/coroutine.h   |  31 -
 source/libs/asura-lib-core/threading/thread.cpp    |   0
 source/libs/asura-lib-core/threading/thread.h      |  53 --
 .../asura-lib-core/threading/thread_impl_posix.cpp |   0
 .../asura-lib-core/threading/thread_impl_posix.h   |   0
 .../asura-lib-core/threading/thread_impl_sdl.cpp   |   0
 .../asura-lib-core/threading/thread_impl_sdl.h     |   0
 .../asura-lib-core/threading/thread_impl_std.cpp   |   0
 .../asura-lib-core/threading/thread_impl_std.h     |   0
 .../asura-lib-core/threading/thread_impl_win32.cpp |   0
 .../asura-lib-core/threading/thread_impl_win32.h   |  25 -
 .../libs/asura-lib-core/threading/thread_task.cpp  |   0
 source/libs/asura-lib-core/threading/thread_task.h |  25 -
 source/libs/asura-lib-core/time/timer.cpp          |   0
 source/libs/asura-lib-core/time/timer.h            |   0
 source/libs/asura-lib-core/type.h                  |  11 -
 source/libs/asura-lib-core/window/window.cpp       |  50 --
 source/libs/asura-lib-core/window/window.h         |  90 ---
 .../asura-lib-core/window/window_impl_glew.cpp     |   0
 .../libs/asura-lib-core/window/window_impl_glew.h  |   0
 .../asura-lib-core/window/window_impl_glut.cpp     |   0
 .../libs/asura-lib-core/window/window_impl_glut.h  |   0
 .../libs/asura-lib-core/window/window_impl_sdl.cpp |   0
 .../libs/asura-lib-core/window/window_impl_sdl.h   |   0
 source/libs/asura-lib-framework/compile.bat        |   0
 source/libs/asura-lib-framework/compile.sh         |   0
 source/libs/asura-lib-framework/main.cpp           |   0
 .../scripts/ai/behavior_tree.lua                   |   0
 .../asura-lib-framework/scripts/ai/state_graph.lua |  11 -
 .../scripts/ai/state_machine.lua                   |   6 -
 .../asura-lib-framework/scripts/audio/sound.lua    |   9 -
 .../asura-lib-framework/scripts/audio/source.lua   |  22 -
 source/libs/asura-lib-framework/scripts/class.lua  |  17 -
 .../libs/asura-lib-framework/scripts/component.lua |  30 -
 source/libs/asura-lib-framework/scripts/entity.lua | 114 ----
 .../scripts/filesystem/animation_loader.lua        |  10 -
 .../scripts/filesystem/asset.lua                   |  20 -
 .../scripts/filesystem/entity_loader.lua           |   5 -
 .../scripts/filesystem/image_loader.lua            |  13 -
 .../scripts/filesystem/loader.lua                  |  12 -
 .../scripts/filesystem/material_loader.lua         |   7 -
 .../scripts/filesystem/path_loader.lua             |   9 -
 .../scripts/filesystem/scene_loader.lua            |   7 -
 .../scripts/filesystem/script_loader.lua           |   5 -
 .../scripts/filesystem/shader_loader.lua           |   5 -
 .../scripts/filesystem/statemap_loader.lua         |   7 -
 .../libs/asura-lib-framework/scripts/framework.lua |  21 -
 .../scripts/graphics/animation.lua                 |  15 -
 .../scripts/graphics/animator.lua                  |  33 -
 .../scripts/graphics/camera.lua                    |  21 -
 .../scripts/graphics/canvas.lua                    |  34 -
 .../scripts/graphics/default_shaders.lua           |   5 -
 .../asura-lib-framework/scripts/graphics/image.lua |  40 --
 .../scripts/graphics/material.lua                  |  48 --
 .../scripts/graphics/material_manager.lua          |   3 -
 .../scripts/graphics/mesh2d.lua                    |   9 -
 .../scripts/graphics/mesh2d_renderer.lua           |  13 -
 .../scripts/graphics/particle_system.lua           |  20 -
 .../scripts/graphics/renderer.lua                  |  19 -
 .../scripts/graphics/shader.lua                    |  75 --
 .../scripts/graphics/shaderHelper.lua              |  14 -
 .../asura-lib-framework/scripts/graphics/shape.lua |  12 -
 .../scripts/graphics/shape_renderer.lua            |  13 -
 .../scripts/graphics/sprite.lua                    |  10 -
 .../scripts/graphics/sprite_batch_renderer.lua     |   9 -
 .../scripts/graphics/sprite_renderer.lua           |  14 -
 .../asura-lib-framework/scripts/gui/button.lua     |  21 -
 .../libs/asura-lib-framework/scripts/gui/text.lua  |   0
 .../asura-lib-framework/scripts/gui/widget.lua     |  14 -
 .../scripts/managers/scene_manager.lua             |  16 -
 .../scripts/managers/sprite_manager.lua            |   0
 .../asura-lib-framework/scripts/math/curve.lua     |   0
 .../libs/asura-lib-framework/scripts/path/path.lua |  13 -
 .../scripts/path/path_calculator.lua               |  12 -
 .../scripts/path/path_manager.lua                  |   0
 source/libs/asura-lib-framework/scripts/scene.lua  |  22 -
 .../libs/asura-lib-framework/scripts/transform.lua |  13 -
 source/libs/asura-lib-json/json.cpp                |   0
 source/libs/asura-lib-json/json.h                  |  14 -
 source/libs/asura-lib-json/json_module.cpp         |   0
 source/libs/asura-lib-json/json_module.h           |   0
 source/libs/asura-lib-openal/sound.cpp             |   0
 source/libs/asura-lib-openal/sound.h               |  31 -
 source/libs/asura-lib-openal/sound_decode_task.cpp |   0
 source/libs/asura-lib-openal/sound_decode_task.h   |  25 -
 source/libs/asura-lib-openal/sound_decoder.cpp     |  29 -
 source/libs/asura-lib-openal/sound_decoder.h       |  30 -
 .../libs/asura-lib-utils/exceptions/exception.cpp  |  47 --
 source/libs/asura-lib-utils/exceptions/exception.h |  44 --
 .../asura-lib-utils/io/binding/_compressor.cpp     |   0
 .../asura-lib-utils/io/binding/_data_buffer.cpp    | 123 ----
 source/libs/asura-lib-utils/io/binding/_file.cpp   | 223 ------
 .../libs/asura-lib-utils/io/binding/_file_data.cpp |  60 --
 .../asura-lib-utils/io/binding/_file_system.cpp    | 265 --------
 .../libs/asura-lib-utils/io/binding/_io_task.cpp   |  46 --
 source/libs/asura-lib-utils/io/compressor.cpp      |  11 -
 source/libs/asura-lib-utils/io/compressor.h        |  30 -
 source/libs/asura-lib-utils/io/data_buffer.cpp     | 102 ---
 source/libs/asura-lib-utils/io/data_buffer.h       |  62 --
 source/libs/asura-lib-utils/io/decoded_data.cpp    |  21 -
 source/libs/asura-lib-utils/io/decoded_data.h      |  42 --
 source/libs/asura-lib-utils/io/file.cpp            | 292 --------
 source/libs/asura-lib-utils/io/file.h              | 146 ----
 source/libs/asura-lib-utils/io/file_data.cpp       |  52 --
 source/libs/asura-lib-utils/io/file_data.h         |  69 --
 source/libs/asura-lib-utils/io/file_system.cpp     | 198 ------
 source/libs/asura-lib-utils/io/file_system.h       | 112 ---
 source/libs/asura-lib-utils/io/io_batch_task.cpp   |   0
 source/libs/asura-lib-utils/io/io_batch_task.h     |  31 -
 source/libs/asura-lib-utils/io/io_task.cpp         |  55 --
 source/libs/asura-lib-utils/io/io_task.h           |  57 --
 source/libs/asura-lib-utils/io/reloadable.h        |  29 -
 source/libs/asura-lib-utils/manager.hpp            |  14 -
 source/libs/asura-lib-utils/math/curve.cpp         |   0
 source/libs/asura-lib-utils/math/curve.h           |   0
 source/libs/asura-lib-utils/math/functions.cpp     |   0
 source/libs/asura-lib-utils/math/functions.h       |   0
 source/libs/asura-lib-utils/math/matrix44.cpp      |   0
 source/libs/asura-lib-utils/math/matrix44.h        |  24 -
 source/libs/asura-lib-utils/math/quaternion.cpp    |   0
 source/libs/asura-lib-utils/math/quaternion.h      |   0
 source/libs/asura-lib-utils/math/ranged_value.cpp  |   0
 source/libs/asura-lib-utils/math/ranged_value.h    |   0
 source/libs/asura-lib-utils/math/rect.hpp          |  47 --
 source/libs/asura-lib-utils/math/rect.inl          |  19 -
 source/libs/asura-lib-utils/math/transform.cpp     |   0
 source/libs/asura-lib-utils/math/transform.h       |  30 -
 source/libs/asura-lib-utils/math/vector2.hpp       |  70 --
 source/libs/asura-lib-utils/math/vector2.inl       | 114 ----
 source/libs/asura-lib-utils/math/vector3.hpp       | 233 -------
 source/libs/asura-lib-utils/math/vector3.inl       | 145 ----
 source/libs/asura-lib-utils/math/vector4.h         | 234 -------
 source/libs/asura-lib-utils/math/vector4.inl       | 152 -----
 source/libs/asura-lib-utils/module.h               |  32 -
 .../libs/asura-lib-utils/profiler/memory_leak.cpp  |   0
 source/libs/asura-lib-utils/profiler/memory_leak.h |   0
 source/libs/asura-lib-utils/scripting/lua_env.h    |  72 --
 source/libs/asura-lib-utils/scripting/portable.hpp |  29 -
 source/libs/asura-lib-utils/singleton.hpp          |  59 --
 source/libs/asura-lib-utils/stringmap.cpp          |   0
 source/libs/asura-lib-utils/stringmap.hpp          |  29 -
 .../threading/binding/_coroutine.cpp               |  40 --
 .../asura-lib-utils/threading/binding/_thread.cpp  | 210 ------
 .../libs/asura-lib-utils/threading/coroutine.cpp   |  16 -
 source/libs/asura-lib-utils/threading/coroutine.h  |  40 --
 source/libs/asura-lib-utils/threading/mutex.cpp    | 106 ---
 source/libs/asura-lib-utils/threading/mutex.h      | 126 ----
 .../libs/asura-lib-utils/threading/semaphore.cpp   |  88 ---
 source/libs/asura-lib-utils/threading/semaphore.h  |  70 --
 source/libs/asura-lib-utils/threading/task.cpp     |  12 -
 source/libs/asura-lib-utils/threading/task.h       |  45 --
 source/libs/asura-lib-utils/threading/thread.cpp   | 272 --------
 source/libs/asura-lib-utils/threading/thread.h     | 221 ------
 .../threading/thread_impl_posix.cpp                |   9 -
 .../asura-lib-utils/threading/thread_impl_posix.h  |   0
 .../asura-lib-utils/threading/thread_impl_sdl.cpp  |   0
 .../asura-lib-utils/threading/thread_impl_sdl.h    |   0
 .../asura-lib-utils/threading/thread_impl_std.cpp  |   0
 .../asura-lib-utils/threading/thread_impl_std.h    |  43 --
 .../threading/thread_impl_win32.cpp                |  76 ---
 .../asura-lib-utils/threading/thread_impl_win32.h  |  47 --
 .../libs/asura-lib-utils/threading/thread_task.cpp |   0
 .../libs/asura-lib-utils/threading/thread_task.h   |  44 --
 source/libs/asura-lib-utils/type.h                 |  85 ---
 source/libs/asura-lib-utils/utils.h                |   6 -
 source/libs/asura-lib-utils/utils_config.h         |  10 -
 source/libs/asura-lib-utils/utils_module.cpp       |  25 -
 source/libs/asura-lib-utils/utils_module.h         |  32 -
 252 files changed, 11784 deletions(-)
 delete mode 100644 source/libs/asura-lib-core/application.cpp
 delete mode 100644 source/libs/asura-lib-core/application.h
 delete mode 100644 source/libs/asura-lib-core/core_config.h
 delete mode 100644 source/libs/asura-lib-core/core_module.cpp
 delete mode 100644 source/libs/asura-lib-core/core_module.h
 delete mode 100644 source/libs/asura-lib-core/font/glyph.cpp
 delete mode 100644 source/libs/asura-lib-core/font/glyph.h
 delete mode 100644 source/libs/asura-lib-core/font/string.cpp
 delete mode 100644 source/libs/asura-lib-core/font/string.hpp
 delete mode 100644 source/libs/asura-lib-core/font/string.inl
 delete mode 100644 source/libs/asura-lib-core/font/ttf.cpp
 delete mode 100644 source/libs/asura-lib-core/font/ttf.h
 delete mode 100644 source/libs/asura-lib-core/font/utf.hpp
 delete mode 100644 source/libs/asura-lib-core/font/utf.inl
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_canvas.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_color.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_color32.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_image.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_image_data.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_image_decode_task.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_shader.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/binding/_window.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/blend_mode.h
 delete mode 100644 source/libs/asura-lib-core/graphics/canvas.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/canvas.h
 delete mode 100644 source/libs/asura-lib-core/graphics/color.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/color.h
 delete mode 100644 source/libs/asura-lib-core/graphics/color32.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/color32.h
 delete mode 100644 source/libs/asura-lib-core/graphics/color_palette.h
 delete mode 100644 source/libs/asura-lib-core/graphics/gif.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/gif.h
 delete mode 100644 source/libs/asura-lib-core/graphics/gl.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/gl.h
 delete mode 100644 source/libs/asura-lib-core/graphics/image.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/image.h
 delete mode 100644 source/libs/asura-lib-core/graphics/image_data.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/image_data.h
 delete mode 100644 source/libs/asura-lib-core/graphics/image_decode_task.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/image_decode_task.h
 delete mode 100644 source/libs/asura-lib-core/graphics/image_decoder.h
 delete mode 100644 source/libs/asura-lib-core/graphics/mesh2d.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/mesh2d.h
 delete mode 100644 source/libs/asura-lib-core/graphics/mesh2d_data.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/mesh2d_data.h
 delete mode 100644 source/libs/asura-lib-core/graphics/pixel_format.h
 delete mode 100644 source/libs/asura-lib-core/graphics/png_decoder.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/png_decoder.h
 delete mode 100644 source/libs/asura-lib-core/graphics/quad.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/quad.h
 delete mode 100644 source/libs/asura-lib-core/graphics/render_state.h
 delete mode 100644 source/libs/asura-lib-core/graphics/render_target.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/render_target.h
 delete mode 100644 source/libs/asura-lib-core/graphics/shader.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/shader.h
 delete mode 100644 source/libs/asura-lib-core/graphics/shape.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/shape.h
 delete mode 100644 source/libs/asura-lib-core/graphics/sprite_batch.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/sprite_batch.h
 delete mode 100644 source/libs/asura-lib-core/graphics/stb_decoder.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/stb_decoder.h
 delete mode 100644 source/libs/asura-lib-core/graphics/texture.cpp
 delete mode 100644 source/libs/asura-lib-core/graphics/texture.h
 delete mode 100644 source/libs/asura-lib-core/input/clipboard.cpp
 delete mode 100644 source/libs/asura-lib-core/input/clipboard.h
 delete mode 100644 source/libs/asura-lib-core/input/cursor.cpp
 delete mode 100644 source/libs/asura-lib-core/input/cursor.defs
 delete mode 100644 source/libs/asura-lib-core/input/cursor.h
 delete mode 100644 source/libs/asura-lib-core/input/cursor_impl_sdl.cpp
 delete mode 100644 source/libs/asura-lib-core/input/cursor_impl_sdl.h
 delete mode 100644 source/libs/asura-lib-core/input/event.h
 delete mode 100644 source/libs/asura-lib-core/input/input_device.hpp
 delete mode 100644 source/libs/asura-lib-core/input/joypad.h
 delete mode 100644 source/libs/asura-lib-core/input/keyboard.cpp
 delete mode 100644 source/libs/asura-lib-core/input/keyboard.defs
 delete mode 100644 source/libs/asura-lib-core/input/keyboard.h
 delete mode 100644 source/libs/asura-lib-core/input/mouse.cpp
 delete mode 100644 source/libs/asura-lib-core/input/mouse.defs
 delete mode 100644 source/libs/asura-lib-core/input/mouse.h
 delete mode 100644 source/libs/asura-lib-core/profiler/stats.cpp
 delete mode 100644 source/libs/asura-lib-core/profiler/stats.h
 delete mode 100644 source/libs/asura-lib-core/threading/coroutine.cpp
 delete mode 100644 source/libs/asura-lib-core/threading/coroutine.h
 delete mode 100644 source/libs/asura-lib-core/threading/thread.cpp
 delete mode 100644 source/libs/asura-lib-core/threading/thread.h
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_posix.cpp
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_posix.h
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_sdl.cpp
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_sdl.h
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_std.cpp
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_std.h
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_win32.cpp
 delete mode 100644 source/libs/asura-lib-core/threading/thread_impl_win32.h
 delete mode 100644 source/libs/asura-lib-core/threading/thread_task.cpp
 delete mode 100644 source/libs/asura-lib-core/threading/thread_task.h
 delete mode 100644 source/libs/asura-lib-core/time/timer.cpp
 delete mode 100644 source/libs/asura-lib-core/time/timer.h
 delete mode 100644 source/libs/asura-lib-core/type.h
 delete mode 100644 source/libs/asura-lib-core/window/window.cpp
 delete mode 100644 source/libs/asura-lib-core/window/window.h
 delete mode 100644 source/libs/asura-lib-core/window/window_impl_glew.cpp
 delete mode 100644 source/libs/asura-lib-core/window/window_impl_glew.h
 delete mode 100644 source/libs/asura-lib-core/window/window_impl_glut.cpp
 delete mode 100644 source/libs/asura-lib-core/window/window_impl_glut.h
 delete mode 100644 source/libs/asura-lib-core/window/window_impl_sdl.cpp
 delete mode 100644 source/libs/asura-lib-core/window/window_impl_sdl.h
 delete mode 100644 source/libs/asura-lib-framework/compile.bat
 delete mode 100644 source/libs/asura-lib-framework/compile.sh
 delete mode 100644 source/libs/asura-lib-framework/main.cpp
 delete mode 100644 source/libs/asura-lib-framework/scripts/ai/behavior_tree.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/ai/state_graph.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/ai/state_machine.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/audio/sound.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/audio/source.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/class.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/component.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/entity.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/animation_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/asset.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/entity_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/image_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/material_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/path_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/scene_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/script_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/shader_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/filesystem/statemap_loader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/framework.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/animation.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/animator.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/camera.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/canvas.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/default_shaders.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/image.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/material.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/material_manager.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/mesh2d.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/mesh2d_renderer.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/particle_system.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/renderer.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/shader.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/shaderHelper.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/shape.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/shape_renderer.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/sprite.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/sprite_batch_renderer.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/graphics/sprite_renderer.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/gui/button.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/gui/text.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/gui/widget.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/managers/scene_manager.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/managers/sprite_manager.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/math/curve.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/path/path.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/path/path_calculator.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/path/path_manager.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/scene.lua
 delete mode 100644 source/libs/asura-lib-framework/scripts/transform.lua
 delete mode 100644 source/libs/asura-lib-json/json.cpp
 delete mode 100644 source/libs/asura-lib-json/json.h
 delete mode 100644 source/libs/asura-lib-json/json_module.cpp
 delete mode 100644 source/libs/asura-lib-json/json_module.h
 delete mode 100644 source/libs/asura-lib-openal/sound.cpp
 delete mode 100644 source/libs/asura-lib-openal/sound.h
 delete mode 100644 source/libs/asura-lib-openal/sound_decode_task.cpp
 delete mode 100644 source/libs/asura-lib-openal/sound_decode_task.h
 delete mode 100644 source/libs/asura-lib-openal/sound_decoder.cpp
 delete mode 100644 source/libs/asura-lib-openal/sound_decoder.h
 delete mode 100644 source/libs/asura-lib-utils/exceptions/exception.cpp
 delete mode 100644 source/libs/asura-lib-utils/exceptions/exception.h
 delete mode 100644 source/libs/asura-lib-utils/io/binding/_compressor.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/binding/_data_buffer.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/binding/_file.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/binding/_file_data.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/binding/_file_system.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/binding/_io_task.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/compressor.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/compressor.h
 delete mode 100644 source/libs/asura-lib-utils/io/data_buffer.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/data_buffer.h
 delete mode 100644 source/libs/asura-lib-utils/io/decoded_data.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/decoded_data.h
 delete mode 100644 source/libs/asura-lib-utils/io/file.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/file.h
 delete mode 100644 source/libs/asura-lib-utils/io/file_data.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/file_data.h
 delete mode 100644 source/libs/asura-lib-utils/io/file_system.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/file_system.h
 delete mode 100644 source/libs/asura-lib-utils/io/io_batch_task.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/io_batch_task.h
 delete mode 100644 source/libs/asura-lib-utils/io/io_task.cpp
 delete mode 100644 source/libs/asura-lib-utils/io/io_task.h
 delete mode 100644 source/libs/asura-lib-utils/io/reloadable.h
 delete mode 100644 source/libs/asura-lib-utils/manager.hpp
 delete mode 100644 source/libs/asura-lib-utils/math/curve.cpp
 delete mode 100644 source/libs/asura-lib-utils/math/curve.h
 delete mode 100644 source/libs/asura-lib-utils/math/functions.cpp
 delete mode 100644 source/libs/asura-lib-utils/math/functions.h
 delete mode 100644 source/libs/asura-lib-utils/math/matrix44.cpp
 delete mode 100644 source/libs/asura-lib-utils/math/matrix44.h
 delete mode 100644 source/libs/asura-lib-utils/math/quaternion.cpp
 delete mode 100644 source/libs/asura-lib-utils/math/quaternion.h
 delete mode 100644 source/libs/asura-lib-utils/math/ranged_value.cpp
 delete mode 100644 source/libs/asura-lib-utils/math/ranged_value.h
 delete mode 100644 source/libs/asura-lib-utils/math/rect.hpp
 delete mode 100644 source/libs/asura-lib-utils/math/rect.inl
 delete mode 100644 source/libs/asura-lib-utils/math/transform.cpp
 delete mode 100644 source/libs/asura-lib-utils/math/transform.h
 delete mode 100644 source/libs/asura-lib-utils/math/vector2.hpp
 delete mode 100644 source/libs/asura-lib-utils/math/vector2.inl
 delete mode 100644 source/libs/asura-lib-utils/math/vector3.hpp
 delete mode 100644 source/libs/asura-lib-utils/math/vector3.inl
 delete mode 100644 source/libs/asura-lib-utils/math/vector4.h
 delete mode 100644 source/libs/asura-lib-utils/math/vector4.inl
 delete mode 100644 source/libs/asura-lib-utils/module.h
 delete mode 100644 source/libs/asura-lib-utils/profiler/memory_leak.cpp
 delete mode 100644 source/libs/asura-lib-utils/profiler/memory_leak.h
 delete mode 100644 source/libs/asura-lib-utils/scripting/lua_env.h
 delete mode 100644 source/libs/asura-lib-utils/scripting/portable.hpp
 delete mode 100644 source/libs/asura-lib-utils/singleton.hpp
 delete mode 100644 source/libs/asura-lib-utils/stringmap.cpp
 delete mode 100644 source/libs/asura-lib-utils/stringmap.hpp
 delete mode 100644 source/libs/asura-lib-utils/threading/binding/_coroutine.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/binding/_thread.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/coroutine.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/coroutine.h
 delete mode 100644 source/libs/asura-lib-utils/threading/mutex.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/mutex.h
 delete mode 100644 source/libs/asura-lib-utils/threading/semaphore.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/semaphore.h
 delete mode 100644 source/libs/asura-lib-utils/threading/task.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/task.h
 delete mode 100644 source/libs/asura-lib-utils/threading/thread.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/thread.h
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_posix.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_posix.h
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_sdl.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_sdl.h
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_std.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_std.h
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_win32.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_impl_win32.h
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_task.cpp
 delete mode 100644 source/libs/asura-lib-utils/threading/thread_task.h
 delete mode 100644 source/libs/asura-lib-utils/type.h
 delete mode 100644 source/libs/asura-lib-utils/utils.h
 delete mode 100644 source/libs/asura-lib-utils/utils_config.h
 delete mode 100644 source/libs/asura-lib-utils/utils_module.cpp
 delete mode 100644 source/libs/asura-lib-utils/utils_module.h

diff --git a/source/libs/asura-lib-core/application.cpp b/source/libs/asura-lib-core/application.cpp
deleted file mode 100644
index 0a1c1ef..0000000
--- a/source/libs/asura-lib-core/application.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "Sdl2/SDL.h"
-#include "Exceptions/Exception.h"
-#include "Scripting/Luax.hpp"
-#include "Application.h"
-
-using namespace Luax;
-
-namespace AsuraEngine
-{
-
-	Application::Application()
-	{
-
-	}
-
-	Application::~Application()
-	{
-
-	}
-
-	bool Application::InitSubModules(uint flag)
-	{
-
-	}
-
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/application.h b/source/libs/asura-lib-core/application.h
deleted file mode 100644
index 9606819..0000000
--- a/source/libs/asura-lib-core/application.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef __ASURA_ENGINE_APPLICATION_H__
-#define __ASURA_ENGINE_APPLICATION_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-#include <asura-lib-utils/module.h>
-#include <queue>
-
-#include "core_config.h"
-
-namespace AsuraEngine
-{
-
-	///
-	/// ���
-	///
-	enum SubModules
-	{
-		ASURA_MODULE_NONE = 0X00000000U,
-
-		ASURA_MODULE_GRAPHICS = 1 << 1,
-		ASURA_MODULE_AUDIO    = 1 << 2,
-		ASURA_MODULE_FONT     = 1 << 3,
-		ASURA_MODULE_INPUT    = 1 << 4,
-		ASURA_MODULE_MATH     = 1 << 5,
-		ASURA_MODULE_PHYSICS  = 1 << 6,
-		ASURA_MODULE_TIME     = 1 << 7,
-		ASURA_MODULE_WINDOW   = 1 << 8,
-
-		ASURA_MODULE_ALL = 0XFFFFFFFFU
-	};
-
-	///
-	/// ������ѭ��
-	///
-	ASURA_ABSTRACT class Application
-	{
-	public:
-		
-		Application(); 
-
-		virtual ~Application();
-
-		///
-		/// ��ʼ������ǰ����ϵͳ
-		/// 
-		bool InitSubModules(uint flag = ASURA_MODULE_ALL);
-		
-		///
-		/// �������
-		///
-		virtual void Run(int argc, char* args[]);
-
-		///
-		/// �˳�runʱ�Ĵ���
-		///
-		virtual void OnExit();
-
-	protected:
-
-		///
-		/// ����module��applicationӵ��module������Ȩ��
-		///
-		void EnqueueModule(Module* module);
-		
-	private:
-
-		///
-		/// ���̵߳�lua state handle��Ӧ����ѭ�����������С�һ������˵��ֻ��Ҫ���߳���һ��lua_State�������̲߳���Ҫ���������̼߳�
-		/// ����lua����̫ʹ���ˡ�������C++����д��Ȼ��ע��һ���ص�������������һ���̴߳���lua_State��ע�ắ����ִ�к󷢻�����
-		/// �����̵߳�lua_State����ֻ֤��һ��nativeʵ��֮��һ��lua_State�󶨡�
-		///
-		lua_State* mMainLuaState;
-
-		///
-		/// �����Asura libs���ᰴ�ն���˳���ʼ���������˳�ʱִ���˳�������
-		///
-		std::queue<Module*> mModules;
-
-	};
-
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/core_config.h b/source/libs/asura-lib-core/core_config.h
deleted file mode 100644
index 06eecc7..0000000
--- a/source/libs/asura-lib-core/core_config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef __ASURA_CORE_CONFIG_H__
-#define __ASURA_CORE_CONFIG_H__
-
-#define ASURA_CORE_SDL  1
-#define ASURA_CORE_GLUT 0
-#define ASURA_CORE_GLFW 0
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/core_module.cpp b/source/libs/asura-lib-core/core_module.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/core_module.h b/source/libs/asura-lib-core/core_module.h
deleted file mode 100644
index 2cded93..0000000
--- a/source/libs/asura-lib-core/core_module.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef __ASURA_CORE_MODULE_H__
-#define __ASURA_CORE_MODULE_H__
-
-namespace AsuraEngine
-{
-	
-
-
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/font/glyph.cpp b/source/libs/asura-lib-core/font/glyph.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/font/glyph.h b/source/libs/asura-lib-core/font/glyph.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/font/string.cpp b/source/libs/asura-lib-core/font/string.cpp
deleted file mode 100644
index 8c9c55a..0000000
--- a/source/libs/asura-lib-core/font/string.cpp
+++ /dev/null
@@ -1,376 +0,0 @@
-#include "String.hpp"
-#include "Utf.hpp"
-
-namespace AsuraEngine
-{
-	namespace Text
-	{
-
-
-		////////////////////////////////////////////////////////////
-		const std::size_t String::InvalidPos = std::basic_string<uint32>::npos;
-
-
-		////////////////////////////////////////////////////////////
-		String::String()
-		{
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(char ansiChar, const std::locale& locale)
-		{
-			mString += Utf32::DecodeAnsi(ansiChar, locale);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(wchar_t wideChar)
-		{
-			mString += Utf32::DecodeWide(wideChar);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(uint32 utf32Char)
-		{
-			mString += utf32Char;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(const char* ansiString, const std::locale& locale)
-		{
-			if (ansiString)
-			{
-				std::size_t length = strlen(ansiString);
-				if (length > 0)
-				{
-					mString.reserve(length + 1);
-					Utf32::FromAnsi(ansiString, ansiString + length, std::back_inserter(mString), locale);
-				}
-			}
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(const std::string& ansiString, const std::locale& locale)
-		{
-			mString.reserve(ansiString.length() + 1);
-			Utf32::FromAnsi(ansiString.begin(), ansiString.end(), std::back_inserter(mString), locale);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(const wchar_t* wideString)
-		{
-			if (wideString)
-			{
-				std::size_t length = std::wcslen(wideString);
-				if (length > 0)
-				{
-					mString.reserve(length + 1);
-					Utf32::FromWide(wideString, wideString + length, std::back_inserter(mString));
-				}
-			}
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(const std::wstring& wideString)
-		{
-			mString.reserve(wideString.length() + 1);
-			Utf32::FromWide(wideString.begin(), wideString.end(), std::back_inserter(mString));
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(const uint32* utf32String)
-		{
-			if (utf32String)
-				mString = utf32String;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(const std::basic_string<uint32>& utf32String) :
-			mString(utf32String)
-		{
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::String(const String& copy) :
-			mString(copy.mString)
-		{
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::operator std::string() const
-		{
-			return ToAnsiString();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::operator std::wstring() const
-		{
-			return ToWideString();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		std::string String::ToAnsiString(const std::locale& locale) const
-		{
-			// Prepare the output string
-			std::string output;
-			output.reserve(mString.length() + 1);
-
-			// Convert
-			Utf32::ToAnsi(mString.begin(), mString.end(), std::back_inserter(output), 0, locale);
-
-			return output;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		std::wstring String::ToWideString() const
-		{
-			// Prepare the output string
-			std::wstring output;
-			output.reserve(mString.length() + 1);
-
-			// Convert
-			Utf32::ToWide(mString.begin(), mString.end(), std::back_inserter(output), 0);
-
-			return output;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		std::basic_string<uint8> String::ToUtf8() const
-		{
-			// Prepare the output string
-			std::basic_string<uint8> output;
-			output.reserve(mString.length());
-
-			// Convert
-			Utf32::ToUtf8(mString.begin(), mString.end(), std::back_inserter(output));
-
-			return output;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		std::basic_string<uint16> String::ToUtf16() const
-		{
-			// Prepare the output string
-			std::basic_string<uint16> output;
-			output.reserve(mString.length());
-
-			// Convert
-			Utf32::ToUtf16(mString.begin(), mString.end(), std::back_inserter(output));
-
-			return output;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		std::basic_string<uint32> String::ToUtf32() const
-		{
-			return mString;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String& String::operator =(const String& right)
-		{
-			mString = right.mString;
-			return *this;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String& String::operator +=(const String& right)
-		{
-			mString += right.mString;
-			return *this;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		uint32 String::operator [](std::size_t index) const
-		{
-			return mString[index];
-		}
-
-
-		////////////////////////////////////////////////////////////
-		uint32& String::operator [](std::size_t index)
-		{
-			return mString[index];
-		}
-
-
-		////////////////////////////////////////////////////////////
-		void String::Clear()
-		{
-			mString.clear();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		std::size_t String::GetSize() const
-		{
-			return mString.size();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		bool String::IsEmpty() const
-		{
-			return mString.empty();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		void String::Erase(std::size_t position, std::size_t count)
-		{
-			mString.erase(position, count);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		void String::Insert(std::size_t position, const String& str)
-		{
-			mString.insert(position, str.mString);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		std::size_t String::Find(const String& str, std::size_t start) const
-		{
-			return mString.find(str.mString, start);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		void String::Replace(std::size_t position, std::size_t length, const String& replaceWith)
-		{
-			mString.replace(position, length, replaceWith.mString);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		void String::Replace(const String& searchFor, const String& replaceWith)
-		{
-			std::size_t step = replaceWith.GetSize();
-			std::size_t len = searchFor.GetSize();
-			std::size_t pos = Find(searchFor);
-
-			// Replace each occurrence of search
-			while (pos != InvalidPos)
-			{
-				Replace(pos, len, replaceWith);
-				pos = Find(searchFor, pos + step);
-			}
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String String::Substring(std::size_t position, std::size_t length) const
-		{
-			return mString.substr(position, length);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		const uint32* String::GetData() const
-		{
-			return mString.c_str();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::Iterator String::Begin()
-		{
-			return mString.begin();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::ConstIterator String::Begin() const
-		{
-			return mString.begin();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::Iterator String::End()
-		{
-			return mString.end();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String::ConstIterator String::End() const
-		{
-			return mString.end();
-		}
-
-
-		////////////////////////////////////////////////////////////
-		bool operator ==(const String& left, const String& right)
-		{
-			return left.mString == right.mString;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		bool operator !=(const String& left, const String& right)
-		{
-			return !(left == right);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		bool operator <(const String& left, const String& right)
-		{
-			return left.mString < right.mString;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		bool operator >(const String& left, const String& right)
-		{
-			return right < left;
-		}
-
-
-		////////////////////////////////////////////////////////////
-		bool operator <=(const String& left, const String& right)
-		{
-			return !(right < left);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		bool operator >=(const String& left, const String& right)
-		{
-			return !(left < right);
-		}
-
-
-		////////////////////////////////////////////////////////////
-		String operator +(const String& left, const String& right)
-		{
-			String string = left;
-			string += right;
-
-			return string;
-		}
-
-
-	}
-}
diff --git a/source/libs/asura-lib-core/font/string.hpp b/source/libs/asura-lib-core/font/string.hpp
deleted file mode 100644
index 226735b..0000000
--- a/source/libs/asura-lib-core/font/string.hpp
+++ /dev/null
@@ -1,594 +0,0 @@
-#ifndef __ASURA_ENGINE_STRING_H__
-#define __ASURA_ENGINE_STRING_H__
-
-#include "Config.h"
-#include <iterator>
-#include <locale>
-#include <string>
-
-namespace AsuraEngine
-{
-	namespace Text
-	{
-
-
-		////////////////////////////////////////////////////////////
-		/// \brief Utility string class that automatically handles
-		///        conversions between types and encodings
-		///
-		////////////////////////////////////////////////////////////
-		class String
-		{
-		public:
-
-			////////////////////////////////////////////////////////////
-			// Types
-			////////////////////////////////////////////////////////////
-			typedef std::basic_string<uint32>::iterator       Iterator;      ///< Iterator type
-			typedef std::basic_string<uint32>::const_iterator ConstIterator; ///< Read-only iterator type
-
-																																			 ////////////////////////////////////////////////////////////
-																																			 // Static member data
-																																			 ////////////////////////////////////////////////////////////
-			static const std::size_t InvalidPos; ///< Represents an invalid position in the string
-
-																					 ////////////////////////////////////////////////////////////
-																					 /// \brief Default constructor
-																					 ///
-																					 /// This constructor creates an empty string.
-																					 ///
-																					 ////////////////////////////////////////////////////////////
-			String();
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from a single ANSI character and a locale
-			///
-			/// The source character is converted to UTF-32 according
-			/// to the given locale.
-			///
-			/// \param ansiChar ANSI character to convert
-			/// \param locale   Locale to use for conversion
-			///
-			////////////////////////////////////////////////////////////
-			String(char ansiChar, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from single wide character
-			///
-			/// \param wideChar Wide character to convert
-			///
-			////////////////////////////////////////////////////////////
-			String(wchar_t wideChar);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from single UTF-32 character
-			///
-			/// \param utf32Char UTF-32 character to convert
-			///
-			////////////////////////////////////////////////////////////
-			String(uint utf32Char);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from a null-terminated C-style ANSI string and a locale
-			///
-			/// The source string is converted to UTF-32 according
-			/// to the given locale.
-			///
-			/// \param ansiString ANSI string to convert
-			/// \param locale     Locale to use for conversion
-			///
-			////////////////////////////////////////////////////////////
-			String(const char* ansiString, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from an ANSI string and a locale
-			///
-			/// The source string is converted to UTF-32 according
-			/// to the given locale.
-			///
-			/// \param ansiString ANSI string to convert
-			/// \param locale     Locale to use for conversion
-			///
-			////////////////////////////////////////////////////////////
-			String(const std::string& ansiString, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from null-terminated C-style wide string
-			///
-			/// \param wideString Wide string to convert
-			///
-			////////////////////////////////////////////////////////////
-			String(const wchar_t* wideString);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from a wide string
-			///
-			/// \param wideString Wide string to convert
-			///
-			////////////////////////////////////////////////////////////
-			String(const std::wstring& wideString);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from a null-terminated C-style UTF-32 string
-			///
-			/// \param utf32String UTF-32 string to assign
-			///
-			////////////////////////////////////////////////////////////
-			String(const uint* utf32String);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct from an UTF-32 string
-			///
-			/// \param utf32String UTF-32 string to assign
-			///
-			////////////////////////////////////////////////////////////
-			String(const std::basic_string<uint>& utf32String);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Copy constructor
-			///
-			/// \param copy Instance to copy
-			///
-			////////////////////////////////////////////////////////////
-			String(const String& copy);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Create a new sf::String from a UTF-8 encoded string
-			///
-			/// \param begin Forward iterator to the beginning of the UTF-8 sequence
-			/// \param end   Forward iterator to the end of the UTF-8 sequence
-			///
-			/// \return A sf::String containing the source string
-			///
-			/// \see fromUtf16, fromUtf32
-			///
-			////////////////////////////////////////////////////////////
-			template <typename T>
-			static String FromUtf8(T begin, T end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Create a new sf::String from a UTF-16 encoded string
-			///
-			/// \param begin Forward iterator to the beginning of the UTF-16 sequence
-			/// \param end   Forward iterator to the end of the UTF-16 sequence
-			///
-			/// \return A sf::String containing the source string
-			///
-			/// \see fromUtf8, fromUtf32
-			///
-			////////////////////////////////////////////////////////////
-			template <typename T>
-			static String FromUtf16(T begin, T end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Create a new sf::String from a UTF-32 encoded string
-			///
-			/// This function is provided for consistency, it is equivalent to
-			/// using the constructors that takes a const sf::uint* or
-			/// a std::basic_string<sf::uint>.
-			///
-			/// \param begin Forward iterator to the beginning of the UTF-32 sequence
-			/// \param end   Forward iterator to the end of the UTF-32 sequence
-			///
-			/// \return A sf::String containing the source string
-			///
-			/// \see fromUtf8, fromUtf16
-			///
-			////////////////////////////////////////////////////////////
-			template <typename T>
-			static String FromUtf32(T begin, T end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Implicit conversion operator to std::string (ANSI string)
-			///
-			/// The current global locale is used for conversion. If you
-			/// want to explicitly specify a locale, see toAnsiString.
-			/// Characters that do not fit in the target encoding are
-			/// discarded from the returned string.
-			/// This operator is defined for convenience, and is equivalent
-			/// to calling toAnsiString().
-			///
-			/// \return Converted ANSI string
-			///
-			/// \see toAnsiString, operator std::wstring
-			///
-			////////////////////////////////////////////////////////////
-			operator std::string() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Implicit conversion operator to std::wstring (wide string)
-			///
-			/// Characters that do not fit in the target encoding are
-			/// discarded from the returned string.
-			/// This operator is defined for convenience, and is equivalent
-			/// to calling toWideString().
-			///
-			/// \return Converted wide string
-			///
-			/// \see toWideString, operator std::string
-			///
-			////////////////////////////////////////////////////////////
-			operator std::wstring() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert the Unicode string to an ANSI string
-			///
-			/// The UTF-32 string is converted to an ANSI string in
-			/// the encoding defined by \a locale.
-			/// Characters that do not fit in the target encoding are
-			/// discarded from the returned string.
-			///
-			/// \param locale Locale to use for conversion
-			///
-			/// \return Converted ANSI string
-			///
-			/// \see toWideString, operator std::string
-			///
-			////////////////////////////////////////////////////////////
-			std::string ToAnsiString(const std::locale& locale = std::locale()) const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert the Unicode string to a wide string
-			///
-			/// Characters that do not fit in the target encoding are
-			/// discarded from the returned string.
-			///
-			/// \return Converted wide string
-			///
-			/// \see toAnsiString, operator std::wstring
-			///
-			////////////////////////////////////////////////////////////
-			std::wstring ToWideString() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert the Unicode string to a UTF-8 string
-			///
-			/// \return Converted UTF-8 string
-			///
-			/// \see toUtf16, toUtf32
-			///
-			////////////////////////////////////////////////////////////
-			std::basic_string<uint8> ToUtf8() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert the Unicode string to a UTF-16 string
-			///
-			/// \return Converted UTF-16 string
-			///
-			/// \see toUtf8, toUtf32
-			///
-			////////////////////////////////////////////////////////////
-			std::basic_string<uint16> ToUtf16() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert the Unicode string to a UTF-32 string
-			///
-			/// This function doesn't perform any conversion, since the
-			/// string is already stored as UTF-32 internally.
-			///
-			/// \return Converted UTF-32 string
-			///
-			/// \see toUtf8, toUtf16
-			///
-			////////////////////////////////////////////////////////////
-			std::basic_string<uint> ToUtf32() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Overload of assignment operator
-			///
-			/// \param right Instance to assign
-			///
-			/// \return Reference to self
-			///
-			////////////////////////////////////////////////////////////
-			String& operator =(const String& right);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Overload of += operator to append an UTF-32 string
-			///
-			/// \param right String to append
-			///
-			/// \return Reference to self
-			///
-			////////////////////////////////////////////////////////////
-			String& operator +=(const String& right);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Overload of [] operator to access a character by its position
-			///
-			/// This function provides read-only access to characters.
-			/// Note: the behavior is undefined if \a index is out of range.
-			///
-			/// \param index Index of the character to get
-			///
-			/// \return Character at position \a index
-			///
-			////////////////////////////////////////////////////////////
-			uint operator [](std::size_t index) const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Overload of [] operator to access a character by its position
-			///
-			/// This function provides read and write access to characters.
-			/// Note: the behavior is undefined if \a index is out of range.
-			///
-			/// \param index Index of the character to get
-			///
-			/// \return Reference to the character at position \a index
-			///
-			////////////////////////////////////////////////////////////
-			uint& operator [](std::size_t index);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Clear the string
-			///
-			/// This function removes all the characters from the string.
-			///
-			/// \see isEmpty, erase
-			///
-			////////////////////////////////////////////////////////////
-			void Clear();
-
-			////////////////////////////////////////////////////////////
-			/// \brief Get the size of the string
-			///
-			/// \return Number of characters in the string
-			///
-			/// \see isEmpty
-			///
-			////////////////////////////////////////////////////////////
-			std::size_t GetSize() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Check whether the string is empty or not
-			///
-			/// \return True if the string is empty (i.e. contains no character)
-			///
-			/// \see clear, getSize
-			///
-			////////////////////////////////////////////////////////////
-			bool IsEmpty() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Erase one or more characters from the string
-			///
-			/// This function removes a sequence of \a count characters
-			/// starting from \a position.
-			///
-			/// \param position Position of the first character to erase
-			/// \param count    Number of characters to erase
-			///
-			////////////////////////////////////////////////////////////
-			void Erase(std::size_t position, std::size_t count = 1);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Insert one or more characters into the string
-			///
-			/// This function inserts the characters of \a str
-			/// into the string, starting from \a position.
-			///
-			/// \param position Position of insertion
-			/// \param str      Characters to insert
-			///
-			////////////////////////////////////////////////////////////
-			void Insert(std::size_t position, const String& str);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Find a sequence of one or more characters in the string
-			///
-			/// This function searches for the characters of \a str
-			/// in the string, starting from \a start.
-			///
-			/// \param str   Characters to find
-			/// \param start Where to begin searching
-			///
-			/// \return Position of \a str in the string, or String::InvalidPos if not found
-			///
-			////////////////////////////////////////////////////////////
-			std::size_t Find(const String& str, std::size_t start = 0) const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Replace a substring with another string
-			///
-			/// This function replaces the substring that starts at index \a position
-			/// and spans \a length characters with the string \a replaceWith.
-			///
-			/// \param position    Index of the first character to be replaced
-			/// \param length      Number of characters to replace. You can pass InvalidPos to
-			///                    replace all characters until the end of the string.
-			/// \param replaceWith String that replaces the given substring.
-			///
-			////////////////////////////////////////////////////////////
-			void Replace(std::size_t position, std::size_t length, const String& replaceWith);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Replace all occurrences of a substring with a replacement string
-			///
-			/// This function replaces all occurrences of \a searchFor in this string
-			/// with the string \a replaceWith.
-			///
-			/// \param searchFor   The value being searched for
-			/// \param replaceWith The value that replaces found \a searchFor values
-			///
-			////////////////////////////////////////////////////////////
-			void Replace(const String& searchFor, const String& replaceWith);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Return a part of the string
-			///
-			/// This function returns the substring that starts at index \a position
-			/// and spans \a length characters.
-			///
-			/// \param position Index of the first character
-			/// \param length   Number of characters to include in the substring (if
-			///                 the string is shorter, as many characters as possible
-			///                 are included). \ref InvalidPos can be used to include all
-			///                 characters until the end of the string.
-			///
-			/// \return String object containing a substring of this object
-			///
-			////////////////////////////////////////////////////////////
-			String Substring(std::size_t position, std::size_t length = InvalidPos) const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Get a pointer to the C-style array of characters
-			///
-			/// This functions provides a read-only access to a
-			/// null-terminated C-style representation of the string.
-			/// The returned pointer is temporary and is meant only for
-			/// immediate use, thus it is not recommended to store it.
-			///
-			/// \return Read-only pointer to the array of characters
-			///
-			////////////////////////////////////////////////////////////
-			const uint* GetData() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Return an iterator to the beginning of the string
-			///
-			/// \return Read-write iterator to the beginning of the string characters
-			///
-			/// \see end
-			///
-			////////////////////////////////////////////////////////////
-			Iterator Begin();
-
-			////////////////////////////////////////////////////////////
-			/// \brief Return an iterator to the beginning of the string
-			///
-			/// \return Read-only iterator to the beginning of the string characters
-			///
-			/// \see end
-			///
-			////////////////////////////////////////////////////////////
-			ConstIterator Begin() const;
-
-			////////////////////////////////////////////////////////////
-			/// \brief Return an iterator to the end of the string
-			///
-			/// The end iterator refers to 1 position past the last character;
-			/// thus it represents an invalid character and should never be
-			/// accessed.
-			///
-			/// \return Read-write iterator to the end of the string characters
-			///
-			/// \see begin
-			///
-			////////////////////////////////////////////////////////////
-			Iterator End();
-
-			////////////////////////////////////////////////////////////
-			/// \brief Return an iterator to the end of the string
-			///
-			/// The end iterator refers to 1 position past the last character;
-			/// thus it represents an invalid character and should never be
-			/// accessed.
-			///
-			/// \return Read-only iterator to the end of the string characters
-			///
-			/// \see begin
-			///
-			////////////////////////////////////////////////////////////
-			ConstIterator End() const;
-
-		private:
-
-			friend bool operator ==(const String& left, const String& right);
-			friend bool operator <(const String& left, const String& right);
-
-			////////////////////////////////////////////////////////////
-			// Member data
-			////////////////////////////////////////////////////////////
-			std::basic_string<uint> mString; ///< Internal string of UTF-32 characters
-		};
-
-		////////////////////////////////////////////////////////////
-		/// \relates String
-		/// \brief Overload of == operator to compare two UTF-32 strings
-		///
-		/// \param left  Left operand (a string)
-		/// \param right Right operand (a string)
-		///
-		/// \return True if both strings are equal
-		///
-		////////////////////////////////////////////////////////////
-		bool operator ==(const String& left, const String& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates String
-		/// \brief Overload of != operator to compare two UTF-32 strings
-		///
-		/// \param left  Left operand (a string)
-		/// \param right Right operand (a string)
-		///
-		/// \return True if both strings are different
-		///
-		////////////////////////////////////////////////////////////
-		bool operator !=(const String& left, const String& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates String
-		/// \brief Overload of < operator to compare two UTF-32 strings
-		///
-		/// \param left  Left operand (a string)
-		/// \param right Right operand (a string)
-		///
-		/// \return True if \a left is lexicographically before \a right
-		///
-		////////////////////////////////////////////////////////////
-		bool operator <(const String& left, const String& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates String
-		/// \brief Overload of > operator to compare two UTF-32 strings
-		///
-		/// \param left  Left operand (a string)
-		/// \param right Right operand (a string)
-		///
-		/// \return True if \a left is lexicographically after \a right
-		///
-		////////////////////////////////////////////////////////////
-		bool operator >(const String& left, const String& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates String
-		/// \brief Overload of <= operator to compare two UTF-32 strings
-		///
-		/// \param left  Left operand (a string)
-		/// \param right Right operand (a string)
-		///
-		/// \return True if \a left is lexicographically before or equivalent to \a right
-		///
-		////////////////////////////////////////////////////////////
-		bool operator <=(const String& left, const String& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates String
-		/// \brief Overload of >= operator to compare two UTF-32 strings
-		///
-		/// \param left  Left operand (a string)
-		/// \param right Right operand (a string)
-		///
-		/// \return True if \a left is lexicographically after or equivalent to \a right
-		///
-		////////////////////////////////////////////////////////////
-		bool operator >=(const String& left, const String& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates String
-		/// \brief Overload of binary + operator to concatenate two strings
-		///
-		/// \param left  Left operand (a string)
-		/// \param right Right operand (a string)
-		///
-		/// \return Concatenated string
-		///
-		////////////////////////////////////////////////////////////
-		String operator +(const String& left, const String& right);
-
-		#include "String.inl"
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/font/string.inl b/source/libs/asura-lib-core/font/string.inl
deleted file mode 100644
index ef18228..0000000
--- a/source/libs/asura-lib-core/font/string.inl
+++ /dev/null
@@ -1,29 +0,0 @@
-
-////////////////////////////////////////////////////////////
-template <typename T>
-String String::fromUtf8(T begin, T end)
-{
-	String string;
-	Utf8::toUtf32(begin, end, std::back_inserter(string.m_string));
-	return string;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-String String::fromUtf16(T begin, T end)
-{
-	String string;
-	Utf16::toUtf32(begin, end, std::back_inserter(string.m_string));
-	return string;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-String String::fromUtf32(T begin, T end)
-{
-	String string;
-	string.m_string.assign(begin, end);
-	return string;
-}
diff --git a/source/libs/asura-lib-core/font/ttf.cpp b/source/libs/asura-lib-core/font/ttf.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/font/ttf.h b/source/libs/asura-lib-core/font/ttf.h
deleted file mode 100644
index 840b63e..0000000
--- a/source/libs/asura-lib-core/font/ttf.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef __ASURA_TTF_H__
-#define __ASURA_TTF_H__
-
-namespace AsuraEngine
-{
-	namespace Text
-	{
-
-		class TTF
-		{
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/font/utf.hpp b/source/libs/asura-lib-core/font/utf.hpp
deleted file mode 100644
index 2e04ee4..0000000
--- a/source/libs/asura-lib-core/font/utf.hpp
+++ /dev/null
@@ -1,720 +0,0 @@
-#ifndef __ASURA_UTF_HPP__
-#define __ASURA_UTF_HPP__
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <algorithm>
-#include <locale>
-#include <string>
-#include <cstdlib>
-
-namespace AsuraEngine
-{
-	namespace Text
-	{
-
-		template <unsigned int N>
-		class Utf;
-
-		////////////////////////////////////////////////////////////
-		/// \brief Specialization of the Utf template for UTF-8
-		///
-		////////////////////////////////////////////////////////////
-		template <>
-		class Utf<8>
-		{
-		public:
-
-			////////////////////////////////////////////////////////////
-			/// \brief Decode a single UTF-8 character
-			///
-			/// Decoding a character means finding its unique 32-bits
-			/// code (called the codepoint) in the Unicode standard.
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Codepoint of the decoded UTF-8 character
-			/// \param replacement Replacement character to use in case the UTF-8 sequence is invalid
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static In Decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Encode a single UTF-8 character
-			///
-			/// Encoding a character means converting a unique 32-bits
-			/// code (called the codepoint) in the target encoding, UTF-8.
-			///
-			/// \param input       Codepoint to encode as UTF-8
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to UTF-8 (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename Out>
-			static Out Encode(Uint32 input, Out output, Uint8 replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Advance to the next UTF-8 character
-			///
-			/// This function is necessary for multi-elements encodings, as
-			/// a single character may use more than 1 storage element.
-			///
-			/// \param begin Iterator pointing to the beginning of the input sequence
-			/// \param end   Iterator pointing to the end of the input sequence
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static In Next(In begin, In end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Count the number of characters of a UTF-8 sequence
-			///
-			/// This function is necessary for multi-elements encodings, as
-			/// a single character may use more than 1 storage element, thus the
-			/// total size can be different from (begin - end).
-			///
-			/// \param begin Iterator pointing to the beginning of the input sequence
-			/// \param end   Iterator pointing to the end of the input sequence
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static std::size_t Count(In begin, In end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an ANSI characters range to UTF-8
-			///
-			/// The current global locale will be used by default, unless you
-			/// pass a custom one in the \a locale parameter.
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			/// \param locale Locale to use for conversion
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a wide characters range to UTF-8
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromWide(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-8
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromLatin1(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-8 characters range to ANSI characters
-			///
-			/// The current global locale will be used by default, unless you
-			/// pass a custom one in the \a locale parameter.
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them)
-			/// \param locale      Locale to use for conversion
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-8 characters range to wide characters
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToWide(In begin, In end, Out output, wchar_t replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToLatin1(In begin, In end, Out output, char replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-8 characters range to UTF-8
-			///
-			/// This functions does nothing more than a direct copy;
-			/// it is defined only to provide the same interface as other
-			/// specializations of the sf::Utf<> template, and allow
-			/// generic code to be written on top of it.
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf8(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-8 characters range to UTF-16
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf16(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-8 characters range to UTF-32
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf32(In begin, In end, Out output);
-		};
-
-		////////////////////////////////////////////////////////////
-		/// \brief Specialization of the Utf template for UTF-16
-		///
-		////////////////////////////////////////////////////////////
-		template <>
-		class Utf<16>
-		{
-		public:
-
-			////////////////////////////////////////////////////////////
-			/// \brief Decode a single UTF-16 character
-			///
-			/// Decoding a character means finding its unique 32-bits
-			/// code (called the codepoint) in the Unicode standard.
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Codepoint of the decoded UTF-16 character
-			/// \param replacement Replacement character to use in case the UTF-8 sequence is invalid
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static In Decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Encode a single UTF-16 character
-			///
-			/// Encoding a character means converting a unique 32-bits
-			/// code (called the codepoint) in the target encoding, UTF-16.
-			///
-			/// \param input       Codepoint to encode as UTF-16
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to UTF-16 (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename Out>
-			static Out Encode(Uint32 input, Out output, Uint16 replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Advance to the next UTF-16 character
-			///
-			/// This function is necessary for multi-elements encodings, as
-			/// a single character may use more than 1 storage element.
-			///
-			/// \param begin Iterator pointing to the beginning of the input sequence
-			/// \param end   Iterator pointing to the end of the input sequence
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static In Next(In begin, In end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Count the number of characters of a UTF-16 sequence
-			///
-			/// This function is necessary for multi-elements encodings, as
-			/// a single character may use more than 1 storage element, thus the
-			/// total size can be different from (begin - end).
-			///
-			/// \param begin Iterator pointing to the beginning of the input sequence
-			/// \param end   Iterator pointing to the end of the input sequence
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static std::size_t Count(In begin, In end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an ANSI characters range to UTF-16
-			///
-			/// The current global locale will be used by default, unless you
-			/// pass a custom one in the \a locale parameter.
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			/// \param locale Locale to use for conversion
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a wide characters range to UTF-16
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromWide(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-16
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromLatin1(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-16 characters range to ANSI characters
-			///
-			/// The current global locale will be used by default, unless you
-			/// pass a custom one in the \a locale parameter.
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them)
-			/// \param locale      Locale to use for conversion
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-16 characters range to wide characters
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToWide(In begin, In end, Out output, wchar_t replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToLatin1(In begin, In end, Out output, char replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-16 characters range to UTF-8
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf8(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-16 characters range to UTF-16
-			///
-			/// This functions does nothing more than a direct copy;
-			/// it is defined only to provide the same interface as other
-			/// specializations of the sf::Utf<> template, and allow
-			/// generic code to be written on top of it.
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf16(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-16 characters range to UTF-32
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf32(In begin, In end, Out output);
-		};
-
-		////////////////////////////////////////////////////////////
-		/// \brief Specialization of the Utf template for UTF-32
-		///
-		////////////////////////////////////////////////////////////
-		template <>
-		class Utf<32>
-		{
-		public:
-
-			////////////////////////////////////////////////////////////
-			/// \brief Decode a single UTF-32 character
-			///
-			/// Decoding a character means finding its unique 32-bits
-			/// code (called the codepoint) in the Unicode standard.
-			/// For UTF-32, the character value is the same as the codepoint.
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Codepoint of the decoded UTF-32 character
-			/// \param replacement Replacement character to use in case the UTF-8 sequence is invalid
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static In Decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Encode a single UTF-32 character
-			///
-			/// Encoding a character means converting a unique 32-bits
-			/// code (called the codepoint) in the target encoding, UTF-32.
-			/// For UTF-32, the codepoint is the same as the character value.
-			///
-			/// \param input       Codepoint to encode as UTF-32
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to UTF-32 (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename Out>
-			static Out Encode(Uint32 input, Out output, Uint32 replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Advance to the next UTF-32 character
-			///
-			/// This function is trivial for UTF-32, which can store
-			/// every character in a single storage element.
-			///
-			/// \param begin Iterator pointing to the beginning of the input sequence
-			/// \param end   Iterator pointing to the end of the input sequence
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static In Next(In begin, In end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Count the number of characters of a UTF-32 sequence
-			///
-			/// This function is trivial for UTF-32, which can store
-			/// every character in a single storage element.
-			///
-			/// \param begin Iterator pointing to the beginning of the input sequence
-			/// \param end   Iterator pointing to the end of the input sequence
-			///
-			/// \return Iterator pointing to one past the last read element of the input sequence
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static std::size_t Count(In begin, In end);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an ANSI characters range to UTF-32
-			///
-			/// The current global locale will be used by default, unless you
-			/// pass a custom one in the \a locale parameter.
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			/// \param locale Locale to use for conversion
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a wide characters range to UTF-32
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromWide(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-32
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out FromLatin1(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-32 characters range to ANSI characters
-			///
-			/// The current global locale will be used by default, unless you
-			/// pass a custom one in the \a locale parameter.
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them)
-			/// \param locale      Locale to use for conversion
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-32 characters range to wide characters
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToWide(In begin, In end, Out output, wchar_t replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters
-			///
-			/// \param begin       Iterator pointing to the beginning of the input sequence
-			/// \param end         Iterator pointing to the end of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToLatin1(In begin, In end, Out output, char replacement = 0);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-32 characters range to UTF-8
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf8(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-32 characters range to UTF-16
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf16(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Convert a UTF-32 characters range to UTF-32
-			///
-			/// This functions does nothing more than a direct copy;
-			/// it is defined only to provide the same interface as other
-			/// specializations of the sf::Utf<> template, and allow
-			/// generic code to be written on top of it.
-			///
-			/// \param begin  Iterator pointing to the beginning of the input sequence
-			/// \param end    Iterator pointing to the end of the input sequence
-			/// \param output Iterator pointing to the beginning of the output sequence
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In, typename Out>
-			static Out ToUtf32(In begin, In end, Out output);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Decode a single ANSI character to UTF-32
-			///
-			/// This function does not exist in other specializations
-			/// of sf::Utf<>, it is defined for convenience (it is used by
-			/// several other conversion functions).
-			///
-			/// \param input  Input ANSI character
-			/// \param locale Locale to use for conversion
-			///
-			/// \return Converted character
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static Uint32 DecodeAnsi(In input, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Decode a single wide character to UTF-32
-			///
-			/// This function does not exist in other specializations
-			/// of sf::Utf<>, it is defined for convenience (it is used by
-			/// several other conversion functions).
-			///
-			/// \param input Input wide character
-			///
-			/// \return Converted character
-			///
-			////////////////////////////////////////////////////////////
-			template <typename In>
-			static Uint32 DecodeWide(In input);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Encode a single UTF-32 character to ANSI
-			///
-			/// This function does not exist in other specializations
-			/// of sf::Utf<>, it is defined for convenience (it is used by
-			/// several other conversion functions).
-			///
-			/// \param codepoint   Iterator pointing to the beginning of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement if the input character is not convertible to ANSI (use 0 to skip it)
-			/// \param locale      Locale to use for conversion
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename Out>
-			static Out EncodeAnsi(Uint32 codepoint, Out output, char replacement = 0, const std::locale& locale = std::locale());
-
-			////////////////////////////////////////////////////////////
-			/// \brief Encode a single UTF-32 character to wide
-			///
-			/// This function does not exist in other specializations
-			/// of sf::Utf<>, it is defined for convenience (it is used by
-			/// several other conversion functions).
-			///
-			/// \param codepoint   Iterator pointing to the beginning of the input sequence
-			/// \param output      Iterator pointing to the beginning of the output sequence
-			/// \param replacement Replacement if the input character is not convertible to wide (use 0 to skip it)
-			///
-			/// \return Iterator to the end of the output sequence which has been written
-			///
-			////////////////////////////////////////////////////////////
-			template <typename Out>
-			static Out EncodeWide(Uint32 codepoint, Out output, wchar_t replacement = 0);
-		};
-
-#include "Utf.inl"
-
-		// Make typedefs to get rid of the template syntax
-		typedef Utf<8>  Utf8;
-		typedef Utf<16> Utf16;
-		typedef Utf<32> Utf32;
-
-	} // namespace sf
-
-}
-
-
-#endif // SFML_UTF_HPP
diff --git a/source/libs/asura-lib-core/font/utf.inl b/source/libs/asura-lib-core/font/utf.inl
deleted file mode 100644
index 69a523b..0000000
--- a/source/libs/asura-lib-core/font/utf.inl
+++ /dev/null
@@ -1,752 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-//    you must not claim that you wrote the original software.
-//    If you use this software in a product, an acknowledgment
-//    in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-//    and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-// References:
-//
-// https://www.unicode.org/
-// https://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.c
-// https://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.h
-// https://people.w3.org/rishida/scripts/uniview/conversion
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-In Utf<8>::Decode(In begin, In end, Uint32& output, Uint32 replacement)
-{
-    // Some useful precomputed data
-    static const int trailing[256] =
-    {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5
-    };
-    static const Uint32 offsets[6] =
-    {
-        0x00000000, 0x00003080, 0x000E2080, 0x03C82080, 0xFA082080, 0x82082080
-    };
-
-    // decode the character
-    int trailingBytes = trailing[static_cast<Uint8>(*begin)];
-    if (begin + trailingBytes < end)
-    {
-        output = 0;
-        switch (trailingBytes)
-        {
-            case 5: output += static_cast<Uint8>(*begin++); output <<= 6;
-            case 4: output += static_cast<Uint8>(*begin++); output <<= 6;
-            case 3: output += static_cast<Uint8>(*begin++); output <<= 6;
-            case 2: output += static_cast<Uint8>(*begin++); output <<= 6;
-            case 1: output += static_cast<Uint8>(*begin++); output <<= 6;
-            case 0: output += static_cast<Uint8>(*begin++);
-        }
-        output -= offsets[trailingBytes];
-    }
-    else
-    {
-        // Incomplete character
-        begin = end;
-        output = replacement;
-    }
-
-    return begin;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename Out>
-Out Utf<8>::Encode(Uint32 input, Out output, Uint8 replacement)
-{
-    // Some useful precomputed data
-    static const Uint8 firstBytes[7] =
-    {
-        0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
-    };
-
-    // encode the character
-    if ((input > 0x0010FFFF) || ((input >= 0xD800) && (input <= 0xDBFF)))
-    {
-        // Invalid character
-        if (replacement)
-            *output++ = replacement;
-    }
-    else
-    {
-        // Valid character
-
-        // Get the number of bytes to write
-        std::size_t bytestoWrite = 1;
-        if      (input <  0x80)       bytestoWrite = 1;
-        else if (input <  0x800)      bytestoWrite = 2;
-        else if (input <  0x10000)    bytestoWrite = 3;
-        else if (input <= 0x0010FFFF) bytestoWrite = 4;
-
-        // Extract the bytes to write
-        Uint8 bytes[4];
-        switch (bytestoWrite)
-        {
-            case 4: bytes[3] = static_cast<Uint8>((input | 0x80) & 0xBF); input >>= 6;
-            case 3: bytes[2] = static_cast<Uint8>((input | 0x80) & 0xBF); input >>= 6;
-            case 2: bytes[1] = static_cast<Uint8>((input | 0x80) & 0xBF); input >>= 6;
-            case 1: bytes[0] = static_cast<Uint8> (input | firstBytes[bytestoWrite]);
-        }
-
-        // Add them to the output
-        output = std::copy(bytes, bytes + bytestoWrite, output);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-In Utf<8>::Next(In begin, In end)
-{
-    Uint32 codepoint;
-    return Decode(begin, end, codepoint);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-std::size_t Utf<8>::Count(In begin, In end)
-{
-    std::size_t length = 0;
-    while (begin < end)
-    {
-        begin = Next(begin, end);
-        ++length;
-    }
-
-    return length;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::FromAnsi(In begin, In end, Out output, const std::locale& locale)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint = Utf<32>::DecodeAnsi(*begin++, locale);
-        output = Encode(codepoint, output);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::FromWide(In begin, In end, Out output)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint = Utf<32>::DecodeWide(*begin++);
-        output = Encode(codepoint, output);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::FromLatin1(In begin, In end, Out output)
-{
-    // Latin-1 is directly compatible with Unicode encodings,
-    // and can thus be treated as (a sub-range of) UTF-32
-    while (begin < end)
-        output = Encode(*begin++, output);
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::ToAnsi(In begin, In end, Out output, char replacement, const std::locale& locale)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        output = Utf<32>::EncodeAnsi(codepoint, output, replacement, locale);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::ToWide(In begin, In end, Out output, wchar_t replacement)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        output = Utf<32>::EncodeWide(codepoint, output, replacement);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::ToLatin1(In begin, In end, Out output, char replacement)
-{
-    // Latin-1 is directly compatible with Unicode encodings,
-    // and can thus be treated as (a sub-range of) UTF-32
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        *output++ = codepoint < 256 ? static_cast<char>(codepoint) : replacement;
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::ToUtf8(In begin, In end, Out output)
-{
-    return std::copy(begin, end, output);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::ToUtf16(In begin, In end, Out output)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        output = Utf<16>::Encode(codepoint, output);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<8>::ToUtf32(In begin, In end, Out output)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        *output++ = codepoint;
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-In Utf<16>::Decode(In begin, In end, Uint32& output, Uint32 replacement)
-{
-    Uint16 first = *begin++;
-
-    // If it's a surrogate pair, first convert to a single UTF-32 character
-    if ((first >= 0xD800) && (first <= 0xDBFF))
-    {
-        if (begin < end)
-        {
-            Uint32 second = *begin++;
-            if ((second >= 0xDC00) && (second <= 0xDFFF))
-            {
-                // The second element is valid: convert the two elements to a UTF-32 character
-                output = ((first - 0xD800) << 10) + (second - 0xDC00) + 0x0010000;
-            }
-            else
-            {
-                // Invalid character
-                output = replacement;
-            }
-        }
-        else
-        {
-            // Invalid character
-            begin = end;
-            output = replacement;
-        }
-    }
-    else
-    {
-        // We can make a direct copy
-        output = first;
-    }
-
-    return begin;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename Out>
-Out Utf<16>::Encode(Uint32 input, Out output, Uint16 replacement)
-{
-    if (input <= 0xFFFF)
-    {
-        // The character can be copied directly, we just need to check if it's in the valid range
-        if ((input >= 0xD800) && (input <= 0xDFFF))
-        {
-            // Invalid character (this range is reserved)
-            if (replacement)
-                *output++ = replacement;
-        }
-        else
-        {
-            // Valid character directly convertible to a single UTF-16 character
-            *output++ = static_cast<Uint16>(input);
-        }
-    }
-    else if (input > 0x0010FFFF)
-    {
-        // Invalid character (greater than the maximum Unicode value)
-        if (replacement)
-            *output++ = replacement;
-    }
-    else
-    {
-        // The input character will be converted to two UTF-16 elements
-        input -= 0x0010000;
-        *output++ = static_cast<Uint16>((input >> 10)     + 0xD800);
-        *output++ = static_cast<Uint16>((input & 0x3FFUL) + 0xDC00);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-In Utf<16>::Next(In begin, In end)
-{
-    Uint32 codepoint;
-    return Decode(begin, end, codepoint);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-std::size_t Utf<16>::Count(In begin, In end)
-{
-    std::size_t length = 0;
-    while (begin < end)
-    {
-        begin = Next(begin, end);
-        ++length;
-    }
-
-    return length;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::FromAnsi(In begin, In end, Out output, const std::locale& locale)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint = Utf<32>::DecodeAnsi(*begin++, locale);
-        output = Encode(codepoint, output);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::FromWide(In begin, In end, Out output)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint = Utf<32>::DecodeWide(*begin++);
-        output = Encode(codepoint, output);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::FromLatin1(In begin, In end, Out output)
-{
-    // Latin-1 is directly compatible with Unicode encodings,
-    // and can thus be treated as (a sub-range of) UTF-32
-    return std::copy(begin, end, output);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::ToAnsi(In begin, In end, Out output, char replacement, const std::locale& locale)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        output = Utf<32>::EncodeAnsi(codepoint, output, replacement, locale);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::ToWide(In begin, In end, Out output, wchar_t replacement)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        output = Utf<32>::EncodeWide(codepoint, output, replacement);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::ToLatin1(In begin, In end, Out output, char replacement)
-{
-    // Latin-1 is directly compatible with Unicode encodings,
-    // and can thus be treated as (a sub-range of) UTF-32
-    while (begin < end)
-    {
-        *output++ = *begin < 256 ? static_cast<char>(*begin) : replacement;
-        begin++;
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::ToUtf8(In begin, In end, Out output)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        output = Utf<8>::Encode(codepoint, output);
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::ToUtf16(In begin, In end, Out output)
-{
-    return std::copy(begin, end, output);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<16>::ToUtf32(In begin, In end, Out output)
-{
-    while (begin < end)
-    {
-        Uint32 codepoint;
-        begin = Decode(begin, end, codepoint);
-        *output++ = codepoint;
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-In Utf<32>::Decode(In begin, In /*end*/, Uint32& output, Uint32 /*replacement*/)
-{
-    output = *begin++;
-    return begin;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename Out>
-Out Utf<32>::Encode(Uint32 input, Out output, Uint32 /*replacement*/)
-{
-    *output++ = input;
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-In Utf<32>::Next(In begin, In /*end*/)
-{
-    return ++begin;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-std::size_t Utf<32>::Count(In begin, In end)
-{
-    return begin - end;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::FromAnsi(In begin, In end, Out output, const std::locale& locale)
-{
-    while (begin < end)
-        *output++ = DecodeAnsi(*begin++, locale);
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::FromWide(In begin, In end, Out output)
-{
-    while (begin < end)
-        *output++ = DecodeWide(*begin++);
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::FromLatin1(In begin, In end, Out output)
-{
-    // Latin-1 is directly compatible with Unicode encodings,
-    // and can thus be treated as (a sub-range of) UTF-32
-    return std::copy(begin, end, output);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::ToAnsi(In begin, In end, Out output, char replacement, const std::locale& locale)
-{
-    while (begin < end)
-        output = EncodeAnsi(*begin++, output, replacement, locale);
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::ToWide(In begin, In end, Out output, wchar_t replacement)
-{
-    while (begin < end)
-        output = EncodeWide(*begin++, output, replacement);
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::ToLatin1(In begin, In end, Out output, char replacement)
-{
-    // Latin-1 is directly compatible with Unicode encodings,
-    // and can thus be treated as (a sub-range of) UTF-32
-    while (begin < end)
-    {
-        *output++ = *begin < 256 ? static_cast<char>(*begin) : replacement;
-        begin++;
-    }
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::ToUtf8(In begin, In end, Out output)
-{
-    while (begin < end)
-        output = Utf<8>::Encode(*begin++, output);
-
-    return output;
-}
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::ToUtf16(In begin, In end, Out output)
-{
-    while (begin < end)
-        output = Utf<16>::Encode(*begin++, output);
-
-    return output;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-Out Utf<32>::ToUtf32(In begin, In end, Out output)
-{
-    return std::copy(begin, end, output);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-Uint32 Utf<32>::DecodeAnsi(In input, const std::locale& locale)
-{
-    // On Windows, GCC's standard library (glibc++) has almost
-    // no support for Unicode stuff. As a consequence, in this
-    // context we can only use the default locale and ignore
-    // the one passed as parameter.
-
-    #if defined(SFML_SYSTEM_WINDOWS) &&                       /* if Windows ... */                          \
-       (defined(__GLIBCPP__) || defined (__GLIBCXX__)) &&     /* ... and standard library is glibc++ ... */ \
-      !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) /* ... and STLPort is not used on top of it */
-
-        (void)locale; // to avoid warnings
-
-        wchar_t character = 0;
-        mbtowc(&character, &input, 1);
-        return static_cast<Uint32>(character);
-
-    #else
-
-        // Get the facet of the locale which deals with character conversion
-        const std::ctype<wchar_t>& facet = std::use_facet< std::ctype<wchar_t> >(locale);
-
-        // Use the facet to convert each character of the input string
-        return static_cast<Uint32>(facet.widen(input));
-
-    #endif
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename In>
-Uint32 Utf<32>::DecodeWide(In input)
-{
-    // The encoding of wide characters is not well defined and is left to the system;
-    // however we can safely assume that it is UCS-2 on Windows and
-    // UCS-4 on Unix systems.
-    // In both cases, a simple copy is enough (UCS-2 is a subset of UCS-4,
-    // and UCS-4 *is* UTF-32).
-
-    return input;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename Out>
-Out Utf<32>::EncodeAnsi(Uint32 codepoint, Out output, char replacement, const std::locale& locale)
-{
-    // On Windows, gcc's standard library (glibc++) has almost
-    // no support for Unicode stuff. As a consequence, in this
-    // context we can only use the default locale and ignore
-    // the one passed as parameter.
-
-    #if defined(SFML_SYSTEM_WINDOWS) &&                       /* if Windows ... */                          \
-       (defined(__GLIBCPP__) || defined (__GLIBCXX__)) &&     /* ... and standard library is glibc++ ... */ \
-      !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) /* ... and STLPort is not used on top of it */
-
-        (void)locale; // to avoid warnings
-
-        char character = 0;
-        if (wctomb(&character, static_cast<wchar_t>(codepoint)) >= 0)
-            *output++ = character;
-        else if (replacement)
-            *output++ = replacement;
-
-        return output;
-
-    #else
-
-        // Get the facet of the locale which deals with character conversion
-        const std::ctype<wchar_t>& facet = std::use_facet< std::ctype<wchar_t> >(locale);
-
-        // Use the facet to convert each character of the input string
-        *output++ = facet.narrow(static_cast<wchar_t>(codepoint), replacement);
-
-        return output;
-
-    #endif
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename Out>
-Out Utf<32>::EncodeWide(Uint32 codepoint, Out output, wchar_t replacement)
-{
-    // The encoding of wide characters is not well defined and is left to the system;
-    // however we can safely assume that it is UCS-2 on Windows and
-    // UCS-4 on Unix systems.
-    // For UCS-2 we need to check if the source characters fits in (UCS-2 is a subset of UCS-4).
-    // For UCS-4 we can do a direct copy (UCS-4 *is* UTF-32).
-
-    switch (sizeof(wchar_t))
-    {
-        case 4:
-        {
-            *output++ = static_cast<wchar_t>(codepoint);
-            break;
-        }
-
-        default:
-        {
-            if ((codepoint <= 0xFFFF) && ((codepoint < 0xD800) || (codepoint > 0xDFFF)))
-            {
-                *output++ = static_cast<wchar_t>(codepoint);
-            }
-            else if (replacement)
-            {
-                *output++ = replacement;
-            }
-            break;
-        }
-    }
-
-    return output;
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_canvas.cpp b/source/libs/asura-lib-core/graphics/binding/_canvas.cpp
deleted file mode 100644
index 7927995..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_canvas.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "../canvas.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(Canvas)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "SetSize", _SetSize },
-				{ "Bind",    _Bind    },
-				{ "Unbind",  _Unbind  }
-			);
-		}
-
-		LUAX_POSTPROCESS(Canvas)
-		{
-
-		}
-
-		// canvas:SetSize()
-		LUAX_IMPL_METHOD(Canvas, _SetSize)
-		{
-			LUAX_PREPARE(L, Canvas);
-
-		}
-
-		// canvas:Bind()
-		LUAX_IMPL_METHOD(Canvas, _Bind)
-		{
-			LUAX_PREPARE(L, Canvas);
-
-		}
-
-		// canvas:Unbind()
-		LUAX_IMPL_METHOD(Canvas, _Unbind)
-		{
-			LUAX_PREPARE(L, Canvas);
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_color.cpp b/source/libs/asura-lib-core/graphics/binding/_color.cpp
deleted file mode 100644
index 11e80a1..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_color.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "../color.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(Color)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "ToColor32", _ToColor32 },
-				{ "SetColor",  _SetColor  },
-				{ "GetColor",  _GetColor  },
-				{ "Multiply",  _Multiply  }
-			);
-		}
-
-		LUAX_POSTPROCESS(Color)
-		{
-
-		}
-
-		// color:ToColor32()
-		LUAX_IMPL_METHOD(Color, _ToColor32)
-		{
-			LUAX_PREPARE(L, Color);
-
-		}
-
-		// color:SetColor()
-		LUAX_IMPL_METHOD(Color, _SetColor)
-		{
-			LUAX_PREPARE(L, Color);
-
-		}
-
-		// color:GetColor()
-		LUAX_IMPL_METHOD(Color, _GetColor)
-		{
-			LUAX_PREPARE(L, Color);
-
-		}
-
-		// color:Multiply()
-		LUAX_IMPL_METHOD(Color, _Multiply)
-		{
-			LUAX_PREPARE(L, Color);
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_color32.cpp b/source/libs/asura-lib-core/graphics/binding/_color32.cpp
deleted file mode 100644
index 7095866..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_color32.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "../color32.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(Color32)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "ToColor",  _ToColor  },
-				{ "GetRed",   _GetRed   },
-				{ "GetGreen", _GetGreen },
-				{ "GetBlue",  _GetBlue  },
-				{ "GetAlpha", _GetAlpha },
-				{ "Multiply", _Multiply },
-				{ "Index",    _Index    },
-				{ "NewIndex", _NewIndex }
-			);
-		}
-
-		LUAX_POSTPROCESS(Color32)
-		{
-
-		}
-
-		// color32:ToColor()
-		LUAX_IMPL_METHOD(Color32, _ToColor)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-		// color32:GetRed()
-		LUAX_IMPL_METHOD(Color32, _GetRed)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-		// color32:GetGreen()
-		LUAX_IMPL_METHOD(Color32, _GetGreen)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-		// color32:GetBlue()
-		LUAX_IMPL_METHOD(Color32, _GetBlue)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-		// color32:GetAlpha()
-		LUAX_IMPL_METHOD(Color32, _GetAlpha)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-		// color32:Multiply()
-		LUAX_IMPL_METHOD(Color32, _Multiply)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-		// color32:Index()
-		LUAX_IMPL_METHOD(Color32, _Index)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-		// color32:NewIndex()
-		LUAX_IMPL_METHOD(Color32, _NewIndex)
-		{
-			LUAX_PREPARE(L, Color32);
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_image.cpp b/source/libs/asura-lib-core/graphics/binding/_image.cpp
deleted file mode 100644
index cb008d3..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_image.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-#include "../image.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(Image)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "New",       _New       },
-				{ "Load",      _Load      },
-				{ "GetWidth",  _GetWidth  },
-				{ "GetHeight", _GetHeight },
-				{ "GetSize",   _GetSize   },
-				{ "GetPixel",  _GetPixel  },
-				{ "Render",    _Render    }
-			);
-		}
-
-		LUAX_POSTPROCESS(Image)
-		{
-
-		}
-
-		// image = Image.New()
-		LUAX_IMPL_METHOD(Image, _New)
-		{
-			LUAX_STATE(L);
-
-			Image* image = new Image();
-			image->PushLuaxUserdata(state); 
-			return 0;
-		}
-
-		// successed = image:Load(image_data)
-		LUAX_IMPL_METHOD(Image, _Load)
-		{
-			LUAX_PREPARE(L, Image);
-
-			ImageData* imgdata = state.CheckUserdata<ImageData>(2);
-			bool loaded = self->Load(imgdata);
-			state.Push(loaded);
-			return 1;
-		}
-
-		// width = image:GetWidth()
-		LUAX_IMPL_METHOD(Image, _GetWidth)
-		{
-			LUAX_PREPARE(L, Image);
-
-			state.Push(self->GetWidth());
-			return 1;
-		}
-
-		// height = image:GetHeight()
-		LUAX_IMPL_METHOD(Image, _GetHeight)
-		{
-			LUAX_PREPARE(L, Image);
-
-			state.Push(self->GetHeight());
-			return 1;
-		}
-
-		// w, h = image:GetSize()
-		LUAX_IMPL_METHOD(Image, _GetSize)
-		{
-			LUAX_PREPARE(L, Image);
-
-			Math::Vector2u size = self->GetSize();
-			state.Push(size.x);
-			state.Push(size.y);
-			return 2;
-		}
-
-		// color32 = image:GetPixel(x, y)
-		LUAX_IMPL_METHOD(Image, _GetPixel)
-		{
-			LUAX_PREPARE(L, Image);
-
-			uint x = state.CheckValue<uint>(2);
-			uint y = state.CheckValue<uint>(3);
-			Color32* c32 = new Color32(self->GetPixel(x, y));
-			c32->PushLuaxUserdata(state);
-			return 1;
-		}
-
-		// image:Render()
-		LUAX_IMPL_METHOD(Image, _Render)
-		{
-			LUAX_PREPARE(L, Image);
-
-			return 0;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/binding/_image_data.cpp b/source/libs/asura-lib-core/graphics/binding/_image_data.cpp
deleted file mode 100644
index 3ff38f9..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_image_data.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "../image_data.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(ImageData)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "New",            _New            },
-				{ "GetPixel",       _GetPixel       },
-				{ "GetSize",        _GetSize        },
-				{ "GetWidth",       _GetWidth       },
-				{ "GetHeight",      _GetHeight      },
-				{ "GetPixelFormat", _GetPixelFormat }
-			);
-		}
-
-		LUAX_POSTPROCESS(ImageData)
-		{
-
-		}
-
-		// ImageData.New()
-		LUAX_IMPL_METHOD(ImageData, _New)
-		{
-			LUAX_STATE(L);
-
-		}
-
-		// imagedata:GetPixel()
-		LUAX_IMPL_METHOD(ImageData, _GetPixel)
-		{
-			LUAX_PREPARE(L, ImageData);
-
-		}
-
-		// imagedata:GetSize()
-		LUAX_IMPL_METHOD(ImageData, _GetSize)
-		{
-			LUAX_PREPARE(L, ImageData);
-
-		}
-
-		// imagedata:GetWidth()
-		LUAX_IMPL_METHOD(ImageData, _GetWidth)
-		{
-			LUAX_PREPARE(L, ImageData);
-
-		}
-
-		// imagedata:GetHeight()
-		LUAX_IMPL_METHOD(ImageData, _GetHeight)
-		{
-			LUAX_PREPARE(L, ImageData);
-
-		}
-
-		// imagedata:GetPixelFormat()
-		LUAX_IMPL_METHOD(ImageData, _GetPixelFormat)
-		{
-			LUAX_PREPARE(L, ImageData);
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_image_decode_task.cpp b/source/libs/asura-lib-core/graphics/binding/_image_decode_task.cpp
deleted file mode 100644
index 76b544b..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_image_decode_task.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "../image_decode_task.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(ImageDecodeTask)
-		{
-
-		}
-
-		LUAX_POSTPROCESS(ImageDecodeTask)
-		{
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp b/source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp
deleted file mode 100644
index 07e9f12..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_mesh2d.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "../mesh2d.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(Mesh2D)
-		{
-
-		}
-
-		LUAX_POSTPROCESS(Mesh2D)
-		{
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_shader.cpp b/source/libs/asura-lib-core/graphics/binding/_shader.cpp
deleted file mode 100644
index a06e54b..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_shader.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-#include "../shader.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(Shader)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "New",                _New                },
-				{ "Use",                _Use                },
-				{ "Unuse",              _Unuse              },
-				{ "Load",               _Load               },
-				{ "HasUniform",         _HasUniform         },
-				{ "GetUniformLocation", _GetUniformLocation },
-				{ "SetBuiltInUniforms", _SetBuiltInUniforms },
-				{ "SetUniformFloat",    _SetUniformFloat    },
-				{ "SetUniformTexture",  _SetUniformTexture  },
-				{ "SetUniformVector2",  _SetUniformVector2  },
-				{ "SetUniformVector3",  _SetUniformVector3  },
-				{ "SetUniformVector4",  _SetUniformVector4  },
-				{ "SetUniformColor",    _SetUniformColor    }
-			);
-		}
-
-		LUAX_POSTPROCESS(Shader)
-		{
-
-		}
-
-		// Shader.New()
-		LUAX_IMPL_METHOD(Shader, _New)
-		{
-			LUAX_STATE(L);
-
-		}
-
-		// shader:Use()
-		LUAX_IMPL_METHOD(Shader, _Use)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:Unuse()
-		LUAX_IMPL_METHOD(Shader, _Unuse)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:Load()
-		LUAX_IMPL_METHOD(Shader, _Load)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:HasUniform()
-		LUAX_IMPL_METHOD(Shader, _HasUniform)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:GetUniformLocation()
-		LUAX_IMPL_METHOD(Shader, _GetUniformLocation)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:SetBuiltInUniforms()
-		LUAX_IMPL_METHOD(Shader, _SetBuiltInUniforms)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:SetUniformFloat()
-		LUAX_IMPL_METHOD(Shader, _SetUniformFloat)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:SetUniformTexture()
-		LUAX_IMPL_METHOD(Shader, _SetUniformTexture)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:SetUniformVector2()
-		LUAX_IMPL_METHOD(Shader, _SetUniformVector2)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:SetUniformVector3()
-		LUAX_IMPL_METHOD(Shader, _SetUniformVector3)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:SetUniformVector4()
-		LUAX_IMPL_METHOD(Shader, _SetUniformVector4)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-		// shader:SetUniformColor()
-		LUAX_IMPL_METHOD(Shader, _SetUniformColor)
-		{
-			LUAX_PREPARE(L, Shader);
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp b/source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp
deleted file mode 100644
index 8556c02..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_sprite_batch.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "../sprite_batch.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(SpriteBatch)
-		{
-
-		}
-
-		LUAX_POSTPROCESS(SpriteBatch)
-		{
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/binding/_window.cpp b/source/libs/asura-lib-core/graphics/binding/_window.cpp
deleted file mode 100644
index fc74d6c..0000000
--- a/source/libs/asura-lib-core/graphics/binding/_window.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include "../window.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Graphics 
-	{
-		
-		LUAX_REGISTRY(Window)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "Show",             _Show             },
-				{ "Hide",             _Hide             },
-				{ "SetResolution",    _SetResolution    },
-				{ "SetFullScreen",    _SetFullScreen    },
-				{ "SetTitle",         _SetTitle         },
-				{ "SetWindowStyle",   _SetWindowStyle   },
-				{ "Clear",            _Clear            },
-				{ "Draw",             _Draw             },
-				{ "SwapRenderBuffer", _SwapRenderBuffer }
-			);
-		}
-
-		LUAX_POSTPROCESS(Window)
-		{
-
-		}
-
-		// window:Show()
-		LUAX_IMPL_METHOD(Window, _Show)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:Hide()
-		LUAX_IMPL_METHOD(Window, _Hide)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:SetResolution()
-		LUAX_IMPL_METHOD(Window, _SetResolution)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:SetFullScreen()
-		LUAX_IMPL_METHOD(Window, _SetFullScreen)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:SetTitle()
-		LUAX_IMPL_METHOD(Window, _SetTitle)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:SetWindowStyle()
-		LUAX_IMPL_METHOD(Window, _SetWindowStyle)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:Clear()
-		LUAX_IMPL_METHOD(Window, _Clear)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:Draw()
-		LUAX_IMPL_METHOD(Window, _Draw)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-		// window:SwapRenderBuffer()
-		LUAX_IMPL_METHOD(Window, _SwapRenderBuffer)
-		{
-			LUAX_PREPARE(L, Window);
-
-			return 0;
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/blend_mode.h b/source/libs/asura-lib-core/graphics/blend_mode.h
deleted file mode 100644
index 775cc45..0000000
--- a/source/libs/asura-lib-core/graphics/blend_mode.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef __ASURA_ENGINE_BLEND_MODE_H__
-#define __ASURA_ENGINE_BLEND_MODE_H__
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		enum BlendMode
-		{
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/canvas.cpp b/source/libs/asura-lib-core/graphics/canvas.cpp
deleted file mode 100644
index 61787b6..0000000
--- a/source/libs/asura-lib-core/graphics/canvas.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "Canvas.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		Canvas::Canvas()
-			: Texture() 
-			, mWidth(0)
-			, mHeight(0)
-		{
-			glGenFramebuffers(1, &mFBO);
-			GLint current_fbo;
-			glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &current_fbo);
-			glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
-			glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTextureHandle, 0);
-			glBindFramebuffer(GL_FRAMEBUFFER, current_fbo);
-		}
-
-		void Canvas::SetSize(uint w, uint h)
-		{
-			GLint current_tex; 
-			glGetIntegerv(GL_TEXTURE_BINDING_2D, &current_tex);
-			glBindTexture(GL_TEXTURE_2D, mTextureHandle);
-
-			glBindTexture(GL_TEXTURE_2D, current_tex);
-		}
-
-		void Canvas::Bind()
-		{
-
-		}
-
-		void Canvas::Unbind()
-		{
-
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/canvas.h b/source/libs/asura-lib-core/graphics/canvas.h
deleted file mode 100644
index 5b188ca..0000000
--- a/source/libs/asura-lib-core/graphics/canvas.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef __ASURA_ENGINE_CANVAS_H__
-#define __ASURA_ENGINE_CANVAS_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-#include <asura-lib-utils/math/rect.hpp>
-#include <asura-lib-utils/math/vector2.hpp>
-
-#include "gl.h"
-#include "texture.h"
-#include "render_target.h"
-#include "render_state.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// CanvasҲ���Գ�Ϊrender texture������Ҳ������Ϊtexture��Ⱦ��
-		///
-		class Canvas ASURA_FINAL
-			: public Drawable
-			, public RenderTarget
-			, public Scripting::Portable<Canvas>
-		{
-		public:
-
-			Canvas();
-
-			~Canvas();
-
-			///
-			/// ����render texture�Ĵ�С
-			///
-			void SetSize(uint w, uint h);
-
-			void Clear(const Color& col = Color::Black) override;
-
-			void Clear(const Math::Recti& quad, const Color& col = Color::Black) override;
-
-			void Render(const RenderTarget* rt, const Math::Vector2i& pos, const Math::Vector2i& scale, const Math::Vector2i& center, float rot);
-
-			void Render(const RenderTarget* rt, const Math::Rectf& quad, const Math::Vector2i& pos, const Math::Vector2i& scale, const Math::Vector2i& center, float rot);
-
-			void Draw(const Drawable* texture, const RenderState& state);
-
-			void Draw(const Drawable* texture, const Math::Recti& quad, const RenderState& state);
-
-		private:
-
-			///
-			/// Frame buffer object id.
-			///
-			GLuint mFBO;
-
-			///
-			/// canvas�Ĵ�С
-			///
-			uint mWidth, mHeight;
-
-		public:
-
-			//----------------------------------------------------------------------------------------------------------
-
-			LUAX_DECL_FACTORY(SimCanvas);
-
-			LUAX_DECL_METHOD(_SetSize);
-			LUAX_DECL_METHOD(_Bind);
-			LUAX_DECL_METHOD(_Unbind);
-
-			//----------------------------------------------------------------------------------------------------------
-
-		};
-
-		///
-		/// Canvas����ΪRenderTexture
-		///
-		using RenderTexture = Canvas;
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/color.cpp b/source/libs/asura-lib-core/graphics/color.cpp
deleted file mode 100644
index 4d3691e..0000000
--- a/source/libs/asura-lib-core/graphics/color.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "color.h"
-#include "color32.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		Color::Color()
-		{
-			r = g = b = a = 0;
-		}
-
-		Color::Color(const Color& c)
-		{
-			r = c.r;
-			g = c.g;
-			b = c.b;
-			a = c.a;
-		}
-
-		Color::Color(float r, float g, float b, float a)
-		{
-			this->r = r;
-			this->g = g;
-			this->b = b;
-			this->a = a;
-		}
-
-		Color::Color(const Color32& c)
-		{
-			r = c.r / 255.f;
-			g = c.g / 255.f;
-			b = c.b / 255.f;
-			a = c.a / 255.f;
-		}
-
-		Color Color::operator *(const Color& c)
-		{
-			r *= c.r;
-			g *= c.g;
-			b *= c.b;
-			a *= c.a;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/color.h b/source/libs/asura-lib-core/graphics/color.h
deleted file mode 100644
index 607314b..0000000
--- a/source/libs/asura-lib-core/graphics/color.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef __ASURA_ENGINE_COLOR_H__
-#define __ASURA_ENGINE_COLOR_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "../core_config.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class Color32;
-
-		///
-		/// �淶����ɫ
-		///
-		class Color ASURA_FINAL
-			: public Scripting::Portable<Color>
-		{
-		public: 
-
-			static Color Black;
-			static Color White;
-			static Color Red;
-			static Color Green;
-			static Color Blue;
-
-			Color(); 
-
-			Color(const Color& c);
-
-			Color(float r, float g, float b, float a);
-
-			Color(const Color32& c);
-
-			~Color();
-
-			Color operator *(const Color& c);
-			
-			float r, g, b, a;
-
-			LUAX_DECL_FACTORY(Color);
-
-			LUAX_DECL_METHOD(_ToColor32);
-			LUAX_DECL_METHOD(_SetColor);
-			LUAX_DECL_METHOD(_GetColor);
-			LUAX_DECL_METHOD(_Multiply); // ��ɫ�˷�
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/color32.cpp b/source/libs/asura-lib-core/graphics/color32.cpp
deleted file mode 100644
index 0ebc77c..0000000
--- a/source/libs/asura-lib-core/graphics/color32.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "color.h"
-#include "color32.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		Color32::Color32()
-		{
-			r = g = b = a = 0;
-		}
-
-		Color32::Color32(const Color32& c)
-		{
-			r = c.r;
-			g = c.g;
-			b = c.b;
-			a = c.a;
-		}
-
-		Color32::Color32(const Color& c)
-		{
-			r = 255.f * c.r;
-			g = 255.f * c.g;
-			b = 255.f * c.b;
-			a = 255.f * c.a;
-		}
-
-		Color32::Color32(byte r, byte g, byte b, byte a)
-		{
-			this->r = r;
-			this->g = g;
-			this->b = b;
-			this->a = a;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/color32.h b/source/libs/asura-lib-core/graphics/color32.h
deleted file mode 100644
index c64a9b9..0000000
--- a/source/libs/asura-lib-core/graphics/color32.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef __ASURA_ENGINE_COLOR32_H__
-#define __ASURA_ENGINE_COLOR32_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "../core_config.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class Color;
-
-		///
-		/// 32bits��ɫ
-		///
-		class Color32 ASURA_FINAL
-			: public Scripting::Portable<Color32>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(Color32);
-
-			Color32();
-
-			~Color32();
-
-			Color32(const Color32& c);
-
-			Color32(const Color& c);
-
-			Color32(byte r, byte g, byte b, byte a);
-
-			byte r, g, b, a;
-
-			LUAX_DECL_METHOD(_ToColor);
-			LUAX_DECL_METHOD(_GetRed);
-			LUAX_DECL_METHOD(_GetGreen);
-			LUAX_DECL_METHOD(_GetBlue);
-			LUAX_DECL_METHOD(_GetAlpha);
-			LUAX_DECL_METHOD(_Multiply);
-			LUAX_DECL_METHOD(_Index); //����r,g,b,a
-			LUAX_DECL_METHOD(_NewIndex); //�޸�r,g,b,a
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/color_palette.h b/source/libs/asura-lib-core/graphics/color_palette.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/gif.cpp b/source/libs/asura-lib-core/graphics/gif.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/gif.h b/source/libs/asura-lib-core/graphics/gif.h
deleted file mode 100644
index 8b89858..0000000
--- a/source/libs/asura-lib-core/graphics/gif.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __ASURA_GIF_H__
-#define __ASURA_GIF_H__
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// Gif
-		///
-		class Gif
-		{
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/gl.cpp b/source/libs/asura-lib-core/graphics/gl.cpp
deleted file mode 100644
index 7c68c8f..0000000
--- a/source/libs/asura-lib-core/graphics/gl.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "../core_config.h"
-#include "gl.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		bool OpenGL::instantiated = false;
-
-		// ����
-		OpenGL gl;
-
-		OpenGL::OpenGL()
-		{
-			ASSERT(!instantiated);
-			instantiated = true;
-		}
-
-		OpenGL::~OpenGL()
-		{
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/gl.h b/source/libs/asura-lib-core/graphics/gl.h
deleted file mode 100644
index bfc60ea..0000000
--- a/source/libs/asura-lib-core/graphics/gl.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef __ASURA_ENGINE_OPENGL_H__
-#define __ASURA_ENGINE_OPENGL_H__
-
-#include "glad/glad.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class Profiler;
-
-		///
-		/// ������һЩopengl״̬��׷�١�
-		///
-		class OpenGL
-		{
-		public:
-			OpenGL();
-			~OpenGL();
-
-		private:
-
-			friend class Profiler;
-
-			///
-			/// ����opengl������
-			/// 
-			static bool instantiated;
-
-		};
-
-		///
-		/// OpenGL������
-		///
-		extern OpenGL gl;
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/image.cpp b/source/libs/asura-lib-core/graphics/image.cpp
deleted file mode 100644
index e704945..0000000
--- a/source/libs/asura-lib-core/graphics/image.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "Config.h"
-#include "Image.h"
-#include "GL.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		Image::Image()
-		{
-		}
-
-		Image::~Image()
-		{
-		}
-
-		//����\��������������Ϣ
-		bool Image::Load(ImageData* data)
-		{
-			ASSERT(data);
-
-			glBindTexture(GL_TEXTURE_2D, mTextureHandle);
-			glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, data->width, data->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data->pixels);
-			glBindTexture(GL_TEXTURE_2D, 0);
-			return true;
-
-			RRA(data, mImageData);
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/image.h b/source/libs/asura-lib-core/graphics/image.h
deleted file mode 100644
index 4d9787b..0000000
--- a/source/libs/asura-lib-core/graphics/image.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef __ASURA_ENGINE_IMAGE_H__
-#define __ASURA_ENGINE_IMAGE_H__
-
-#include <asura-lib-utils/math/rect.hpp>
-#include <asura-lib-utils/math/vector2.hpp>
-#include <asura-lib-utils/scripting/portable.hpp>
-#include <asura-lib-utils/io/reloadable.h>
-#include <asura-lib-utils/stringmap.hpp>
-#include <asura-lib-utils/manager.hpp>
-
-#include "texture.h"
-#include "color.h"
-#include "color32.h"
-#include "image_data.h"
-#include "render_state.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class ImageFactory;
-
-		///
-		/// Image��ͼƬ���ڴ�������󣬶�ȡ����Ϸ�󱣴�Ľ����һ��Image���ڴ桢�Դ���ֻ�ᱣ��һ
-		/// �ݣ����������������Ҫ������������image����ê��λ�ã����ź���ת�Ƕȣ�ʹ��sprite��
-		/// ��һ��ֻ���ࡣ��Ҫ�ǿ��ǵ�editor��engineʹ�ò�ͬ�ķ�װ��
-		///
-		class Image ASURA_FINAL
-			: public Drawable
-			, public Scripting::Portable<Image>
-			, public AEIO::Reloadable
-		{
-		public:
-
-			LUAX_DECL_FACTORY(SimImage);
-
-			Image();
-
-			~Image();
-
-			///
-			/// ������buffer����image������Ϣ�����mPixels��Ϊ�գ���������ݡ��������¹���image��
-			/// ʹ��glTexImage2D�����ύimage���������ݡ�
-			///
-			bool Load(ImageData* data);
-
-			uint GetWidth();
-			uint GetHeight();
-			Math::Vector2u GetSize();
-
-			///
-			/// ���ijһ��λ�õ�����
-			///
-			Color32 GetPixel(uint x, uint y);
-
-			void Render(const RenderTarget* rt, const RenderState& state) override;
-
-			void Render(const RenderTarget* rt, const Math::Rectf& quad, const RenderState& state) override;
-
-		private:
-
-			ImageData*          mImageData;
-			Luax::LuaxMemberRef mImageDataRef;
-
-			Math::Vector2u mSize;
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_Load);
-			LUAX_DECL_METHOD(_GetWidth);
-			LUAX_DECL_METHOD(_GetHeight);
-			LUAX_DECL_METHOD(_GetSize);
-			LUAX_DECL_METHOD(_GetPixel);
-			LUAX_DECL_METHOD(_Render);
-
-		};
-
-	}
-}
-
-namespace AEGraphics = AsuraEngine::Graphics;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/image_data.cpp b/source/libs/asura-lib-core/graphics/image_data.cpp
deleted file mode 100644
index b79dfab..0000000
--- a/source/libs/asura-lib-core/graphics/image_data.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "image_data.h"
-#include "png_decoder.h"
-#include "stb_decoder.h"
-#include "image_decoder.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		using namespace std;
-
-		// ����image��decoder��������Ϊ�������ԡ�
-		list<ImageDecoder*> ImageData::ImageDecoders = {
-			new PNGDecoder(), // png 
-			new STBDecoder()  // jpeg, tga, bmp
-		};
-
-		ImageData::ImageData(const IO::DataBuffer& buffer)
-			: DecodedData(buffer)
-		{
-		}
-
-		ImageData::~ImageData()
-		{
-			if (pixels)
-				delete[] pixels;
-		}
-
-		///
-		/// ����������޷��ɹ����׳��쳣
-		///
-		void ImageData::Decode(const IO::DataBuffer& buffer)
-		{
-			for (ImageDecoder* decoder : ImageDecoders)
-			{
-				if (decoder->CanDecode(buffer))
-				{
-					decoder->Decode(buffer, *this);
-					return;
-				}
-			}
-		}
-
-		Color ImageData::GetPixel(uint x, uint y)
-		{
-
-		}
-		
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/image_data.h b/source/libs/asura-lib-core/graphics/image_data.h
deleted file mode 100644
index 820e276..0000000
--- a/source/libs/asura-lib-core/graphics/image_data.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef __ASURA_ENGINE_IMAGEDATA_H__
-#define __ASURA_ENGINE_IMAGEDATA_H__
-
-#include <list>
-
-#include <asura-lib-utils/scripting/portable.hpp>
-#include <asura-lib-utils/io/decoded_data.h>
-#include <asura-lib-utils/io/data_buffer.h>
-#include <asura-lib-utils/threading/thread.h>
-
-#include "pixel_format.h"
-#include "color.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class ImageDecoder;
-
-		class ImageData ASURA_FINAL
-			: public AEIO::DecodedData
-			, public Scripting::Portable<ImageData>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(ImageData);
-
-			///
-			/// ����ͼƬ�����ļ���������������Ϣ���������ʧ�ܣ��׳��쳣
-			///
-			ImageData(const AEIO::DataBuffer& buffer);
-			~ImageData();
-
-			void Load(const AEIO::DataBuffer& buffer);
-			void LoadAsync(const AEIO::DataBuffer& buffer, AEThreading::Thread* thread);
-
-			Color GetPixel(uint x, uint y);
-
-			uint width, height;
-			PixelFormat format;
-			std::size_t size;
-			byte* pixels;
-
-		private:
-
-			void Decode(const AEIO::DataBuffer& buffer) override;
-
-			///
-			/// �ڵ�һ��׼��image dataʱ���������ṩ��decoder���ڼ���decoders�м�ѡ��������ԡ�
-			///
-			static std::list<ImageDecoder*> ImageDecoders;
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_GetPixel);
-			LUAX_DECL_METHOD(_GetSize);
-			LUAX_DECL_METHOD(_GetWidth);
-			LUAX_DECL_METHOD(_GetHeight);
-			LUAX_DECL_METHOD(_GetPixelFormat);
-
-		};
-
-	}
-}
-
-namespace AEGraphics = AsuraEngine::Graphics;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/image_decode_task.cpp b/source/libs/asura-lib-core/graphics/image_decode_task.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/image_decode_task.h b/source/libs/asura-lib-core/graphics/image_decode_task.h
deleted file mode 100644
index a721b3e..0000000
--- a/source/libs/asura-lib-core/graphics/image_decode_task.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __ASURA_IMAGE_DECODE_TASK_H__
-#define __ASURA_IMAGE_DECODE_TASK_H__
-
-#include <asura-lib-utils/threading/thread_task.h>
-#include <asura-lib-utils/scripting/portable.hpp>
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class ImageDecodeTask
-			: public AEScripting::Portable<ImageDecodeTask>
-			, public AEThreading::ThreadTask
-		{
-		public:
-
-			LUAX_DECL_FACTORY(ImageDecodeTask);
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/image_decoder.h b/source/libs/asura-lib-core/graphics/image_decoder.h
deleted file mode 100644
index 6f2049a..0000000
--- a/source/libs/asura-lib-core/graphics/image_decoder.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef __ASURA_ENGINE_IMAGE_DECODER_H__
-#define __ASURA_ENGINE_IMAGE_DECODER_H__
-
-#include <asura-lib-utils/io/data_buffer.h>
-
-#include "image_data.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class ImageDecoder
-		{
-		public:
-			
-			ImageDecoder();
-			virtual ~ImageDecoder();
-
-			///
-			/// �ж��ڴ��Ƿ����ñ�decoder��ѹ
-			///
-			virtual bool CanDecode(const AEIO::DataBuffer& buffer) = 0;
-
-			///
-			/// ����һ���������ڴ棬���һ����ѹ���Image data�������ѹʧ�ܷ���nullptr
-			///
-			virtual void Decode(const AEIO::DataBuffer& buffer, ImageData& data) = 0;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/mesh2d.cpp b/source/libs/asura-lib-core/graphics/mesh2d.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/mesh2d.h b/source/libs/asura-lib-core/graphics/mesh2d.h
deleted file mode 100644
index 48b461d..0000000
--- a/source/libs/asura-lib-core/graphics/mesh2d.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __ASURA_ENGINE_MESH2D_H__
-#define __ASURA_ENGINE_MESH2D_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// 2D mesh��������һЩ���㶯����
-		///
-		class Mesh2D ASURA_FINAL 
-			: public Scripting::Portable<Mesh2D>
-		{
-		public:
-
-			Mesh2D();
-
-			~Mesh2D();
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/mesh2d_data.cpp b/source/libs/asura-lib-core/graphics/mesh2d_data.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/mesh2d_data.h b/source/libs/asura-lib-core/graphics/mesh2d_data.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/pixel_format.h b/source/libs/asura-lib-core/graphics/pixel_format.h
deleted file mode 100644
index 8df07d5..0000000
--- a/source/libs/asura-lib-core/graphics/pixel_format.h
+++ /dev/null
@@ -1,91 +0,0 @@
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// ���ظ�ʽ
-		///
-		enum PixelFormat
-		{
-			PIXELFORMAT_UNKNOWN,
-
-			// these are converted to an actual format by love
-			PIXELFORMAT_NORMAL,
-			PIXELFORMAT_HDR,
-
-			// "regular" formats
-			PIXELFORMAT_R8,
-			PIXELFORMAT_RG8,
-			PIXELFORMAT_RGBA8,
-			PIXELFORMAT_sRGBA8,
-			PIXELFORMAT_R16,
-			PIXELFORMAT_RG16,
-			PIXELFORMAT_RGBA16,
-			PIXELFORMAT_R16F,
-			PIXELFORMAT_RG16F,
-			PIXELFORMAT_RGBA16F,
-			PIXELFORMAT_R32F,
-			PIXELFORMAT_RG32F,
-			PIXELFORMAT_RGBA32F,
-
-			PIXELFORMAT_LA8, // Same as RG8, but accessed as (L, L, L, A)
-
-			// packed formats
-			PIXELFORMAT_RGBA4,
-			PIXELFORMAT_RGB5A1,
-			PIXELFORMAT_RGB565,
-			PIXELFORMAT_RGB10A2,
-			PIXELFORMAT_RG11B10F,
-
-			// depth/stencil formats
-			PIXELFORMAT_STENCIL8,
-			PIXELFORMAT_DEPTH16,
-			PIXELFORMAT_DEPTH24,
-			PIXELFORMAT_DEPTH32F,
-			PIXELFORMAT_DEPTH24_STENCIL8,
-			PIXELFORMAT_DEPTH32F_STENCIL8,
-
-			// compressed formats
-			PIXELFORMAT_DXT1,
-			PIXELFORMAT_DXT3,
-			PIXELFORMAT_DXT5,
-			PIXELFORMAT_BC4,
-			PIXELFORMAT_BC4s,
-			PIXELFORMAT_BC5,
-			PIXELFORMAT_BC5s,
-			PIXELFORMAT_BC6H,
-			PIXELFORMAT_BC6Hs,
-			PIXELFORMAT_BC7,
-			PIXELFORMAT_PVR1_RGB2,
-			PIXELFORMAT_PVR1_RGB4,
-			PIXELFORMAT_PVR1_RGBA2,
-			PIXELFORMAT_PVR1_RGBA4,
-			PIXELFORMAT_ETC1,
-			PIXELFORMAT_ETC2_RGB,
-			PIXELFORMAT_ETC2_RGBA,
-			PIXELFORMAT_ETC2_RGBA1,
-			PIXELFORMAT_EAC_R,
-			PIXELFORMAT_EAC_Rs,
-			PIXELFORMAT_EAC_RG,
-			PIXELFORMAT_EAC_RGs,
-			PIXELFORMAT_ASTC_4x4,
-			PIXELFORMAT_ASTC_5x4,
-			PIXELFORMAT_ASTC_5x5,
-			PIXELFORMAT_ASTC_6x5,
-			PIXELFORMAT_ASTC_6x6,
-			PIXELFORMAT_ASTC_8x5,
-			PIXELFORMAT_ASTC_8x6,
-			PIXELFORMAT_ASTC_8x8,
-			PIXELFORMAT_ASTC_10x5,
-			PIXELFORMAT_ASTC_10x6,
-			PIXELFORMAT_ASTC_10x8,
-			PIXELFORMAT_ASTC_10x10,
-			PIXELFORMAT_ASTC_12x10,
-			PIXELFORMAT_ASTC_12x12,
-
-			PIXELFORMAT_MAX_ENUM
-		};
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/png_decoder.cpp b/source/libs/asura-lib-core/graphics/png_decoder.cpp
deleted file mode 100644
index f919090..0000000
--- a/source/libs/asura-lib-core/graphics/png_decoder.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "PNGDecoder.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		bool PNGDecoder::CanDecode(const Filesystem::DataBuffer& buffer)
-		{
-			return false;
-		}
-
-		void PNGDecoder::Decode(const Filesystem::DataBuffer& buffer, ImageData& data)
-		{
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/graphics/png_decoder.h b/source/libs/asura-lib-core/graphics/png_decoder.h
deleted file mode 100644
index bc871fa..0000000
--- a/source/libs/asura-lib-core/graphics/png_decoder.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __ASURA_ENGINE_PNGDECODER_H__
-#define __ASURA_ENGINE_PNGDECODER_H__
-
-#include "image_decoder.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// ʹ��lodepng��ѹpng�ļ�
-		///
-		class PNGDecoder ASURA_FINAL: public ImageDecoder
-		{
-		public:
-
-			bool CanDecode(const AEIO::DataBuffer& buffer) override;
-
-			void Decode(const AEIO::DataBuffer& buffer, ImageData& data) override;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/quad.cpp b/source/libs/asura-lib-core/graphics/quad.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/quad.h b/source/libs/asura-lib-core/graphics/quad.h
deleted file mode 100644
index b7dd3d9..0000000
--- a/source/libs/asura-lib-core/graphics/quad.h
+++ /dev/null
@@ -1 +0,0 @@
-// Quad��rect���������ڣ�rect�ǵı�ƫ�����ᣬquad��һ����
diff --git a/source/libs/asura-lib-core/graphics/render_state.h b/source/libs/asura-lib-core/graphics/render_state.h
deleted file mode 100644
index 4d1831c..0000000
--- a/source/libs/asura-lib-core/graphics/render_state.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef __ASURA_ENGINE_RENDER_STATE_H__
-#define __ASURA_ENGINE_RENDER_STATE_H__
-
-#include <asura-lib-utils/math/vector2.hpp>
-#include <asura-lib-utils/math/transform.h>
-
-#include "Shader.h"
-#include "blend_mode.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// ��Ⱦ��ǰ�����ķ�ʽ
-		///
-		struct RenderState ASURA_FINAL
-		{
-			///
-			/// Ĭ�ϵ�render state
-			///
-			static RenderState Default;
-
-			RenderState();
-			~RenderState();
-
-			///
-			/// λ�á����š�����λ�ú���ת
-			///
-
-			Math::Transform transform;
-
-			///
-			/// ��ɫ��
-			///
-			Shader* shader;
-
-			///
-			/// ��Ϸ�ʽ
-			///
-			BlendMode blendMode;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/render_target.cpp b/source/libs/asura-lib-core/graphics/render_target.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/render_target.h b/source/libs/asura-lib-core/graphics/render_target.h
deleted file mode 100644
index afa5c6a..0000000
--- a/source/libs/asura-lib-core/graphics/render_target.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef __ASURA_ENGINE_RENDERTARGET_H__
-#define __ASURA_ENGINE_RENDERTARGET_H__
-
-#include <asura-lib-utils/math/vector2.hpp>
-#include <asura-lib-utils/math/rect.hpp>
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "texture.h"
-#include "color.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class Drawable;
-
-		///
-		/// �ɱ���Ϊ��ȾĿ����࣬��������
-		///     Canvas(RenderTexture) 
-		///     Window(RenderWindow)
-		///
-		class RenderTarget
-		{
-		public:
-
-			RenderTarget() {};
-
-			virtual ~RenderTarget() {};
-
-			///
-			/// ����ɫcol�������RT
-			///
-			virtual void Clear(const Color& col = Color::Black) = 0;
-
-			///
-			/// ����ɫcol��ղ���RT
-			///
-			virtual void Clear(const Math::Recti& quad, const Color& col = Color::Black) = 0;
-
-			///
-			/// ����texture����RT��
-			///
-			virtual void Draw(const Drawable* texture, const RenderState& state) = 0;
-
-			///
-			/// ����һ����texture����RT��
-			///
-			virtual void Draw(const Drawable* texture, const Math::Recti& quad, const RenderState& state) = 0;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/shader.cpp b/source/libs/asura-lib-core/graphics/shader.cpp
deleted file mode 100644
index 1a85866..0000000
--- a/source/libs/asura-lib-core/graphics/shader.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "Shader.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		Shader::Shader()
-		{
-
-		}
-
-		Shader::~Shader()
-		{
-
-		}
-
-		bool Shader::Load(const std::string& vertexShader, const std::string& fragmentShader)
-		{
-
-		}
-
-		uint Shader::GetUniformLocation(const std::string& uniform)
-		{
-
-		}
-
-		GLuint Shader::GetGLProgramHandle()
-		{
-			return mProgramHandle;
-		}
-
-		void Shader::Use()
-		{
-
-		}
-
-		void Shader::Unuse()
-		{
-
-		}
-
-		void Shader::SetUniformFloat(uint loc, float value)
-		{
-
-		}
-
-		void Shader::SetUniformFloat(uint loc, float value)
-		{
-
-		}
-
-		void Shader::SetUniformTexture(uint loc, const Texture& texture)
-		{
-
-		}
-
-		void Shader::SetUniformVector2(uint loc, const Math::Vector2f& vec2)
-		{
-
-		}
-
-		void Shader::SetUniformVector3(uint loc, const Math::Vector3f& vec3)
-		{
-
-		}
-
-		void Shader::SetUniformVector4(uint loc, const Math::Vector4f& vec4)
-		{
-
-		}
-
-		uint Shader::GetGLTextureUnitCount()
-		{
-			GLint maxTextureUnits = 0;
-			glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureUnits);
-			return (uint)maxTextureUnits;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/shader.h b/source/libs/asura-lib-core/graphics/shader.h
deleted file mode 100644
index 1c81355..0000000
--- a/source/libs/asura-lib-core/graphics/shader.h
+++ /dev/null
@@ -1,126 +0,0 @@
-#ifndef __ASURA_ENGINE_SHADER_H__
-#define __ASURA_ENGINE_SHADER_H__
-
-#include <map>
-#include <string>
-
-#include <asura-lib-utils/scripting/portable.hpp>
-#include <asura-lib-utils/io/reloadable.h>
-#include <asura-lib-utils/math/vector2.hpp>
-#include <asura-lib-utils/math/vector3.hpp>
-#include <asura-lib-utils/math/vector4.h>
-#include <asura-lib-utils/math/matrix44.h>
-#include <asura-lib-utils/stringmap.hpp>
-#include <asura-lib-utils/manager.hpp>
-
-#include "color.h"
-#include "texture.h"
-#include "gl.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// һ��shader��һ���ڲ��ʼ乲���ij���Shader����������uniforms�Ͷ������ݣ�ֻ�ṩ����uniforms��use��ɫ���ķ������༭
-		/// �����ÿ��shader����ͨ��shader�����ҵ�������uniforms����������¶��framework��material���á�
-		///
-		class Shader ASURA_FINAL
-			: public Scripting::Portable<Shader>
-			, public AEIO::Reloadable
-		{
-		public:
-
-			Shader();
-
-			~Shader();
-
-			///
-			/// �Ӵ������shader������ʱ���ȼ���Ƿ����ϴλ����uniforms location map��ʹ��glAttachShader���±���������ɫ����
-			/// ��������������ɫ������
-			///
-			bool Load(const std::string& vertexShader, const std::string& fragmentShader);
-
-			///
-			/// ������shader����Ϊ�
-			///
-			void Use();
-
-			///
-			/// ������shader����Ϊ�ǻ
-			///
-			void Unuse();
-
-			///
-			/// ���Ѿ�֪��uniform location������£�����ֵ��
-			///
-			void SetUniformFloat(uint loc, float value);
-			void SetUniformTexture(uint loc, const Texture& texture);
-			void SetUniformVector2(uint loc, const Math::Vector2f& vec2);
-			void SetUniformVector3(uint loc, const Math::Vector3f& vec3);
-			void SetUniformVector4(uint loc, const Math::Vector4f& vec4);
-			void SetUniformColor(uint loc, const Color& color);
-			void SetUniformMatrix44(uint loc, const Math::Matrix44& mat44);
-
-			uint GetUniformLocation(const std::string& uniform);
-
-			bool HasUniform(const std::string& uniform);
-
-			GLuint GetGLProgramHandle();
-
-			///
-			/// ���texture unit������һ��Ϊ16��
-			///
-			static uint GetGLTextureUnitCount();
-
-		private:
-
-			///
-			/// ��ǰ���shader
-			///
-			static Shader* mCurrentShader;
-
-			///
-			/// ����������
-			///	    vec2	Asura_Time             xֵΪ���뵱ǰ������ʼ��ʱ�䣬yֵΪ��һ֡��ʱ����
-			///	    vec2	Asura_RenderTargetSize RT�Ĵ�С��������Ϊ��λ
-			///	    Texture Asura_MainTexture	   ������
-			///
-			void SetBuiltInUniforms();
-
-			///
-			/// OpenGL shader program handle.
-			/// 
-			GLuint mProgramHandle;
-
-		//------------------------------------------------------------------------------//
-
-		public:
-
-			LUAX_DECL_FACTORY(SimShader);
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_Use);
-			LUAX_DECL_METHOD(_Unuse);
-			LUAX_DECL_METHOD(_Load);
-			LUAX_DECL_METHOD(_HasUniform);
-			LUAX_DECL_METHOD(_GetUniformLocation);
-			LUAX_DECL_METHOD(_SetBuiltInUniforms);
-			LUAX_DECL_METHOD(_SetUniformFloat);
-			LUAX_DECL_METHOD(_SetUniformTexture);
-			LUAX_DECL_METHOD(_SetUniformVector2);
-			LUAX_DECL_METHOD(_SetUniformVector3);
-			LUAX_DECL_METHOD(_SetUniformVector4);
-			LUAX_DECL_METHOD(_SetUniformColor);
-
-		private:
-
-			Luax::LuaxMemberRef mCodeLuaRef;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/shape.cpp b/source/libs/asura-lib-core/graphics/shape.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/shape.h b/source/libs/asura-lib-core/graphics/shape.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/sprite_batch.cpp b/source/libs/asura-lib-core/graphics/sprite_batch.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/graphics/sprite_batch.h b/source/libs/asura-lib-core/graphics/sprite_batch.h
deleted file mode 100644
index d8d9ca6..0000000
--- a/source/libs/asura-lib-core/graphics/sprite_batch.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __ASURA_ENGINE_SPRITE_BATCH_H__
-#define __ASURA_ENGINE_SPRITE_BATCH_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// Sprite batch����������Ⱦ����ͼƬ�ĵط�����������ϵͳ��
-		///
-		class SpriteBatch ASURA_FINAL 
-			: public Scripting::Portable<SpriteBatch>
-		{
-		public:
-
-			SpriteBatch();
-
-			~SpriteBatch();
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/stb_decoder.cpp b/source/libs/asura-lib-core/graphics/stb_decoder.cpp
deleted file mode 100644
index a13d6b8..0000000
--- a/source/libs/asura-lib-core/graphics/stb_decoder.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <asura-lib-utils/exceptions/exception.h>
-
-#include "stb_decoder.h"
-#include "stb/stb_image.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		bool STBDecoder::CanDecode(const Filesystem::DataBuffer& buffer)
-		{
-			int w = 0;
-			int h = 0;
-			int comp = 0;
-
-			int status = stbi_info_from_memory((const stbi_uc*)buffer.data, buffer.size, &w, &h, &comp);
-
-			return status == 1 && w > 0 && h > 0;
-		}
-
-		void STBDecoder::Decode(const Filesystem::DataBuffer& db, ImageData& imageData)
-		{
-			const stbi_uc *buffer = (const stbi_uc *)db.data;
-			int bufferlen = db.size;
-			int width, height;
-			int comp = 0;
-			byte* data = nullptr;
-			PixelFormat format = PIXELFORMAT_UNKNOWN;
-			std::size_t size = 0;
-
-			if (stbi_is_hdr_from_memory(buffer, bufferlen))
-			{
-				// 4��channel����float
-				data = (byte*)stbi_loadf_from_memory(buffer, bufferlen, &width, &height, &comp, STBI_rgb_alpha);
-				format = PIXELFORMAT_RGBA32F;
-				size = width * height * 4 * sizeof(float);
-			}
-			else
-			{
-				data = (byte*)stbi_load_from_memory(buffer, bufferlen, &width, &height, &comp, STBI_rgb_alpha);
-				format = PIXELFORMAT_ASTC_8x5;
-				size = width * height * 4;
-			}
-			if (data)
-			{
-				// ��֤�ڴ汻�ͷţ���һ�������������ϲ������û���ͷŵ��������Ϊimage data��һ���Եģ�image���Ƕ�εġ�
-				if (imageData.pixels)
-					delete[] imageData.pixels;
-				imageData.pixels = (byte*)data;
-				imageData.format = format;
-				imageData.width = width;
-				imageData.height = height;
-			}
-			else
-			{
-				const char *err = stbi_failure_reason();
-				if (err == nullptr)
-					err = "unknown error";
-				throw Exception("Could not decode image with stb_image (%s).", err);
-			}
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/stb_decoder.h b/source/libs/asura-lib-core/graphics/stb_decoder.h
deleted file mode 100644
index 85bad21..0000000
--- a/source/libs/asura-lib-core/graphics/stb_decoder.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __ASURA_ENGINE_STBDECODER_H__
-#define __ASURA_ENGINE_STBDECODER_H__
-
-#include "image_decoder.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		///
-		/// ʹ��stb_image��ѹJPEG��TGA��BMP�ļ�
-		///
-		class STBDecoder ASURA_FINAL
-			: public ImageDecoder
-		{
-		public:
-
-			bool CanDecode(const AEIO::DataBuffer& buffer) override;
-
-			void Decode(const AEIO::DataBuffer& buffer, ImageData& data) override;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/texture.cpp b/source/libs/asura-lib-core/graphics/texture.cpp
deleted file mode 100644
index 6cb6497..0000000
--- a/source/libs/asura-lib-core/graphics/texture.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "Texture.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		Texture::Texture()
-			: mTextureHandle(0)
-		{
-			// ����GL texture
-			glGenTextures(1, &mTextureHandle);
-		}
-
-		Texture::~Texture()
-		{
-			glDeleteTextures(1, &mTextureHandle);
-		}
-
-		GLuint Texture::GetGLTextureHandle() const
-		{
-			return mTextureHandle;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/graphics/texture.h b/source/libs/asura-lib-core/graphics/texture.h
deleted file mode 100644
index c412b2e..0000000
--- a/source/libs/asura-lib-core/graphics/texture.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef __ASURA_ENGINE_TEXTURE_H__
-#define __ASURA_ENGINE_TEXTURE_H__
-
-#include <asura-lib-utils/math/rect.hpp>
-#include <asura-lib-utils/math/vector2.hpp>
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "../core_config.h"
-
-#include "render_state.h"
-#include "gl.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class RenderTarget;
-
-		///
-		/// 2D���������࣬��2d mesh��render target�б�ʹ�á�Texture����Ⱦԭ�������Ͻǣ���Ϸ������ϲ���Եѿ�������ϵΪ��׼��
-		/// ��Editor�����������Ҳ�������Ͻ�Ϊԭ�㣬������Ϊ�˷��㡣
-		///
-		ASURA_ABSTRACT class Texture
-		{
-		public:
-
-			Texture();
-
-			virtual ~Texture();
-
-			GLuint GetGLTextureHandle() const;
-
-			///
-			/// ��Ⱦ����texture��rt�ϣ�ԭ�������Ͻǣ����ң���������
-			///
-			virtual void Render(const RenderTarget* rt, const RenderState& state) = 0;
-
-			/// 
-			/// ��Ⱦtexture��һ���ֵ�rt�ϣ�ԭ�������Ͻǣ����ң��������졣
-			/// 
-			virtual void Render(const RenderTarget* rt, const Math::Rectf& quad, const RenderState& state) = 0;
-
-			///
-			/// ���ù��˷�ʽ
-			///
-			void SetSmooth(bool smooth);
-
-			///
-			/// �����ظ���ʽ
-			///
-			void SetRepeated();
-
-		protected:
-
-			///
-			/// OpenGL texture handle��
-			///
-			GLuint mTextureHandle;
-
-		};
-
-		using Drawable = Texture;
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/input/clipboard.cpp b/source/libs/asura-lib-core/input/clipboard.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/input/clipboard.h b/source/libs/asura-lib-core/input/clipboard.h
deleted file mode 100644
index 4cecd55..0000000
--- a/source/libs/asura-lib-core/input/clipboard.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef __ASURA_ENGINE_CLIPBOARD_H__
-#define __ASURA_ENGINE_CLIPBOARD_H__
-
-#include "Text/String.hpp"
-#include "InputDevice.hpp"
-
-namespace AsuraEngine
-{
-	namespace Input
-	{
-
-		class Clipboard ASURA_FINAL : public InputDevice<Clipboard>
-		{
-		public:
-
-			Clipboard();
-			
-			Text::String GetString();
-
-			void SetString(const Text::String& text);
-
-			//----------------------------------------------------------------------------------------------------------
-
-			LUAX_DECL_SINGLETON(Clipboard);
-
-			//----------------------------------------------------------------------------------------------------------
-
-		private: 
-
-			~Clipboard();
-
-		};
-
-	};
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/input/cursor.cpp b/source/libs/asura-lib-core/input/cursor.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/input/cursor.defs b/source/libs/asura-lib-core/input/cursor.defs
deleted file mode 100644
index f8b8492..0000000
--- a/source/libs/asura-lib-core/input/cursor.defs
+++ /dev/null
@@ -1,25 +0,0 @@
-
-// Types of system cursors.
-enum SystemCursor
-{
-	CURSOR_ARROW,
-	CURSOR_IBEAM,
-	CURSOR_WAIT,
-	CURSOR_CROSSHAIR,
-	CURSOR_WAITARROW,
-	CURSOR_SIZENWSE,
-	CURSOR_SIZENESW,
-	CURSOR_SIZEWE,
-	CURSOR_SIZENS,
-	CURSOR_SIZEALL,
-	CURSOR_NO,
-	CURSOR_HAND,
-	CURSOR_MAX_ENUM
-};
-
-enum CursorType
-{
-	CURSORTYPE_SYSTEM,
-	CURSORTYPE_IMAGE,
-	CURSORTYPE_MAX_ENUM
-};
diff --git a/source/libs/asura-lib-core/input/cursor.h b/source/libs/asura-lib-core/input/cursor.h
deleted file mode 100644
index 553fda4..0000000
--- a/source/libs/asura-lib-core/input/cursor.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef __ASURA_ENGINE_CURSOR_H__
-#define __ASURA_ENGINE_CURSOR_H__
-
-#include <SDL2/SDL.h>
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "../graphics/image_data.h"
-
-#include "input_device.hpp"
-
-namespace AsuraEngine
-{
-	namespace Input
-	{
-
-		class CursorImpl;
-
-		// ���ָ������ö��
-#include "Cursor.defs"
-
-		class Cursor
-			: public AEScripting::Portable<Cursor>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(Cursor);
-
-			Cursor(Graphics::ImageData& imageData, int hotx, int hoty);
-			Cursor(SystemCursor cursortype);
-
-			~Cursor();
-
-			SDL_Cursor* GetHandle() const;
-			CursorType GetType() const;
-			SystemCursor GetSystemType() const;
-
-		private:
-
-			CursorType   mType;
-			SystemCursor mSystemType;
-			CursorImpl*  mImpl;
-
-		};
-
-		ASURA_ABSTRACT class CursorImpl
-		{
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/input/cursor_impl_sdl.cpp b/source/libs/asura-lib-core/input/cursor_impl_sdl.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/input/cursor_impl_sdl.h b/source/libs/asura-lib-core/input/cursor_impl_sdl.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/input/event.h b/source/libs/asura-lib-core/input/event.h
deleted file mode 100644
index a24e806..0000000
--- a/source/libs/asura-lib-core/input/event.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef __ASURA_ENGINE_EVENT_H__
-#define __ASURA_ENGINE_EVENT_H__
-
-namespace AsuraEngine
-{
-	namespace Input
-	{
-
-		enum EventType
-		{
-			EVENT_BEGIN_MOUSE__ ,
-			EVENT_LEFT_DOWN		  ,
-			EVENT_LEFT_UP			  ,
-			EVENT_LEFT_DCLICK	  ,
-			EVENT_MIDDLE_DOWN	  ,
-			EVENT_MIDDLE_UP		  ,
-			EVENT_MIDDLE_DCLICK ,
-			EVENT_RIGHT_DOWN	  ,
-			EVENT_RIGHT_UP		  ,
-			EVENT_RIGHT_DCLICK  ,
-			EVENT_MOTION			  ,
-			EVENT_END_MOUSE__   ,
-			EVENT_ENTER_WINDOW  ,
-			EVENT_LEAVE_WINDOW  ,
-			EVENT_MOUSEWHEEL	  
-		};
-
-		struct Event
-		{
-			int type;
-			union
-			{
-				// ��갴���¼�
-				struct {
-					int id;
-				} button;
-			};
-		};
-
-	}
-}
-
-namespace AEInput = AsuraEngine::Input;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/input/input_device.hpp b/source/libs/asura-lib-core/input/input_device.hpp
deleted file mode 100644
index 46f5be8..0000000
--- a/source/libs/asura-lib-core/input/input_device.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __ASURA_ENGINE_INPUT_BASE_H__
-#define __ASURA_ENGINE_INPUT_BASE_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "../core_config.h"
-#include "../singleton.hpp"
-
-namespace AsuraEngine 
-{
-	namespace Input
-	{
-
-		///
-		/// �����豸��һ������
-		///
-		template<class T> 
-		ASURA_ABSTRACT class InputDevice
-			: virtual public Scripting::Portable<T>
-			, virtual public Singleton<T>
-		{
-		public:
-			InputDevice();
-			virtual ~InputDevice();
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/input/joypad.h b/source/libs/asura-lib-core/input/joypad.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/input/keyboard.cpp b/source/libs/asura-lib-core/input/keyboard.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/input/keyboard.defs b/source/libs/asura-lib-core/input/keyboard.defs
deleted file mode 100644
index 8f04dc2..0000000
--- a/source/libs/asura-lib-core/input/keyboard.defs
+++ /dev/null
@@ -1,482 +0,0 @@
-
-/**
-* Keyboard keys. They are dependent on the current layout of the keyboard.
-**/
-enum Key
-{
-	KEY_UNKNOWN,
-
-	KEY_RETURN,
-	KEY_ESCAPE,
-	KEY_BACKSPACE,
-	KEY_TAB,
-	KEY_SPACE,
-	KEY_EXCLAIM,
-	KEY_QUOTEDBL,
-	KEY_HASH,
-	KEY_PERCENT,
-	KEY_DOLLAR,
-	KEY_AMPERSAND,
-	KEY_QUOTE,
-	KEY_LEFTPAREN,
-	KEY_RIGHTPAREN,
-	KEY_ASTERISK,
-	KEY_PLUS,
-	KEY_COMMA,
-	KEY_MINUS,
-	KEY_PERIOD,
-	KEY_SLASH,
-	KEY_0,
-	KEY_1,
-	KEY_2,
-	KEY_3,
-	KEY_4,
-	KEY_5,
-	KEY_6,
-	KEY_7,
-	KEY_8,
-	KEY_9,
-	KEY_COLON,
-	KEY_SEMICOLON,
-	KEY_LESS,
-	KEY_EQUALS,
-	KEY_GREATER,
-	KEY_QUESTION,
-	KEY_AT,
-
-	KEY_LEFTBRACKET,
-	KEY_BACKSLASH,
-	KEY_RIGHTBRACKET,
-	KEY_CARET,
-	KEY_UNDERSCORE,
-	KEY_BACKQUOTE,
-	KEY_A,
-	KEY_B,
-	KEY_C,
-	KEY_D,
-	KEY_E,
-	KEY_F,
-	KEY_G,
-	KEY_H,
-	KEY_I,
-	KEY_J,
-	KEY_K,
-	KEY_L,
-	KEY_M,
-	KEY_N,
-	KEY_O,
-	KEY_P,
-	KEY_Q,
-	KEY_R,
-	KEY_S,
-	KEY_T,
-	KEY_U,
-	KEY_V,
-	KEY_W,
-	KEY_X,
-	KEY_Y,
-	KEY_Z,
-
-	KEY_CAPSLOCK,
-
-	KEY_F1,
-	KEY_F2,
-	KEY_F3,
-	KEY_F4,
-	KEY_F5,
-	KEY_F6,
-	KEY_F7,
-	KEY_F8,
-	KEY_F9,
-	KEY_F10,
-	KEY_F11,
-	KEY_F12,
-
-	KEY_PRINTSCREEN,
-	KEY_SCROLLLOCK,
-	KEY_PAUSE,
-	KEY_INSERT,
-	KEY_HOME,
-	KEY_PAGEUP,
-	KEY_DELETE,
-	KEY_END,
-	KEY_PAGEDOWN,
-	KEY_RIGHT,
-	KEY_LEFT,
-	KEY_DOWN,
-	KEY_UP,
-
-	KEY_NUMLOCKCLEAR,
-	KEY_KP_DIVIDE,
-	KEY_KP_MULTIPLY,
-	KEY_KP_MINUS,
-	KEY_KP_PLUS,
-	KEY_KP_ENTER,
-	KEY_KP_1,
-	KEY_KP_2,
-	KEY_KP_3,
-	KEY_KP_4,
-	KEY_KP_5,
-	KEY_KP_6,
-	KEY_KP_7,
-	KEY_KP_8,
-	KEY_KP_9,
-	KEY_KP_0,
-	KEY_KP_PERIOD,
-	KEY_KP_COMMA,
-	KEY_KP_EQUALS,
-
-	KEY_APPLICATION,
-	KEY_POWER,
-	KEY_F13,
-	KEY_F14,
-	KEY_F15,
-	KEY_F16,
-	KEY_F17,
-	KEY_F18,
-	KEY_F19,
-	KEY_F20,
-	KEY_F21,
-	KEY_F22,
-	KEY_F23,
-	KEY_F24,
-	KEY_EXECUTE,
-	KEY_HELP,
-	KEY_MENU,
-	KEY_SELECT,
-	KEY_STOP,
-	KEY_AGAIN,
-	KEY_UNDO,
-	KEY_CUT,
-	KEY_COPY,
-	KEY_PASTE,
-	KEY_FIND,
-	KEY_MUTE,
-	KEY_VOLUMEUP,
-	KEY_VOLUMEDOWN,
-
-	KEY_ALTERASE,
-	KEY_SYSREQ,
-	KEY_CANCEL,
-	KEY_CLEAR,
-	KEY_PRIOR,
-	KEY_RETURN2,
-	KEY_SEPARATOR,
-	KEY_OUT,
-	KEY_OPER,
-	KEY_CLEARAGAIN,
-
-	KEY_THOUSANDSSEPARATOR,
-	KEY_DECIMALSEPARATOR,
-	KEY_CURRENCYUNIT,
-	KEY_CURRENCYSUBUNIT,
-
-	KEY_LCTRL,
-	KEY_LSHIFT,
-	KEY_LALT,
-	KEY_LGUI,
-	KEY_RCTRL,
-	KEY_RSHIFT,
-	KEY_RALT,
-	KEY_RGUI,
-
-	KEY_MODE,
-
-	KEY_AUDIONEXT,
-	KEY_AUDIOPREV,
-	KEY_AUDIOSTOP,
-	KEY_AUDIOPLAY,
-	KEY_AUDIOMUTE,
-	KEY_MEDIASELECT,
-	KEY_WWW,
-	KEY_MAIL,
-	KEY_CALCULATOR,
-	KEY_COMPUTER,
-	KEY_APP_SEARCH,
-	KEY_APP_HOME,
-	KEY_APP_BACK,
-	KEY_APP_FORWARD,
-	KEY_APP_STOP,
-	KEY_APP_REFRESH,
-	KEY_APP_BOOKMARKS,
-
-	KEY_BRIGHTNESSDOWN,
-	KEY_BRIGHTNESSUP,
-	KEY_DISPLAYSWITCH,
-	KEY_KBDILLUMTOGGLE,
-	KEY_KBDILLUMDOWN,
-	KEY_KBDILLUMUP,
-	KEY_EJECT,
-	KEY_SLEEP,
-
-	KEY_MAX_ENUM
-};
-
-/**
-* Scancodes represent physical keys independent of the current layout.
-* Their names may not match the names of the keys printed on the keyboard.
-* Some of them are very esoteric...
-**/
-enum Scancode
-{
-	SCANCODE_UNKNOWN,
-
-	SCANCODE_A,
-	SCANCODE_B,
-	SCANCODE_C,
-	SCANCODE_D,
-	SCANCODE_E,
-	SCANCODE_F,
-	SCANCODE_G,
-	SCANCODE_H,
-	SCANCODE_I,
-	SCANCODE_J,
-	SCANCODE_K,
-	SCANCODE_L,
-	SCANCODE_M,
-	SCANCODE_N,
-	SCANCODE_O,
-	SCANCODE_P,
-	SCANCODE_Q,
-	SCANCODE_R,
-	SCANCODE_S,
-	SCANCODE_T,
-	SCANCODE_U,
-	SCANCODE_V,
-	SCANCODE_W,
-	SCANCODE_X,
-	SCANCODE_Y,
-	SCANCODE_Z,
-
-	SCANCODE_1,
-	SCANCODE_2,
-	SCANCODE_3,
-	SCANCODE_4,
-	SCANCODE_5,
-	SCANCODE_6,
-	SCANCODE_7,
-	SCANCODE_8,
-	SCANCODE_9,
-	SCANCODE_0,
-
-	SCANCODE_RETURN,
-	SCANCODE_ESCAPE,
-	SCANCODE_BACKSPACE,
-	SCANCODE_TAB,
-	SCANCODE_SPACE,
-
-	SCANCODE_MINUS,
-	SCANCODE_EQUALS,
-	SCANCODE_LEFTBRACKET,
-	SCANCODE_RIGHTBRACKET,
-	SCANCODE_BACKSLASH,
-	SCANCODE_NONUSHASH,
-	SCANCODE_SEMICOLON,
-	SCANCODE_APOSTROPHE,
-	SCANCODE_GRAVE,
-	SCANCODE_COMMA,
-	SCANCODE_PERIOD,
-	SCANCODE_SLASH,
-
-	SCANCODE_CAPSLOCK,
-
-	SCANCODE_F1,
-	SCANCODE_F2,
-	SCANCODE_F3,
-	SCANCODE_F4,
-	SCANCODE_F5,
-	SCANCODE_F6,
-	SCANCODE_F7,
-	SCANCODE_F8,
-	SCANCODE_F9,
-	SCANCODE_F10,
-	SCANCODE_F11,
-	SCANCODE_F12,
-
-	SCANCODE_PRINTSCREEN,
-	SCANCODE_SCROLLLOCK,
-	SCANCODE_PAUSE,
-	SCANCODE_INSERT,
-	SCANCODE_HOME,
-	SCANCODE_PAGEUP,
-	SCANCODE_DELETE,
-	SCANCODE_END,
-	SCANCODE_PAGEDOWN,
-	SCANCODE_RIGHT,
-	SCANCODE_LEFT,
-	SCANCODE_DOWN,
-	SCANCODE_UP,
-
-	SCANCODE_NUMLOCKCLEAR,
-	SCANCODE_KP_DIVIDE,
-	SCANCODE_KP_MULTIPLY,
-	SCANCODE_KP_MINUS,
-	SCANCODE_KP_PLUS,
-	SCANCODE_KP_ENTER,
-	SCANCODE_KP_1,
-	SCANCODE_KP_2,
-	SCANCODE_KP_3,
-	SCANCODE_KP_4,
-	SCANCODE_KP_5,
-	SCANCODE_KP_6,
-	SCANCODE_KP_7,
-	SCANCODE_KP_8,
-	SCANCODE_KP_9,
-	SCANCODE_KP_0,
-	SCANCODE_KP_PERIOD,
-
-	SCANCODE_NONUSBACKSLASH,
-	SCANCODE_APPLICATION,
-	SCANCODE_POWER,
-	SCANCODE_KP_EQUALS,
-	SCANCODE_F13,
-	SCANCODE_F14,
-	SCANCODE_F15,
-	SCANCODE_F16,
-	SCANCODE_F17,
-	SCANCODE_F18,
-	SCANCODE_F19,
-	SCANCODE_F20,
-	SCANCODE_F21,
-	SCANCODE_F22,
-	SCANCODE_F23,
-	SCANCODE_F24,
-	SCANCODE_EXECUTE,
-	SCANCODE_HELP,
-	SCANCODE_MENU,
-	SCANCODE_SELECT,
-	SCANCODE_STOP,
-	SCANCODE_AGAIN,
-	SCANCODE_UNDO,
-	SCANCODE_CUT,
-	SCANCODE_COPY,
-	SCANCODE_PASTE,
-	SCANCODE_FIND,
-	SCANCODE_MUTE,
-	SCANCODE_VOLUMEUP,
-	SCANCODE_VOLUMEDOWN,
-	SCANCODE_KP_COMMA,
-	SCANCODE_KP_EQUALSAS400,
-
-	SCANCODE_INTERNATIONAL1,
-	SCANCODE_INTERNATIONAL2,
-	SCANCODE_INTERNATIONAL3,
-	SCANCODE_INTERNATIONAL4,
-	SCANCODE_INTERNATIONAL5,
-	SCANCODE_INTERNATIONAL6,
-	SCANCODE_INTERNATIONAL7,
-	SCANCODE_INTERNATIONAL8,
-	SCANCODE_INTERNATIONAL9,
-	SCANCODE_LANG1,
-	SCANCODE_LANG2,
-	SCANCODE_LANG3,
-	SCANCODE_LANG4,
-	SCANCODE_LANG5,
-	SCANCODE_LANG6,
-	SCANCODE_LANG7,
-	SCANCODE_LANG8,
-	SCANCODE_LANG9,
-
-	SCANCODE_ALTERASE,
-	SCANCODE_SYSREQ,
-	SCANCODE_CANCEL,
-	SCANCODE_CLEAR,
-	SCANCODE_PRIOR,
-	SCANCODE_RETURN2,
-	SCANCODE_SEPARATOR,
-	SCANCODE_OUT,
-	SCANCODE_OPER,
-	SCANCODE_CLEARAGAIN,
-	SCANCODE_CRSEL,
-	SCANCODE_EXSEL,
-
-	SCANCODE_KP_00,
-	SCANCODE_KP_000,
-	SCANCODE_THOUSANDSSEPARATOR,
-	SCANCODE_DECIMALSEPARATOR,
-	SCANCODE_CURRENCYUNIT,
-	SCANCODE_CURRENCYSUBUNIT,
-	SCANCODE_KP_LEFTPAREN,
-	SCANCODE_KP_RIGHTPAREN,
-	SCANCODE_KP_LEFTBRACE,
-	SCANCODE_KP_RIGHTBRACE,
-	SCANCODE_KP_TAB,
-	SCANCODE_KP_BACKSPACE,
-	SCANCODE_KP_A,
-	SCANCODE_KP_B,
-	SCANCODE_KP_C,
-	SCANCODE_KP_D,
-	SCANCODE_KP_E,
-	SCANCODE_KP_F,
-	SCANCODE_KP_XOR,
-	SCANCODE_KP_POWER,
-	SCANCODE_KP_PERCENT,
-	SCANCODE_KP_LESS,
-	SCANCODE_KP_GREATER,
-	SCANCODE_KP_AMPERSAND,
-	SCANCODE_KP_DBLAMPERSAND,
-	SCANCODE_KP_VERTICALBAR,
-	SCANCODE_KP_DBLVERTICALBAR,
-	SCANCODE_KP_COLON,
-	SCANCODE_KP_HASH,
-	SCANCODE_KP_SPACE,
-	SCANCODE_KP_AT,
-	SCANCODE_KP_EXCLAM,
-	SCANCODE_KP_MEMSTORE,
-	SCANCODE_KP_MEMRECALL,
-	SCANCODE_KP_MEMCLEAR,
-	SCANCODE_KP_MEMADD,
-	SCANCODE_KP_MEMSUBTRACT,
-	SCANCODE_KP_MEMMULTIPLY,
-	SCANCODE_KP_MEMDIVIDE,
-	SCANCODE_KP_PLUSMINUS,
-	SCANCODE_KP_CLEAR,
-	SCANCODE_KP_CLEARENTRY,
-	SCANCODE_KP_BINARY,
-	SCANCODE_KP_OCTAL,
-	SCANCODE_KP_DECIMAL,
-	SCANCODE_KP_HEXADECIMAL,
-
-	SCANCODE_LCTRL,
-	SCANCODE_LSHIFT,
-	SCANCODE_LALT,
-	SCANCODE_LGUI,
-	SCANCODE_RCTRL,
-	SCANCODE_RSHIFT,
-	SCANCODE_RALT,
-	SCANCODE_RGUI,
-
-	SCANCODE_MODE,
-
-	SCANCODE_AUDIONEXT,
-	SCANCODE_AUDIOPREV,
-	SCANCODE_AUDIOSTOP,
-	SCANCODE_AUDIOPLAY,
-	SCANCODE_AUDIOMUTE,
-	SCANCODE_MEDIASELECT,
-	SCANCODE_WWW,
-	SCANCODE_MAIL,
-	SCANCODE_CALCULATOR,
-	SCANCODE_COMPUTER,
-	SCANCODE_AC_SEARCH,
-	SCANCODE_AC_HOME,
-	SCANCODE_AC_BACK,
-	SCANCODE_AC_FORWARD,
-	SCANCODE_AC_STOP,
-	SCANCODE_AC_REFRESH,
-	SCANCODE_AC_BOOKMARKS,
-
-	SCANCODE_BRIGHTNESSDOWN,
-	SCANCODE_BRIGHTNESSUP,
-	SCANCODE_DISPLAYSWITCH,
-	SCANCODE_KBDILLUMTOGGLE,
-	SCANCODE_KBDILLUMDOWN,
-	SCANCODE_KBDILLUMUP,
-	SCANCODE_EJECT,
-	SCANCODE_SLEEP,
-
-	SCANCODE_APP1,
-	SCANCODE_APP2,
-
-	SCANCODE_MAX_ENUM
-};
diff --git a/source/libs/asura-lib-core/input/keyboard.h b/source/libs/asura-lib-core/input/keyboard.h
deleted file mode 100644
index 1480d06..0000000
--- a/source/libs/asura-lib-core/input/keyboard.h
+++ /dev/null
@@ -1,73 +0,0 @@
-//#ifndef __ASURA_INPUT_KEYBOARD_H__
-//#define __ASURA_INPUT_KEYBOARD_H__
-//
-//#include <SDL2/SDL.h>
-//
-//#include "InputDevice.hpp"
-//#include "Scripting/Portable.h"
-//
-//namespace AsuraEngine
-//{
-//	namespace Input
-//	{
-//
-//		class Keyboard ASURA_FINAL : public InputDevice<Keyboard>
-//		{
-//		public:
-//
-//			// ������ص�ö��
-//			#include "Keyboard.defs"
-//
-//			Keyboard();
-//
-//			void SetKeyRepeat(bool enable);
-//			bool HasKeyRepeat() const;
-//			bool IsDown(const std::vector<Key> &keylist) const;
-//			bool IsScancodeDown(const std::vector<Scancode> &scancodelist) const;
-//
-//			Key GetKeyFromScancode(Scancode scancode) const;
-//			Scancode GetScancodeFromKey(Key key) const;
-//
-//			void SetTextInput(bool enable);
-//			void SetTextInput(bool enable, double x, double y, double w, double h);
-//			bool HasTextInput() const;
-//			bool HasScreenKeyboard() const;
-//
-//			bool GetConstant(Scancode in, SDL_Scancode &out);
-//			bool GetConstant(SDL_Scancode in, Scancode &out);
-//
-//		private:
-//
-//			~Keyboard();
-//		
-//		public:
-//
-//			//----------------------------------------------------------------------------------------------------------
-//
-//			LUAX_DECL_SINGLETON(Keyboard); // ͨ��AsuraEngine.Keyboardֱ�ӷ��ʣ�û��New����
-//
-//			LUAX_DECL_ENUM(Key);
-//			LUAX_DECL_ENUM(ScanCode);
-//
-//			LUAX_DECL_METHOD(SetKeyRepeat);
-//			LUAX_DECL_METHOD(HasKeyRepeat);
-//			LUAX_DECL_METHOD(IsDown);
-//			LUAX_DECL_METHOD(IsScancodeDown);
-//
-//			LUAX_DECL_METHOD(GetKeyFromScancode);
-//			LUAX_DECL_METHOD(GetScancodeFromKey);
-//
-//			LUAX_DECL_METHOD(SetTextInput);
-//			LUAX_DECL_METHOD(HasTextInput);
-//			LUAX_DECL_METHOD(HasScreenKeyboard);
-//
-//			LUAX_DECL_METHOD(GetConstant);
-//
-//			//----------------------------------------------------------------------------------------------------------
-//
-//		};
-//
-//	}
-//}
-//
-//#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/input/mouse.cpp b/source/libs/asura-lib-core/input/mouse.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/input/mouse.defs b/source/libs/asura-lib-core/input/mouse.defs
deleted file mode 100644
index de1d117..0000000
--- a/source/libs/asura-lib-core/input/mouse.defs
+++ /dev/null
@@ -1,7 +0,0 @@
-
-enum MouseButton
-{
-	MOUSE_BUTTON_LEFT,
-	MOUSE_BUTTON_MIDDLE,
-	MOUSE_BUTTON_RIGHT,
-};
diff --git a/source/libs/asura-lib-core/input/mouse.h b/source/libs/asura-lib-core/input/mouse.h
deleted file mode 100644
index 3ab67fa..0000000
--- a/source/libs/asura-lib-core/input/mouse.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef __ASURA_ENGINE_MOUSE_H__
-#define __ASURA_ENGINE_MOUSE_H__
-
-#include "cursor.h"
-#include "input_device.hpp"
-
-namespace AsuraEngine
-{
-	namespace Input
-	{
-
-		class Mouse : public InputDevice<Mouse>
-		{
-		public:
-
-			///
-			/// ��ͼƬ�����й������ָ�����ʹ��ϵͳָ��
-			///
-			Cursor *CreateCursor(Graphics::ImageData *data, int hotx, int hoty);
-			Cursor *GetSystemCursor(Cursor::SystemCursor cursortype);
-
-			void SetCursor(Cursor *cursor);
-			void SetCursor() ;
-
-			Cursor* GetCursor() const;
-
-			bool IsCursorSupported() const;
-
-			double GetX() const;
-			double GetY() const;
-			void GetPosition(double &x, double &y) const;
-			void GetX(double x) ;
-			void SetY(double y) ;
-			void SetPosition(double x, double y) ;
-			void SetVisible(bool visible) ;
-			bool IsDown(const std::vector<int> &buttons) const;
-			bool IsVisible() const;
-			void SetGrabbed(bool grab) ;
-			bool IsGrabbed() const;
-			bool SetRelativeMode(bool relative) ;
-			bool GetRelativeMode() const;
-
-			//----------------------------------------------------------------------------------------------------------
-
-			LUAX_DECL_SINGLETON(Mouse);
-
-			//----------------------------------------------------------------------------------------------------------
-
-		private:
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/profiler/stats.cpp b/source/libs/asura-lib-core/profiler/stats.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/profiler/stats.h b/source/libs/asura-lib-core/profiler/stats.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/coroutine.cpp b/source/libs/asura-lib-core/threading/coroutine.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/coroutine.h b/source/libs/asura-lib-core/threading/coroutine.h
deleted file mode 100644
index 1ac6b21..0000000
--- a/source/libs/asura-lib-core/threading/coroutine.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __ASURA_COROUTINE_H__
-#define __ASURA_COROUTINE_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// luaЭ�̣�������һЩ�߼�����������
-		///
-		class Coroutine ASURA_FINAL
-			: public AEScripting::Portable<Coroutine>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(Coroutine);
-
-		private:
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_Run);
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/threading/thread.cpp b/source/libs/asura-lib-core/threading/thread.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread.h b/source/libs/asura-lib-core/threading/thread.h
deleted file mode 100644
index f4d3b48..0000000
--- a/source/libs/asura-lib-core/threading/thread.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef __ASURA_THREAD_H__
-#define __ASURA_THREAD_H__
-
-#include <queue>
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "thread_task.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// �̵߳ľ���ʵ�֣����û���͸���ģ�һ��׼�������ֲ��ԣ�
-		///    1: win32 
-		///    2: posix
-		///    3: SDL 
-		///    4: std::thread
-		///
-		ASURA_ABSTRACT class ThreadImpl
-		{
-		public:
-			
-		};
-
-		///
-		/// �߳����壬ÿ���߳�ά��һ��task queue��
-		///
-		class Thread ASURA_FINAL
-			: public AEScripting::Portable<Thread>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(Thread);
-
-			bool Enqueue(ThreadTask* task);
-
-		private:
-
-			///
-			/// �������
-			///
-			std::queue<ThreadTask*> mTaskQueue;
-
-			ThreadImpl* mImpl;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/threading/thread_impl_posix.cpp b/source/libs/asura-lib-core/threading/thread_impl_posix.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_impl_posix.h b/source/libs/asura-lib-core/threading/thread_impl_posix.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_impl_sdl.cpp b/source/libs/asura-lib-core/threading/thread_impl_sdl.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_impl_sdl.h b/source/libs/asura-lib-core/threading/thread_impl_sdl.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_impl_std.cpp b/source/libs/asura-lib-core/threading/thread_impl_std.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_impl_std.h b/source/libs/asura-lib-core/threading/thread_impl_std.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_impl_win32.cpp b/source/libs/asura-lib-core/threading/thread_impl_win32.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_impl_win32.h b/source/libs/asura-lib-core/threading/thread_impl_win32.h
deleted file mode 100644
index 5d854cc..0000000
--- a/source/libs/asura-lib-core/threading/thread_impl_win32.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __ASURA_THREAD_WIN32_H__
-#define __ASURA_THREAD_WIN32_H__
-
-#include "../core_config.h"
-
-#include "thread.h"
-
-#if ASURA_THREAD_WIN32
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		class ThreadImplWin32 : public ThreadImpl
-		{
-
-		};
-
-	}
-}
-
-#endif // #if ASURA_THREAD_WIN32
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/threading/thread_task.cpp b/source/libs/asura-lib-core/threading/thread_task.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/threading/thread_task.h b/source/libs/asura-lib-core/threading/thread_task.h
deleted file mode 100644
index 19eb113..0000000
--- a/source/libs/asura-lib-core/threading/thread_task.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __ASURA_THRAD_TASK_H__
-#define __ASURA_THRAD_TASK_H__
-
-#include <asura-lib-utils/type.h>
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// ϣ��������һ���̴߳��������񣬼̳�Task����дExecute������
-		///
-		ASURA_ABSTRACT class ThreadTask
-		{
-		public:
-
-			virtual bool Execute() = 0;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/time/timer.cpp b/source/libs/asura-lib-core/time/timer.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/time/timer.h b/source/libs/asura-lib-core/time/timer.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/type.h b/source/libs/asura-lib-core/type.h
deleted file mode 100644
index 88848d5..0000000
--- a/source/libs/asura-lib-core/type.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef __ASURA_ENGINE_TYPE_H__
-#define __ASURA_ENGINE_TYPE_H__
-
-#include <stdint.h>
-
-namespace AsuraEngine
-{
-
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/window/window.cpp b/source/libs/asura-lib-core/window/window.cpp
deleted file mode 100644
index 83a4f53..0000000
--- a/source/libs/asura-lib-core/window/window.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "Config.h"
-#include "Window.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		Window::Window(WindowStyle style)
-		{
-		}
-
-		Window::~Window()
-		{
-
-		}
-
-		void Window::SetPosition(int x, int y)
-		{
-			ASSERT(mWindowHandle);
-			SDL_SetWindowPosition(mWindowHandle, x, y);
-		}
-
-		void Window::SetTitle(const std::string& title)
-		{
-
-		}
-
-		void Window::Show()
-		{
-
-		}
-
-		void Window::Hide()
-		{
-
-		}
-
-		void Window::SetWindowStyle(WindowStyle style)
-		{
-
-		}
-
-		void Window::SwapRenderBuffer()
-		{
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-core/window/window.h b/source/libs/asura-lib-core/window/window.h
deleted file mode 100644
index 39db73e..0000000
--- a/source/libs/asura-lib-core/window/window.h
+++ /dev/null
@@ -1,90 +0,0 @@
-#ifndef __ASURA_ENGINE_WINDOW_H__
-#define __ASURA_ENGINE_WINDOW_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-#include <asura-lib-utils/math/vector2.hpp>
-
-#include "../graphics/render_state.h"
-#include "../graphics/render_target.h"
-
-namespace AsuraEngine
-{
-	namespace Graphics
-	{
-
-		class WindowImpl;
-
-		enum WindowStyle
-		{
-			WINDOW_STYLE_FULLSCREEN = 1 << 1,
-		};
-
-		///
-		/// ��Ϸ�ĵ����ڣ�runnerֻ��Ҫһ�����ڡ���ͬ�Ŀͻ���ʵ�ִ˽ӿڲ��ֶ�ע�ᵽlua���༭�����ᵼ����࣬����޽ӵ��༭����
-		/// ���ⴰ���ϡ�
-		///
-		class Window 
-			: public RenderTarget
-			, public AEScripting::Portable<Window>
-		{
-		public:
-
-			LUAX_DECL_SINGLETON(Window);
-
-			Window(WindowStyle style);
-
-			~Window();
-
-			void SetSize(uint width, uint height); 
-
-			void SetPosition(int x, int y);
-
-			void SetTitle(const std::string& title);
-
-			void SetWindowStyle(WindowStyle style);
-
-			void Show();
-
-			void Hide();
-
-			///
-			/// ����ǿ���˫����Ĵ��ڣ���Ҫ������������չʾ��ǰ̨
-			///
-			void SwapRenderBuffer();
-
-			void Clear(const Color& col = Color::Black);
-
-			void Clear(const Math::Recti& quad, const Color& col = Color::Black);
-
-			void Draw(const Drawable* texture, const RenderState& state);
-
-			void Draw(const Drawable* texture, const Math::Recti& quad, const RenderState& state);
-
-		protected:
-
-			WindowImpl* mImpl;
-
-			LUAX_DECL_METHOD(_Show);
-			LUAX_DECL_METHOD(_Hide);
-			LUAX_DECL_METHOD(_SetResolution);
-			LUAX_DECL_METHOD(_SetFullScreen);
-			LUAX_DECL_METHOD(_SetTitle);
-			LUAX_DECL_METHOD(_SetWindowStyle);
-			LUAX_DECL_METHOD(_Clear);
-			LUAX_DECL_METHOD(_Draw);
-			LUAX_DECL_METHOD(_SwapRenderBuffer);
-
-		};
-
-		using RenderWindow = Window;
-
-		ASURA_ABSTRACT class WindowImpl
-		{
-		public:
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-core/window/window_impl_glew.cpp b/source/libs/asura-lib-core/window/window_impl_glew.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/window/window_impl_glew.h b/source/libs/asura-lib-core/window/window_impl_glew.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/window/window_impl_glut.cpp b/source/libs/asura-lib-core/window/window_impl_glut.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/window/window_impl_glut.h b/source/libs/asura-lib-core/window/window_impl_glut.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/window/window_impl_sdl.cpp b/source/libs/asura-lib-core/window/window_impl_sdl.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-core/window/window_impl_sdl.h b/source/libs/asura-lib-core/window/window_impl_sdl.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/compile.bat b/source/libs/asura-lib-framework/compile.bat
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/compile.sh b/source/libs/asura-lib-framework/compile.sh
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/main.cpp b/source/libs/asura-lib-framework/main.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/scripts/ai/behavior_tree.lua b/source/libs/asura-lib-framework/scripts/ai/behavior_tree.lua
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/scripts/ai/state_graph.lua b/source/libs/asura-lib-framework/scripts/ai/state_graph.lua
deleted file mode 100644
index 4f563dc..0000000
--- a/source/libs/asura-lib-framework/scripts/ai/state_graph.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-local StateGraph = AsuraEngine.Asset.Extend("StateGraph")
-
-AsuraEngine.StateGraph = StateGraph
-
-function StateGraph.Ctor(self)
-
-end
-
-function StateGraph.ToAsset()
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/ai/state_machine.lua b/source/libs/asura-lib-framework/scripts/ai/state_machine.lua
deleted file mode 100644
index 6dc5e14..0000000
--- a/source/libs/asura-lib-framework/scripts/ai/state_machine.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-local StateMachine = Class()
-AsuraEngine.StateMachine = StateMachine 
-
-function StateMachine.Ctor(self, stategraph)
-	self.stategraph = stategraph
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/audio/sound.lua b/source/libs/asura-lib-framework/scripts/audio/sound.lua
deleted file mode 100644
index d7dea4f..0000000
--- a/source/libs/asura-lib-framework/scripts/audio/sound.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-AsuraEngine.Sound = AsuraEngine.Asset.Extend("Sound")
-
-local Sound = AsuraEngine.Sound
-
-function Sound.Ctor(self)
-
-end
-
-return Sound
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/audio/source.lua b/source/libs/asura-lib-framework/scripts/audio/source.lua
deleted file mode 100644
index 7dec511..0000000
--- a/source/libs/asura-lib-framework/scripts/audio/source.lua
+++ /dev/null
@@ -1,22 +0,0 @@
--- Audio Source 
-AsuraEngine.Source = AsuraEngine.Component.Extend("SoundPlayer")
-
-local Source = AsuraEngine.Source 
-
-function Source.Ctor(self)
-	self.mSound = nil 
-end
-
-function Source.SetSound(sound)
-	self.mSound = sound
-end
-
-function Source.GetSource()
-	return self.mSound
-end
-
-function Source.OnUpdate(dt)
-
-end
-
-return Source
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/class.lua b/source/libs/asura-lib-framework/scripts/class.lua
deleted file mode 100644
index 6392483..0000000
--- a/source/libs/asura-lib-framework/scripts/class.lua
+++ /dev/null
@@ -1,17 +0,0 @@
-AsuraEngine.Class = {}
-
-local Class = AsuraEngine.Class
-Class.__index = Class
-
-function Class.Extend(base, classname)
-	local subclass = {} 
-	base.__index = base
-	setmetatable(subclass, base)
-	return c
-end
-
-function Class.New(cls)
-	local obj = {} 
-	setmetatable(obj, cls)
-	cls.__index = cls
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/component.lua b/source/libs/asura-lib-framework/scripts/component.lua
deleted file mode 100644
index b560bd3..0000000
--- a/source/libs/asura-lib-framework/scripts/component.lua
+++ /dev/null
@@ -1,30 +0,0 @@
-AsuraEngine.Component = AsuraEngine.Class("Component")
-
-local Component = AsuraEngine.Component
-
--- Component要显示在inspector的变量
-Component.entity = AsuraEngine.Type.Entity
-
-function Component.Extend(cname)
-	self.base(cname)
-	assert(Component.components[cname] == nil)
-	
-end 
-
-function Component:Ctor(entity)
-	self.entity = entity
-end
-
-function Component:OnEvent(e)
-
-end
-
-function Component:OnUpdate(ms)
-
-end
-
-function Component:OnDraw() 
-
-end
-
-return Component
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/entity.lua b/source/libs/asura-lib-framework/scripts/entity.lua
deleted file mode 100644
index ea8e14d..0000000
--- a/source/libs/asura-lib-framework/scripts/entity.lua
+++ /dev/null
@@ -1,114 +0,0 @@
---
--- 实体,作为scene中的实体存在。Scene中唯一管理的就是实体entity,游戏里的所有component都依附于entity存在,包括camera组件。
---
-module "AsuraEngine" 
-require "transform"
-
-AsuraEngine.Entity = AsuraEngine.Asset.Extend("Entity")
-
-local Entity = AsuraEngine.Entity
-
-function Entity:Ctor() 
-	self.transform = AsuraEngine.Transform.New()
-	self.subentities = {} -- Extend node entities
-end
-
-function Entity:AddChild(entity) 
-	table.insert(self.child, entity)
-end
-
-function Entity:AddComponent(type, name)
-	local cname = type 
-	if name == nil then 
-		cname = name 
-	end 
-	local component = AsuraEngine.Component.GetComponent(type)
-	self.components[cname] = compoennt
-end
-
-function Entity:GetComponent(name)
-	return self.components[name]
-end
-
-function Entity:GetComponentByType(type)
-
-end
-
-function Entity:OnEnable()
-	
-end
-
-function Entity:OnEvent(e)
-	if self.components == nil or type(self.components) ~= "table" then 
-		AsuraEditor.LogError("")
-		return 
-	end 
-	for name, component in self.components do 
-		if component.OnEvent ~= nil then 
-			component:OnEvent(e)
-		end	
-	end 
-end
-
-function Entity:OnUpdate(dt)
-	for name, component in self.components do 
-		if component.OnUpdate ~= nil then 
-			component:OnUpdate(dt)
-		end
-	end
-end
-
-function Entity:OnRender()
-	for name, component in self.components do 
-		if component.OnRender ~= nil then 
-			component.OnRender()
-		end
-	end
-end
-
-function Entity:OnDisable()
-	for name, component in self.components do 
-		if component.OnDisable ~= nil then 
-			component.OnDisable()
-		end
-	end
-end
-
-function Entity:GetTrasform()
-	return self.transform
-end
-
-function Entity:GetPosition()
-
-end
-
-function Entity:GetScale()
-
-end
-
-function Entity:GetRotation()
-
-end
-
-function Entity:SetTrasform(transform)
-
-end
-
-function Entity:SetPosition()
-
-end
-
-function Entity:SetScale()
-
-end
-
-function Entity:SetRotation()
-
-end
-
---写asset
-function Entity:ToAsset()
-
-end
-
-return Entity
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/animation_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/animation_loader.lua
deleted file mode 100644
index 9c57c43..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/animation_loader.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-require "AnimationManager"
-require "Animation"
-
-local loader = AsuraEngine.Loader.New("animation")
-local manager = AsuraEngine.AnimationManager
-local Animation = AsuraEngine.Animation
-
-function AnimationLoader.OnLoad(asset)
-	local animation = AsuraEngine.Class()
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/asset.lua b/source/libs/asura-lib-framework/scripts/filesystem/asset.lua
deleted file mode 100644
index 7cf3905..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/asset.lua
+++ /dev/null
@@ -1,20 +0,0 @@
---
--- 游戏资源类需要继承Asset类,引擎读取.asset文件寻找对应的loader加载进游戏生成对应的Asset派生类对象。对于脚本,不会
--- 生成对应的对象,而是直接运行脚本将结果保存。
---
-AsuraEngine.Asset = AsuraEngine.Class("Asset")
-
-local Asset = AsuraEngine.Asset
-
-function Asset.Ctor(self)
-	self.guid = nil
-end
-
---获得资源编号
-function Asset.GetGUID(self)
-
-end
-
-function Asset.GetAssetByGUID(guid)
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/entity_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/entity_loader.lua
deleted file mode 100644
index 39ae0d9..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/entity_loader.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-local loader = AsuraEngine.Loader.New("entity")
-
-function loader.OnLoad(asset)
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/image_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/image_loader.lua
deleted file mode 100644
index 6b0bef7..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/image_loader.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-require "graphics.image"
-local loader = AsuraEngine.Loader.New("image")
-
-function loader.OnLoad(asset)
-	assert(asset ~= nil)
-	local path = asset.extern 
-	local image = AusraEngine.Image.New(path)
-	if image == nil then 
-		AsuraEngine.LogError("")
-		return
-	end
-	return image
-end
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/loader.lua
deleted file mode 100644
index e192e30..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/loader.lua
+++ /dev/null
@@ -1,12 +0,0 @@
--- Assets loaders
-AsuraEngine.Loader = {}
-local Loader = AsuraEngine.Loader
-Loader.Loaders = {}
-
-function Loader.New(type)
-	assert(Loader.Loaders[type] == nil)
-	local loader = {} 
-	Loader[type] = loader
-	return loader
-end
-
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/material_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/material_loader.lua
deleted file mode 100644
index 07ca4e9..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/material_loader.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-require "MaterialManager"
-
-local loader = AsuraEngine.Loader.New("material")
-
-function loader.OnLoad(asset)
-	
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/path_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/path_loader.lua
deleted file mode 100644
index 986e42c..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/path_loader.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-require "Path/PathManager"
-
-local loader = AsuraEngine.Loader.New("path")
-
-function loader.OnLoad(asset)
-	if asset.type ~= "path" then 
-		return nil		
-	end 
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/scene_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/scene_loader.lua
deleted file mode 100644
index 45731f8..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/scene_loader.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-local Scene = require "scene"
-
-local loader = AsuraEngine.Loader.New("scene")
-
-function loader.OnLoad(asset) 
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/script_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/script_loader.lua
deleted file mode 100644
index e93d903..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/script_loader.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-local loader = AsuraEngine.Loader.New("script")
-
-function loader.OnLoad(asset)
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/shader_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/shader_loader.lua
deleted file mode 100644
index 12d88bb..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/shader_loader.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-local loader = AsuraEngine.Loader.New("shader")
-
-function loader.OnLoad(asset)
-	
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/filesystem/statemap_loader.lua b/source/libs/asura-lib-framework/scripts/filesystem/statemap_loader.lua
deleted file mode 100644
index e52e086..0000000
--- a/source/libs/asura-lib-framework/scripts/filesystem/statemap_loader.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-require "ai/statemap_manager"
-local loader = AsuraEngine.Loader.New("statemap")
-
---载入statemap
-function loader.OnLoad(asset)
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/framework.lua b/source/libs/asura-lib-framework/scripts/framework.lua
deleted file mode 100644
index 4643221..0000000
--- a/source/libs/asura-lib-framework/scripts/framework.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-package.path = "scripts\\?.lua"
-
---loader 
-local loadfn = function(modulename)
-	local errmsg = ""
-	local modulepath = string.gsub(modulename, "%.", "/")
-	for path in string.gmatch(package.path, "([^;]+)") do
-			local filename = string.gsub(path, "%?", modulepath)
-			filename = string.gsub(filename, "\\", "/")
-			local result = kleiloadlua(filename)
-			if result then
-					return result
-			end
-			errmsg = errmsg.."\n\tno file '"..filename.."' (checked with custom loader)"
-	end
-	return errmsg	
-end 
-
-table.insert(package.loaders, 1, loadfn)
-
-require ""
diff --git a/source/libs/asura-lib-framework/scripts/graphics/animation.lua b/source/libs/asura-lib-framework/scripts/graphics/animation.lua
deleted file mode 100644
index 285adaa..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/animation.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-AsuraEngine.Animation = AsuraEngine.Asset.Extend("Animation")
-
-local Animation = AsuraEngine.Animation
-
-local Frame = AsuraEngine.Class("Frame")
-
-function Frame.Ctor(self)
-
-end
-
-function Animation.Ctor(self)
-
-end
-
-return Animation
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/animator.lua b/source/libs/asura-lib-framework/scripts/graphics/animator.lua
deleted file mode 100644
index fd2f979..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/animator.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local Component = AsuraEngine.Framework.Require("component")
-
-AsuraEngine.Animator = Component.Extend("Animator")
-
-local Animator = AsuraEngine.Animator
-
--- Animator inspector variables.
-Animator.spriteRenderer = AsuraEngine.Type.SpriteRenderer
-Animator.animation = AsuraEngine.Type.Animation
-
-function Animator:Ctor(entity, animation)
-	self.base(entity)
-	self.spriteRenderer = entity:GetSpriteRenderer()
-	self.animation = animation
-end
-
-function Animator:SetAnimation(animation)
-	self.animation = animation
-end
-
-function Animator:GetAnimation()
-	return self.animation
-end
-
-function Animator:OnUpdate(dt)
-
-end
-
-function Animator:OnRender()
-	
-end
-
-return Animator
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/camera.lua b/source/libs/asura-lib-framework/scripts/graphics/camera.lua
deleted file mode 100644
index a989de6..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/camera.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-AsuraEngine.Camera = AsuraEngine.Component.Extend("Camera")
-
-local Camera = AsuraEngine.Camera
-
-Camera.isCulling = AsuraEngine.Type.Bool 
-Camera.isOnScreen = AsuraEngine.Type.Bool
-
-function Camera.Ctor(self)
-	self.isCulling = false 
-	self.isOnScreen = false
-end
-
-function Camera.OnUpdate(dt)
-
-end
-
-function Camera.OnRender()
-
-end
-
-return Camera
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/canvas.lua b/source/libs/asura-lib-framework/scripts/graphics/canvas.lua
deleted file mode 100644
index ce2ca20..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/canvas.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-AsuraEngine.Canvas = AsuraEngine.Component.Extend("Canvas")
-
-local Canvas = AsuraEngine.Canvas
-
-function Canvas.Ctor(self, width, height)
-	self.simCanvas = AsuraEngine.SimCanvas.New(width, height)
-	self.width = width 
-	self.height = height
-end
-
-function Canvas.GetWidth(self)
-	return self.width 
-end
-
-function Canvas.GetHeight(self)
-	return self.height
-end
-
-function Canvas.GetSize(self)
-	return self.width, self.height
-end
-
-function Canvas.OnEnable(self)
-	if self.simCanvas == nil then 
-		return 
-	end 
-	self.simCanvas:Begin() 
-end
-
-function Canvas.OnDisable(self)
-	
-end
-
-return Canvas
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/default_shaders.lua b/source/libs/asura-lib-framework/scripts/graphics/default_shaders.lua
deleted file mode 100644
index bd54cb9..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/default_shaders.lua
+++ /dev/null
@@ -1,5 +0,0 @@
---[[
-���õ�shaders.
-]]
-
-
diff --git a/source/libs/asura-lib-framework/scripts/graphics/image.lua b/source/libs/asura-lib-framework/scripts/graphics/image.lua
deleted file mode 100644
index f5ebaa2..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/image.lua
+++ /dev/null
@@ -1,40 +0,0 @@
--- 图片资源
-AsuraEngine.Image = AsuraEngine.Asset.Extend("Image")
-
-local Image = AsuraEngine.Image
-
-function Image.Ctor(self, path)
-	local simImage = AsuraEngine.SimImage.New(path) 
-	local w, h = simImage:GetSize()
-	self.simImage = simImage
-	self.width = w
-	self.height = h
-end
-
-function Image.GetWidth(self)
-	return self.simImage.GetWidth()
-end
-
-function Image.GetHeight(self)
-	return self.simImage.GetHeight()
-end
-
-function Image.GetSize(self)
-	return self.simImage.GetSize()
-end
-
---获得x,y位置的颜色值
-function Image.GetColor(self, x, y)
-	return self.simImage.GetColor(x, y)
-end
-
---获得所有像素,返回到一个table里
-function Image.GetPixels(self)
-	return self.simImage:GetPixels()
-end
-
---image不可再编辑器编辑,所以没有ToAsset方法
---function Image.ToAsset()
---end
-
-return Image
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/material.lua b/source/libs/asura-lib-framework/scripts/graphics/material.lua
deleted file mode 100644
index 5a6e5bd..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/material.lua
+++ /dev/null
@@ -1,48 +0,0 @@
---material是shader的代理
-AsuraEngine.Material = AsuraEngine.Asset.Extend("Material")
-
-local Material = AsuraEngine.Material
-
-function Material.Ctor(self)
-	self.uniforms = {} --uniform变量和值
-	self.shader = nil
-	self.isShared = false
-end
-
-function Material.Clone(self)
-
-end
-
-function Material:ToAsset()
-
-end
-  
-function Material:GetUniform(name)
-
-end
-
-function Material:SetFloat(uniform, value)
-	
-end
-
-function Material:SetTexture(uniform, tex)
-
-end
-
-function Material:SetInteger(unifrom, value)
-
-end
-
-function Material:SetVec2(uniform, value)
-
-end
-
-function Material:SetMat44(uniform, value)
-
-end
-
-function Material:GetUniformID() 
-
-end
-
-return Material
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/material_manager.lua b/source/libs/asura-lib-framework/scripts/graphics/material_manager.lua
deleted file mode 100644
index 086a5db..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/material_manager.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-local MaterialManager = AsuraEngine.Manager.New()
-
-return MaterialManager 
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/mesh2d.lua b/source/libs/asura-lib-framework/scripts/graphics/mesh2d.lua
deleted file mode 100644
index 05b2e2e..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/mesh2d.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-AsuraEngine.Mesh2D = AsuraEngine.Asset.Extend("Mesh2D")
-
-local Mesh2D = AsuraEngine.Mesh2D
-
-function Mesh2D.Ctor(self)
-
-end
-
-return Mesh2D
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/mesh2d_renderer.lua b/source/libs/asura-lib-framework/scripts/graphics/mesh2d_renderer.lua
deleted file mode 100644
index 09c8c98..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/mesh2d_renderer.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-AsuraEngine.Mesh2DRenderer = AsuraEngine.Renderer.Extend("Mesh2DRenderer")
-
-local Mesh2DRenderer = AsuraEngine.Mesh2DRenderer
-
-function Mesh2DRenderer.Ctor(self, material)
-	self.base(material)
-end
-
-function Mesh2DRenderer.OnRender(self)
-
-end
-
-return Mesh2DRenderer
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/particle_system.lua b/source/libs/asura-lib-framework/scripts/graphics/particle_system.lua
deleted file mode 100644
index 065a845..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/particle_system.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-require "graphics.sprite_renderer"
-
-AsuraEngine.ParticleSystem = AsuraEngine.Component.Extend("ParticleSystem")
-
-local ParticleSystem = AsuraEngine.ParticleSystem
-
-function ParticleSystem.Ctor(self, entity, def)
-	self.base(entity)
-	self.spriteRenderer = AsuraEngine.SpriteRenderer.New()
-end
-
-function ParticleSystem.OnRenderer()
-
-end
-
-function ParticleSystem.OnUpdate(dt)
-
-end
-
-return ParticleSystem
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/renderer.lua b/source/libs/asura-lib-framework/scripts/graphics/renderer.lua
deleted file mode 100644
index 92a6409..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/renderer.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-local Renderer = AsuraEngine.Component.Extend("Renderer")
-AsuraEngine.Renderer = Renderer
-
-function Renderer.Ctor(self)
-	self.materials = {} 
-	self.material = nil 
-	self.isMultiMaterials = false
-end
-
---取材质,如果是shared,那么从此材质clone一个
-function Renderer.GetMaterial(self)
-	
-end 
-
-function Renderer.IsMultiMaterials(self)
-	return self.isMultiMaterials
-end
-
-return Renderer
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/shader.lua b/source/libs/asura-lib-framework/scripts/graphics/shader.lua
deleted file mode 100644
index c411619..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/shader.lua
+++ /dev/null
@@ -1,75 +0,0 @@
-AsuraEngine.Shader = AsuraEngine.Asset.Extend("Shader")
-
-local helper = AsuraEngine.Framework.Require("graphics/shaderHelper")
-
-local Shader = AsuraEngine.Shader
-
-function Shader.Ctor(self)
-	self.simShader = nil
-	self.uniforms = {} -- 映射uniform name到location	
-end
-
---编译shader
-function Shader.Load(self, vert, frag)
-	self.uniforms = {} 
-	if self.simShader == nil then 
-		self.simShader = AsuraEngine.SimShader.New(vert, frag)
-	else 
-		self.simShader:Load(vert, frag)
-	end
-	if self.simShader == nil then 
-		--shader编译错误
-		return 
-	end 
-	--在编译的时候就获得所有的uniform和loc
-	local uniforms = helper.GetUniforms(vert, frag)
-	if uniforms == nil then 
-		return
-	end 
-	for _, uniform in uniforms do 
-		self.uniforms[uniform] = self.simShader:GetUniformLocation(uniform)
-	end 
-end
-
-function Shader.GetUniformLocation(self, name)
-	if self.uniforms then 
-		local id = self.uniforms[name]
-		return id
-	end 
-	return 0
-end
-
-function Shader.SendVec2(self, name, vec2)
-	local id = self:GetUniformLocation(name)
-	self.simShader:SendUniformVector2(name, vec2)
-end
-
-function Shader.SendVec3(self, name, vec3)
-
-end
-
-function Shader.SendVec4(self, name, vec4)
-
-end 
-
-function Shader.SendTexture(self, name, tex)
-
-end
-
-function Shader.SendFloat(self, name, number)
-
-end
-
-function Shader.SendInteger(self, name, integer)
-
-end
-
-function Shader.SendColor(self, name, color)
-
-end
-
-function Shader.SendMat44(self, name, mat44)
-
-end
-
-return Shader
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/shaderHelper.lua b/source/libs/asura-lib-framework/scripts/graphics/shaderHelper.lua
deleted file mode 100644
index b1b42a6..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/shaderHelper.lua
+++ /dev/null
@@ -1,14 +0,0 @@
---[[
-解析vertex shader和 fragment shader,并取得两个shader里面定义的uniforms
-]]
-local helper = {} 
-
-function helper.GetUniforms(vert, frag) 
-
-end 
-
-function helper.TryCompileShader(vert, frag)
-
-end 
-
-return helper
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/shape.lua b/source/libs/asura-lib-framework/scripts/graphics/shape.lua
deleted file mode 100644
index 51ea8c3..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/shape.lua
+++ /dev/null
@@ -1,12 +0,0 @@
---
--- 2D图形
---
-AsuraEngine.Shape = AsuraEngine.Asset.Extend("Shape")
-
-local Shape = AsuraEngine.Shape
-
-function Shape.Ctor(self)
-
-end
-
-return Shape
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/shape_renderer.lua b/source/libs/asura-lib-framework/scripts/graphics/shape_renderer.lua
deleted file mode 100644
index 80b48b8..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/shape_renderer.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-AsuraEngine.ShapeRenderer = AsuraEngine.Component.Extend("ShapeRenderer")
-
-local ShapeRenderer = AsuraEngine.ShapeRenderer
-
-function ShapeRenderer.OnRenderer()
-
-end
-
-function ShapeRenderer.OnUpdate(dt) 
-
-end
-
-return ShapeRenderer
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/sprite.lua b/source/libs/asura-lib-framework/scripts/graphics/sprite.lua
deleted file mode 100644
index 9bf05f4..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/sprite.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-local Sprite = AsuraEngine.Asset.Extend("Sprite")
-AsuraEngine.Sprite = Sprite
-
-function Sprite.Ctor(self, image)
-	self.image = image
-end
-
-function Sprite.ToAsset(self)
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/sprite_batch_renderer.lua b/source/libs/asura-lib-framework/scripts/graphics/sprite_batch_renderer.lua
deleted file mode 100644
index 9ec73d2..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/sprite_batch_renderer.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-AsuraEngine.SpriteBatchRenderer = AsuraEngine.Component.Extend("SpriteBatchRenderer")
-
-local SpriteBatchRenderer = AsuraEngine.SpriteBatchRenderer
-
-function SpriteBatchRenderer.Ctor(self)
-
-end
-
-return SpriteBatchRenderer
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/graphics/sprite_renderer.lua b/source/libs/asura-lib-framework/scripts/graphics/sprite_renderer.lua
deleted file mode 100644
index 0a41e08..0000000
--- a/source/libs/asura-lib-framework/scripts/graphics/sprite_renderer.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-require "graphics.renderer"
-
-local SpriteRenderer = AsuraEngine.Renderer.Extend("Spriterenderer")
-AsuraEngine.SpriteRenderer = SpriteRenderer
-
-function SpriteRenderer.Ctor(self)
-	self.materials = {}
-end
-
-function SpriteRenderer:OnRender()
-	
-end
-
-return SpriteRenderer
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/gui/button.lua b/source/libs/asura-lib-framework/scripts/gui/button.lua
deleted file mode 100644
index b122931..0000000
--- a/source/libs/asura-lib-framework/scripts/gui/button.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-AsuraEngine.Button = AsuraEngine.Component.Extend("Button")
-
-local Button = AsuraEngine.Button 
-
-function Button.Ctor(self)
-
-end
-
-function Button.OnEvent(e)
-
-end 
-
-function Button.OnRender() 
-
-end 
-
-function Button.OnUpdate(dt)
-
-end
-
-return Button
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/gui/text.lua b/source/libs/asura-lib-framework/scripts/gui/text.lua
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/scripts/gui/widget.lua b/source/libs/asura-lib-framework/scripts/gui/widget.lua
deleted file mode 100644
index 430ade0..0000000
--- a/source/libs/asura-lib-framework/scripts/gui/widget.lua
+++ /dev/null
@@ -1,14 +0,0 @@
---[[
-Imgui,用在游戏里面
-]]
-local Widget = AsuraEngine.Component("Widget")
-
-function Widget.Ctor(self)
-	
-end
-
-function Widget.OnEvent(self, e)
-
-end
-
-return Widget
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/managers/scene_manager.lua b/source/libs/asura-lib-framework/scripts/managers/scene_manager.lua
deleted file mode 100644
index 7886dc6..0000000
--- a/source/libs/asura-lib-framework/scripts/managers/scene_manager.lua
+++ /dev/null
@@ -1,16 +0,0 @@
-AsuraEngine.SceneManager = AsuraEngine.Class("SceneManager")
-
-local SceneManager = AsuraEngine.SceneManager
-
---游戏里的所有场景
-SceneManager.scenes = {}
-
-function SceneManager.Ctor() 
-
-end 
-
-function SceneManager.GetSceneByGUID() 
-	
-end
-
-return SceneManager
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/managers/sprite_manager.lua b/source/libs/asura-lib-framework/scripts/managers/sprite_manager.lua
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/scripts/math/curve.lua b/source/libs/asura-lib-framework/scripts/math/curve.lua
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/scripts/path/path.lua b/source/libs/asura-lib-framework/scripts/path/path.lua
deleted file mode 100644
index 1fc9b3a..0000000
--- a/source/libs/asura-lib-framework/scripts/path/path.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-local Path = AsuraEngine.Asset.New("path")
-
-function Path:Ctor() 
-
-end
-
--- ToAsset�����Ѷ���pathת��Ϊ.asset�ļ���ʽ
-function Path.ToAsset(path)
-		local builder = AsuraEngine.AssetBuilder.Get()
-		
-end
-
-return Path
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/path/path_calculator.lua b/source/libs/asura-lib-framework/scripts/path/path_calculator.lua
deleted file mode 100644
index d44da08..0000000
--- a/source/libs/asura-lib-framework/scripts/path/path_calculator.lua
+++ /dev/null
@@ -1,12 +0,0 @@
---[[
-��������������ڱ༭����components�б���
-]]
-local PathCalculator = AsuraEngine.Component.New("PathCalculator")
-
-PathCalculator.path = AsuraEngine.Asset.Type("path", "·��")
-
-function PathCalculator:ctor(path) 
-		self.path = path
-end
-
-return PathCalculator
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/path/path_manager.lua b/source/libs/asura-lib-framework/scripts/path/path_manager.lua
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-framework/scripts/scene.lua b/source/libs/asura-lib-framework/scripts/scene.lua
deleted file mode 100644
index 11ac86c..0000000
--- a/source/libs/asura-lib-framework/scripts/scene.lua
+++ /dev/null
@@ -1,22 +0,0 @@
---
--- Scene是一系列gameobject的集合。
---
-AsuraEngine.Scene = AsuraEngine.Asset.Extend("Scene")
-
-local Scene = AsuraEngine.Scene 
-
-function Scene.Ctor(self) 
-	self.rootGameObjects = {} --当前场景的所有root entity
-	self.super.Ctor(self)
-end
-
---获取当前的场景
-function Scene.GetCurrent()
-
-end
-
-function Scene.ToAsset() 
-
-end 
-
-return Scene
\ No newline at end of file
diff --git a/source/libs/asura-lib-framework/scripts/transform.lua b/source/libs/asura-lib-framework/scripts/transform.lua
deleted file mode 100644
index 1d34ae6..0000000
--- a/source/libs/asura-lib-framework/scripts/transform.lua
+++ /dev/null
@@ -1,13 +0,0 @@
--- transform的起点在左下角,逆时针为正向
-AsuraEngine.Transform = AsuraEngine.Class("Transform")
-local Transform = AsuraEngine.Transform
-
-function Transform.Ctor(self)
-	self.position = {x=0, y=0}
-	self.rotation = 0
-	self.size = {w=0, h=0}
-end
-
-function Transform.Move(self)
-
-end
\ No newline at end of file
diff --git a/source/libs/asura-lib-json/json.cpp b/source/libs/asura-lib-json/json.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-json/json.h b/source/libs/asura-lib-json/json.h
deleted file mode 100644
index 2bdaf53..0000000
--- a/source/libs/asura-lib-json/json.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef __ASURA_JSON_H__
-#define __ASURA_JSON_H__
-
-namespace AsuraEngine
-{
-	namespace Json
-	{
-
-
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-json/json_module.cpp b/source/libs/asura-lib-json/json_module.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-json/json_module.h b/source/libs/asura-lib-json/json_module.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-openal/sound.cpp b/source/libs/asura-lib-openal/sound.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-openal/sound.h b/source/libs/asura-lib-openal/sound.h
deleted file mode 100644
index 6c2d7c2..0000000
--- a/source/libs/asura-lib-openal/sound.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __ASURA_ENGINE_SOUND_H__
-#define __ASURA_ENGINE_SOUND_H__
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-namespace AsuraEngine
-{
-	namespace Audio
-	{
-
-		///
-		/// ��Ƶ�ļ�
-		///
-		class Sound ASURA_FINAL
-			: public AEScripting::Portable<Sound>
-		{
-		public:
-
-			Sound();
-			~Sound();
-
-		private:
-
-
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-openal/sound_decode_task.cpp b/source/libs/asura-lib-openal/sound_decode_task.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-openal/sound_decode_task.h b/source/libs/asura-lib-openal/sound_decode_task.h
deleted file mode 100644
index d39013f..0000000
--- a/source/libs/asura-lib-openal/sound_decode_task.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __ASURA_OPENAL_SOUND_DECODER_TASK_H__
-#define __ASURA_OPENAL_SOUND_DECODER_TASK_H__
-
-#include <asura-lib-utils/threading/thread_task.h>
-
-namespace AsuraEngine
-{
-	namespace OpenAL
-	{
-
-		///
-		/// ������Ƶ�ļ�����
-		///
-		class SoundDecodeTask : public AEThreading::ThreadTask
-		{
-		public:
-
-		private:
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-openal/sound_decoder.cpp b/source/libs/asura-lib-openal/sound_decoder.cpp
deleted file mode 100644
index ad9f761..0000000
--- a/source/libs/asura-lib-openal/sound_decoder.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef __ASURA_ENGINE_SOUND_DECODER_H__
-#define __ASURA_ENGINE_SOUND_DECODER_H__
-
-#include "Sound.h"
-#include "FileSystem/DataBuffer.h"
-
-namespace AsuraEngine
-{
-	namespace Audio
-	{
-
-		///
-		/// ������Ƶ�ļ�
-		/// 
-		class SoundDecoder
-		{
-		public:
-
-			SoundDecoder();
-			virtual ~SoundDecoder();
-
-			virtual Sound* Decode(const Filesystem::DataBuffer* db);
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-openal/sound_decoder.h b/source/libs/asura-lib-openal/sound_decoder.h
deleted file mode 100644
index 2a3f087..0000000
--- a/source/libs/asura-lib-openal/sound_decoder.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __ASURA_ENGINE_SOUND_DECODER_H__
-#define __ASURA_ENGINE_SOUND_DECODER_H__
-
-#include <asura-lib-utils/io/data_buffer.h>
-
-#include "sound.h"
-
-namespace AsuraEngine
-{
-	namespace Audio
-	{
-
-		///
-		/// ������Ƶ�ļ�
-		/// 
-		class SoundDecoder
-		{
-		public:
-
-			SoundDecoder();
-			virtual ~SoundDecoder();
-
-			virtual Sound* Decode(const AEIO::DataBuffer* db);
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/exceptions/exception.cpp b/source/libs/asura-lib-utils/exceptions/exception.cpp
deleted file mode 100644
index dbb36ca..0000000
--- a/source/libs/asura-lib-utils/exceptions/exception.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "Exception.h"
-
-#include <cstdarg>
-#include <iostream>
-
-namespace AsuraEngine
-{
-
-	Exception::Exception(const char *fmt, ...)
-	{
-		va_list args;
-		int size_buffer = 256, size_out;
-		char *buffer;
-		while (true)
-		{
-			buffer = new char[size_buffer];
-			memset(buffer, 0, size_buffer);
-
-			va_start(args, fmt);
-			size_out = vsnprintf(buffer, size_buffer, fmt, args);
-			va_end(args);
-
-			// see http://perfec.to/vsnprintf/pasprintf.c
-			// if size_out ...
-			//      == -1             --> output was truncated
-			//      == size_buffer    --> output was truncated
-			//      == size_buffer-1  --> ambiguous, /may/ have been truncated
-			//       > size_buffer    --> output was truncated, and size_out
-			//                            bytes would have been written
-			if (size_out == size_buffer || size_out == -1 || size_out == size_buffer - 1)
-				size_buffer *= 2;
-			else if (size_out > size_buffer)
-				size_buffer = size_out + 2; // to avoid the ambiguous case
-			else
-				break;
-
-			delete[] buffer;
-		}
-		message = std::string(buffer);
-		delete[] buffer;
-	}
-
-	Exception::~Exception() throw()
-	{
-	}
-
-}
diff --git a/source/libs/asura-lib-utils/exceptions/exception.h b/source/libs/asura-lib-utils/exceptions/exception.h
deleted file mode 100644
index 57c9ed6..0000000
--- a/source/libs/asura-lib-utils/exceptions/exception.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef __ASURA_ENGINE_EXCEPTION_H__
-#define __ASURA_ENGINE_EXCEPTION_H__
-
-#include <string>
-#include <exception>
-
-namespace AsuraEngine
-{
-	
-	/**
-	* A convenient vararg-enabled exception class.
-	**/
-	class Exception : public std::exception
-	{
-	public:
-
-		/**
-		* Creates a new Exception according to printf-rules.
-		*
-		* See: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
-		*
-		* @param fmt The format string (see printf).
-		**/
-		Exception(const char *fmt, ...);
-		virtual ~Exception() throw();
-
-		/**
-		* Returns a string containing reason for the exception.
-		* @return A description of the exception.
-		**/
-		inline virtual const char *what() const throw()
-		{
-			return message.c_str();
-		}
-
-	private:
-
-		std::string message;
-
-	}; // Exception
-
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/binding/_compressor.cpp b/source/libs/asura-lib-utils/io/binding/_compressor.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp b/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp
deleted file mode 100644
index cd73b31..0000000
--- a/source/libs/asura-lib-utils/io/binding/_data_buffer.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-#include "../data_buffer.h"
-
-using namespace Luax;
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		LUAX_REGISTRY(DataBuffer)
-		{
-			LUAX_REGISTER_METHODS(state, 
-				{ "New",      _New      },
-				{ "GetData",  _GetData  },
-				{ "GetSize",  _GetSize  },
-				{ "Refactor", _Refactor },
-				{ "Load",     _Load     },
-				{ "Clear",    _Clear    }
-			);
-		}
-
-		LUAX_POSTPROCESS(DataBuffer)
-		{
-		}
-
-		// databuffer = DataBuffer.New(lstring)
-		// databuffer = DataBuffer.New(size)
-		LUAX_IMPL_METHOD(DataBuffer, _New)
-		{
-			LUAX_STATE(L);
-
-			if (state.IsType(1, LUA_TSTRING))
-			{
-				size_t size;
-				const byte* bytes = lua_tolstring(L, 1, &size);
-				DataBuffer* buffer = new DataBuffer(bytes, size);
-				buffer->PushLuaxUserdata(state);
-				return 1;
-			}
-			else if (state.IsType(1, LUA_TNUMBER))
-			{
-				size_t size = lua_tonumber(L, 1);
-				DataBuffer* buffer = new DataBuffer(size);
-				buffer->PushLuaxUserdata(state);
-				return 1;
-			}
-			else
-			{
-				return state.ErrorType(1, "number or string");
-			}
-		}
-
-		// lsting, len = databuffer:GetData()
-		LUAX_IMPL_METHOD(DataBuffer, _GetData)
-		{
-			LUAX_SETUP(L, "U");
-
-			DataBuffer* self = state.GetUserdata<DataBuffer>(1);
-			lua_pushlstring(L, self->GetData(), self->GetSize());
-			return 1;
-		}
-
-		// length = databuffer:GetSize()
-		LUAX_IMPL_METHOD(DataBuffer, _GetSize)
-		{
-			LUAX_SETUP(L, "U");
-
-			DataBuffer* self = state.GetUserdata<DataBuffer>(1);
-			lua_pushinteger(L, self->GetSize());
-			return 1;
-		}
-
-		// databuffer:Refactor(size)
-		LUAX_IMPL_METHOD(DataBuffer, _Refactor)
-		{
-			LUAX_PREPARE(L, DataBuffer);
-
-			size_t size = state.CheckValue<int>(2);
-			self->Refactor(size);
-			return 0;
-		}
-
-		// size = databuffer:Load(lstring)
-		// size = databuffer:Load(src)
-		LUAX_IMPL_METHOD(DataBuffer, _Load)
-		{
-			LUAX_STATE(L);
-
-			DataBuffer* buffer = state.GetUserdata<DataBuffer>(1); 
-			const byte* data;
-			size_t size;
-			if (state.IsType(2, LUA_TSTRING))
-			{
-				data = lua_tolstring(L, 2, &size);
-				size_t len = buffer->Load(data, size);
-				state.Push(len);
-				return 1;
-			}
-			else if(state.IsType(2, LUA_TUSERDATA))
-			{
-				DataBuffer* src = state.CheckUserdata<DataBuffer>(2);
-				size_t len = buffer->Load(*src);
-				state.Push(len);
-				return 1;
-			}
-			else
-			{
-				return state.ErrorType(1, "lstring or DataBuffer");
-			}
-		}
-
-		// databuffer:Clear()
-		LUAX_IMPL_METHOD(DataBuffer, _Clear)
-		{
-			LUAX_SETUP(L, "U");
-
-			DataBuffer* self = state.GetUserdata<DataBuffer>(1);
-			self->Clear(); 
-			return 0;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/binding/_file.cpp b/source/libs/asura-lib-utils/io/binding/_file.cpp
deleted file mode 100644
index c44bc90..0000000
--- a/source/libs/asura-lib-utils/io/binding/_file.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-#include "../file.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		LUAX_REGISTRY(File)
-		{
-			LUAX_REGISTER_METHODS(state, 
-				{ "New",          _New          },
-				{ "Open",         _Open         },
-				{ "Close",        _Close        },
-				{ "IsOpen",       _IsOpen       },
-				{ "GetMode",      _GetMode      },
-				{ "GetSize",      _GetSize      },
-				{ "Read",         _Read         },
-				{ "IsEOF",        _IsEOF        },
-				{ "Write",        _Write        },
-				{ "Flush",        _Flush        },
-				{ "Tell",         _Tell         },
-				{ "Seek",         _Seek         },
-				{ "SetBuffer",    _SetBuffer    },
-				{ "GetBuffer",    _GetBuffer    },
-				{ "GetFileName",  _GetFileName  },
-				{ "GetExtension", _GetExtension },
-				{ "GetName",      _GetName      }
-			);
-		}
-
-		LUAX_POSTPROCESS(File)
-		{
-			LUAX_REGISTER_ENUM(state, "EFileMode",
-				{ "CLOSED",	FILE_MODE_CLOSED },
-				{ "READ",		FILE_MODE_READ   },
-				{ "WRITE",	FILE_MODE_WRITE  },
-				{ "APPEND",	FILE_MODE_APPEND }
-			);
-
-			LUAX_REGISTER_ENUM(state, "EBufferMode", 
-				{ "NONE", BUFFER_MODE_NONE}, 
-				{ "LINE", BUFFER_MODE_LINE}, 
-				{ "FULL", BUFFER_MODE_FULL} 
-			);
-		}
-
-		// file = File.New(name)
-		LUAX_IMPL_METHOD(File, _New)
-		{
-			LUAX_STATE(L);
-
-			cc8* name = state.CheckValue<cc8*>(1); 
-			File* file = new File(name);
-			file->PushLuaxUserdata(state); 
-			return 1;
-		}
-
-		// successsed = file:Open(mode)
-		LUAX_IMPL_METHOD(File, _Open)
-		{
-			LUAX_PREPARE(L, File); 
-
-			File::FileMode mode = (File::FileMode)state.CheckValue<int>(2);
-			state.Push(self->Open(mode));
-			return 1;
-		}
-
-		// successed = file:Close()  
-		LUAX_IMPL_METHOD(File, _Close)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->Close());
-			return 1;
-		}
-
-		// opened = file:IsOpen() 
-		LUAX_IMPL_METHOD(File, _IsOpen)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->IsOpen());
-			return 1;
-		}
-
-		// mode = file:GetMode() 
-		LUAX_IMPL_METHOD(File, _GetMode)
-		{
-			LUAX_PREPARE(L, File);
-
-			File::FileMode mode = self->GetMode();
-			state.Push((int)mode);
-			return 1;
-		}
-
-		// size = file:GetSize() 
-		LUAX_IMPL_METHOD(File, _GetSize)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->GetSize());
-			return 1;
-		}
-
-		// size = file:Read(dst, len)
-		// returns:
-		//   size ʵ�ʶ���Ĵ�С
-		// params: 
-		//   self �ļ�
-		//   dst  Ŀ�껺����
-		//   len  ��������Ĵ�С
-		LUAX_IMPL_METHOD(File, _Read)
-		{
-			LUAX_PREPARE(L, File);
-
-			DataBuffer* db = state.CheckUserdata<DataBuffer>(2);
-			if (!db) return state.ErrorType(2, "DataBuffer");
-			int len = state.CheckValue<int>(3);
-			int size = self->Read(db, len);
-			state.Push(size); 
-			return 1;
-		}
-
-		// isEOF = file:IsEOF()
-		LUAX_IMPL_METHOD(File, _IsEOF)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->IsEOF());
-			return 1;
-		}
-
-		// isWrite = file:Write(data buffer[, size])
-		LUAX_IMPL_METHOD(File, _Write)
-		{
-			LUAX_PREPARE(L, File);
-
-			DataBuffer* db = state.CheckUserdata<DataBuffer>(2);
-			if (!db) return state.ErrorType(2, "DataBuffer");
-			state.Push(self->Write(db));
-			return 1;
-		}
-
-		// isFlushed = file:Flush() 
-		LUAX_IMPL_METHOD(File, _Flush)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->Flush());
-			return 1;
-		}
-
-		// pos = file:Tell() 
-		LUAX_IMPL_METHOD(File, _Tell)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->Tell());
-			return 1;
-		}
-
-		// isSeek = file:Seek(pos)
-		LUAX_IMPL_METHOD(File, _Seek)
-		{
-			LUAX_PREPARE(L, File);
-
-			int pos = state.CheckValue<int>(2);
-			state.Push(self->Seek(pos));
-			return 1;
-		}
-
-		// isSetted = file:SetBuffer(mode, size)
-		LUAX_IMPL_METHOD(File, _SetBuffer)
-		{
-			LUAX_PREPARE(L, File);
-
-			BufferMode mode = (BufferMode)state.CheckValue<int>(2);
-			int size = state.CheckValue<int>(3);
-			state.Push(self->SetBuffer(mode, size));
-			return 1;
-		}
-
-		// size, mode = file:GetBuffer() 
-		LUAX_IMPL_METHOD(File, _GetBuffer)
-		{
-			LUAX_PREPARE(L, File);
-
-			size_t size = 0; 
-			BufferMode mode = self->GetBuffer(ASURA_OUT size); 
-			state.Push((int)size);
-			state.Push((int)mode);
-			return 2;
-		}
-
-		// name = file:GetFileName() 
-		LUAX_IMPL_METHOD(File, _GetFileName)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->GetFileName());
-			return 1;
-		}
-
-		// name = file:GetExtension() 
-		LUAX_IMPL_METHOD(File, _GetExtension)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->GetExtension());
-			return 1;
-		}
-
-		// name = file:GetName() 
-		LUAX_IMPL_METHOD(File, _GetName)
-		{
-			LUAX_PREPARE(L, File);
-
-			state.Push(self->GetName());
-			return 1;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/binding/_file_data.cpp b/source/libs/asura-lib-utils/io/binding/_file_data.cpp
deleted file mode 100644
index 09a0643..0000000
--- a/source/libs/asura-lib-utils/io/binding/_file_data.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "../file_data.h"
-
-using namespace std;
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		LUAX_REGISTRY(FileData)
-		{
-			LUAX_REGISTER_METHODS(state, 
-				{ "GetFileName",   _GetFileName   },
-				{ "GetExtension",  _GetExtension  },
-				{ "GetName",       _GetName       },
-				{ "GetDataBuffer", _GetDataBuffer }
-			);
-		}
-
-		LUAX_POSTPROCESS(FileData)
-		{
-		}
-
-		// filename = filedata:GetFileName()
-		LUAX_IMPL_METHOD(FileData, _GetFileName)
-		{
-			LUAX_PREPARE(L, FileData);
-			string filename = self->GetFileName(); 
-			state.Push(filename);
-			return 1;
-		}
-
-		// extension = filedata:GetExtension()
-		LUAX_IMPL_METHOD(FileData, _GetExtension)
-		{
-			LUAX_PREPARE(L, FileData);
-			string extension = self->GetExtension();
-			state.Push(extension);
-			return 1;
-		}
-
-		// name = filedata:GetName()
-		LUAX_IMPL_METHOD(FileData, _GetName)
-		{
-			LUAX_PREPARE(L, FileData);
-			string extension = self->GetName();
-			state.Push(extension);
-			return 1;
-		}
-
-		// databuffer = filedata:GetDataBuffer()
-		LUAX_IMPL_METHOD(FileData, _GetDataBuffer)
-		{
-			LUAX_PREPARE(L, FileData);
-			self->PushLuaxMemberRef(state, self->mDataRef);
-			return 1;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/binding/_file_system.cpp b/source/libs/asura-lib-utils/io/binding/_file_system.cpp
deleted file mode 100644
index 3843451..0000000
--- a/source/libs/asura-lib-utils/io/binding/_file_system.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-#include "../file_system.h"
-
-using namespace Luax;
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-#define PREPARE(l) \
-	LUAX_STATE(l); \
-	Filesystem* fs = Filesystem::Get();
-
-		LUAX_REGISTRY(Filesystem)
-		{
-			LUAX_REGISTER_METHODS(state, 
-				{ "Init",              _Init              },
-				{ "Mount",             _Mount             },
-				{ "Unmount",           _Unmount           },
-				{ "GetMountPoint",     _GetMountPoint     },
-				{ "SetWriteDirectory", _SetWriteDirectory },
-				{ "GetWriteDirectory", _GetWriteDirectory },
-				{ "CreateFile",        _CreateFile        },
-				{ "CreateDirectory",   _CreateDirectory   },
-				{ "Write",             _Write             },
-				{ "Append",            _Append            },
-				{ "Remove",            _Remove            },
-				{ "Read",              _Read              },
-				{ "GetFileInfo",       _GetFileInfo       },
-				{ "GetDirectoryItems", _GetDirectoryItems }
-			);
-		}
-
-		LUAX_POSTPROCESS(Filesystem)
-		{
-			LUAX_REGISTER_ENUM(state, "EFileType",
-				{ "FILE",      FILE_TYPE_FILE      },
-				{ "DIRECTORY", FILE_TYPE_DIRECTORY },
-				{ "SYMLINK",   FILE_TYPE_SYMLINK   },
-				{ "OTHER",     FILE_TYPE_OTHER     }
-			);
-		}
-
-		// Filesystem.Init(arg0)
-		LUAX_IMPL_METHOD(Filesystem, _Init)
-		{
-			PREPARE(L);
-
-			const char* arg0 = state.CheckValue<const char*>(1);
-			fs->Init(arg0);
-			return 0;
-		}
-
-		// successed = Filesystem.Mount(path, mountpoint[, prepend = false])
-		// successed = Filesystem.Mount(data buffer, archievename, mountpoint[, prepend = false])
-		LUAX_IMPL_METHOD(Filesystem, _Mount)
-		{
-			PREPARE(L);
-			bool mounted = false;
-
-			if (state.IsType(1, LUA_TSTRING))
-			{
-				cc8* path = state.GetValue<cc8*>(1, "");
-				cc8* moutpoint = state.GetValue<cc8*>(2, "/");
-				bool prepend = state.GetValue<bool>(3, false);
-				mounted = fs->Mount(path, moutpoint, prepend);
-			}
-			else if (state.IsType(1, LUA_TUSERDATA))
-			{
-				DataBuffer* db = state.CheckUserdata<DataBuffer>(1);
-				if (!db)
-					return state.ErrorType(1, "Data Buffer");
-				cc8* arcname = state.GetValue<cc8*>(2, "");
-				cc8* mountpoint = state.GetValue<cc8*>(3, "/");
-				bool prepend = state.GetValue<bool>(4, false);
-				mounted = fs->Mount(db, arcname, mountpoint, prepend);
-				// retain
-				fs->LuaxRetain<DataBuffer>(state, db);
-			}
-			state.Push(mounted);
-			return 1;
-		}
-
-		// successed = Filesystem.Unmount(path) 
-		// successed = Filesystem.Unmount(data buffer)
-		LUAX_IMPL_METHOD(Filesystem, _Unmount)
-		{
-			PREPARE(L); 
-			bool unmounted = false;
-
-			if (state.IsType(1, LUA_TSTRING))
-			{
-				cc8* path = state.GetValue<cc8*>(1, "");
-				unmounted = fs->Unmount(path);
-			}
-			else if (state.IsType(1, LUA_TUSERDATA))
-			{
-				DataBuffer* db = state.CheckUserdata<DataBuffer>(1);
-				if (!db)
-					return state.ErrorType(1, "Data Buffer");
-				unmounted = fs->Unmount(db); 
-				if (unmounted)
-					fs->LuaxRelease<DataBuffer>(state, db);
-			}
-			state.Push(unmounted);
-			return 1;
-		}
-
-		// moutpoint = Filesystem.GetMountPoint(path) 
-		LUAX_IMPL_METHOD(Filesystem, _GetMountPoint)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			std::string mp;
-			if (fs->GetMountPoint(path, ASURA_OUT mp))
-				state.Push(mp);
-			else
-				state.PushNil();
-
-			return 1;
-		}
-
-		// Filesystem.SetWriteDirectory(dir)
-		LUAX_IMPL_METHOD(Filesystem, _SetWriteDirectory)
-		{
-			PREPARE(L);
-
-			cc8* dir = state.CheckValue<cc8*>(1);
-			fs->SetWriteDirectory(dir);
-			return 0;
-		}
-
-		// dir = Filesystem.GetWriteDirectory()
-		LUAX_IMPL_METHOD(Filesystem, _GetWriteDirectory)
-		{
-			PREPARE(L);
-
-			std::string dir = fs->GetWriteDirectory(); 
-			state.Push(dir); 
-			return 1;
-		}
-
-		// file = Filesystem.CreateFile(name) 
-		LUAX_IMPL_METHOD(Filesystem, _CreateFile)
-		{
-			PREPARE(L);
-
-			cc8* name = state.CheckValue<cc8*>(1); 
-			File* file = fs->NewFile(name);
-			if (file)
-				file->PushLuaxUserdata(state);
-			else
-				state.PushNil(); 
-			return 1;
-		}
-
-		// successed = Filesystem.CreateDirectory(name) 
-		LUAX_IMPL_METHOD(Filesystem, _CreateDirectory)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1); 
-			state.Push(fs->NewDirectory(path));
-			return 1;
-		}
-
-		// successed = Filesystem.Write(path, data buffer) 
-		LUAX_IMPL_METHOD(Filesystem, _Write)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			DataBuffer* db = state.CheckUserdata<DataBuffer>(2);
-			state.Push(fs->Write(path, db));
-			return 1;
-		}
-
-		// successed = Filesystem.Append(path, data buffer) 
-		LUAX_IMPL_METHOD(Filesystem, _Append)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			DataBuffer* db = state.CheckUserdata<DataBuffer>(2);
-			state.Push(fs->Append(path, db));
-			return 1;
-		}
-
-		// successed = Filesystem.Remove(path) 
-		LUAX_IMPL_METHOD(Filesystem, _Remove)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			state.Push(fs->Remove(path));
-			return 1;
-		}
-
-		// filedata = Filesystem.Read(path)
-		LUAX_IMPL_METHOD(Filesystem, _Read)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			FileData* fd = fs->Read(path);
-			if (fd)
-			{
-				fd->mData->PushLuaxUserdata(state); 
-				fd->SetLuaxMemberRef(state, fd->mDataRef, -1); // fd->mDataRef = data buffer
-				state.Pop(1); // data buffer
-				fd->PushLuaxUserdata(state);
-			}
-			else
-			{
-				state.PushNil();
-			}
-			return 1;
-		}
-
-		// fileinfo = Filesystem.GetFileInfo(path)
-		LUAX_IMPL_METHOD(Filesystem, _GetFileInfo)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			FileInfo info;
-			if (fs->GetFileInfo(path, &info))
-			{
-				lua_newtable(L); // info table 
-				state.SetField(-1, "size", info.size);
-				state.SetField(-1, "modtime", info.modtime);
-				state.SetField(-1, "type", info.type);
-			}
-			else
-			{
-				state.PushNil(); 
-			}
-			return 1;
-		}
-
-		// items = Filesystem.GetDirectoryItems(path)
-		LUAX_IMPL_METHOD(Filesystem, _GetDirectoryItems)
-		{
-			PREPARE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			std::vector<std::string> items;
-			if(fs->GetDirectoryItems(path, ASURA_OUT items))
-			{
-				lua_newtable(L); // item list 
-				for (int i = 0; i < items.size(); ++i)
-				{
-					state.SetFieldByIndex(-1, i + 1, items[i]);
-				}
-			}
-			else
-			{
-				state.PushNil(); 
-			}
-			return 1;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/binding/_io_task.cpp b/source/libs/asura-lib-utils/io/binding/_io_task.cpp
deleted file mode 100644
index b3c5988..0000000
--- a/source/libs/asura-lib-utils/io/binding/_io_task.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "../io_task.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace IO 
-	{
-		
-		LUAX_REGISTRY(IOTask)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "New", _New }
-			);
-		}
-
-		LUAX_POSTPROCESS(IOTask)
-		{
-			LUAX_REGISTER_ENUM(state, "EIOTaskType",
-				{ "READ",   IOTASK_TYPE_READ   },
-				{ "WRITE",  IOTASK_TYPE_WRITE  },
-				{ "APPEND", IOTASK_TYPE_APPEND }
-			);
-
-		}
-
-		// task = IOTask.New(path, buffer, type, callback)
-		LUAX_IMPL_METHOD(IOTask, _New)
-		{
-			LUAX_STATE(L);
-
-			cc8* path = state.CheckValue<cc8*>(1);
-			DataBuffer* db = state.CheckUserdata<DataBuffer>(2);
-			IOTaskType type = (IOTaskType)state.CheckValue<int>(3);
-			bool cbk = state.GetTop() >= 4 && state.IsType(4, LUA_TFUNCTION);
-
-			IOTask* task = new IOTask(path, db, type);
-			task->SetLuaxMemberRef(state, task->mBufferRef, 2);
-			if(cbk)
-				task->SetLuaxMemberRef(state, task->mCallback, 4);
-			task->PushLuaxUserdata(state);
-			return 1;
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/io/compressor.cpp b/source/libs/asura-lib-utils/io/compressor.cpp
deleted file mode 100644
index 095eff4..0000000
--- a/source/libs/asura-lib-utils/io/compressor.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "compressor.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/compressor.h b/source/libs/asura-lib-utils/io/compressor.h
deleted file mode 100644
index 30a074c..0000000
--- a/source/libs/asura-lib-utils/io/compressor.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __ASURA_COMPRESSOR_H__
-#define __ASURA_COMPRESSOR_H__
-
-#include "../scripting/portable.hpp"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		class Compressor ASURA_FINAL 
-			: public AEScripting::Portable<Compressor>
-		{
-		public:
-
-			LUAX_DECL_SINGLETON(Compressor);
-
-		private:
-
-			LUAX_DECL_METHOD(_Compress);
-			LUAX_DECL_METHOD(_Decompress);
-
-
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/data_buffer.cpp b/source/libs/asura-lib-utils/io/data_buffer.cpp
deleted file mode 100644
index 5049b38..0000000
--- a/source/libs/asura-lib-utils/io/data_buffer.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-#include <cstdlib>
-#include <cstring>
-#include "data_buffer.h"
-
-using namespace AEThreading;
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		DataBuffer::DataBuffer(DataBuffer& src)
-		{
-			Load(src);
-		}
-
-		DataBuffer::DataBuffer(std::size_t size)
-			: mSize(size)
-			, mBytes(nullptr)
-		{
-			lock(mMutex);
-			mBytes = new byte[size];
-			memset(mBytes, 0, size);
-		}
-
-		DataBuffer::DataBuffer(const void* data, std::size_t size)
-			: mSize(size)
-			, mBytes(nullptr)
-		{
-			Load(data, size);
-		}
-
-		DataBuffer::~DataBuffer()
-		{
-			delete[] mBytes;
-		}
-
-		void DataBuffer::Refactor(size_t size)
-		{
-			lock(mMutex);
-			if (!mBytes || mSize != size)
-			{
-				delete[] mBytes;
-				mBytes = new byte[size];
-				mSize = size;
-			}
-			memset(mBytes, 0, size * sizeof(byte));
-		}
-
-		size_t DataBuffer::Load(DataBuffer& db)
-		{
-			return Load(db.GetData(), db.GetSize());
-		}
-
-		size_t DataBuffer::Load(const void* data, std::size_t size)
-		{
-			lock(mMutex);
-			size_t len = mSize > size ? size : mSize;
-			memcpy(mBytes, data, len);
-			return len;
-		}
-
-		void DataBuffer::Move(void* bytes, std::size_t size)
-		{
-			lock(mMutex);
-			if (!mBytes)
-			{
-				delete[] mBytes;
-			}
-			mBytes = (byte*)bytes;
-			mSize = size;
-		}
-
-		byte* DataBuffer::GetData()
-		{
-			return mBytes;
-		}
-
-		void DataBuffer::Clear()
-		{
-			lock(mMutex);
-			if (mBytes)
-				memset(mBytes, 0, mSize);
-		}
-		
-		std::size_t DataBuffer::GetSize()
-		{
-			return mSize;
-		}
-
-		void DataBuffer::Lock()
-		{
-			mMutex.Lock();
-		}
-
-		void DataBuffer::Unlock()
-		{
-			mMutex.Unlock();
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/data_buffer.h b/source/libs/asura-lib-utils/io/data_buffer.h
deleted file mode 100644
index 445bdf4..0000000
--- a/source/libs/asura-lib-utils/io/data_buffer.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef __ASURA_ENGINE_DATABUFFER_H__
-#define __ASURA_ENGINE_DATABUFFER_H__
-
-#include <cstdlib>
-
-#include "../scripting/portable.hpp"
-#include "../threading/mutex.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		///
-		/// ���ڴ����ݵķ�װ�����е�����ʹ��Data buffer��װ����ֱ��ʹ��const void*��ͨ��resource manager��ȡ��
-		///
-		class DataBuffer ASURA_FINAL
-			: public AEScripting::Portable<DataBuffer>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(DataBuffer);
-
-			DataBuffer(DataBuffer& src);
-			DataBuffer(std::size_t size);
-			DataBuffer(const void* bytes, std::size_t size);
-			~DataBuffer();
-
-			byte* GetData();
-			size_t GetSize();
-
-			void Refactor(size_t size);
-			size_t Load(DataBuffer& db);
-			size_t Load(const void* bytes, std::size_t size);
-			void Move(void* bytes, std::size_t size);
-			void Clear();
-
-			void Lock();
-			void Unlock();
-			
-		private:
-
-			byte* mBytes;
-			size_t mSize;
-
-			AEThreading::Mutex mMutex;
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_GetData);
-			LUAX_DECL_METHOD(_GetSize);
-			LUAX_DECL_METHOD(_Refactor);
-			LUAX_DECL_METHOD(_Load);
-			LUAX_DECL_METHOD(_Clear);
-
-		};
-
-	}
-}
-
-namespace AEIO = AsuraEngine::IO;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/decoded_data.cpp b/source/libs/asura-lib-utils/io/decoded_data.cpp
deleted file mode 100644
index 358a7a5..0000000
--- a/source/libs/asura-lib-utils/io/decoded_data.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "../exceptions/exception.h"
-
-#include "decoded_data.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		DecodedData::DecodedData(const DataBuffer& databuffer)
-		{
-			Decode(databuffer);
-		}
-
-		DecodedData::~DecodedData()
-		{
-
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/io/decoded_data.h b/source/libs/asura-lib-utils/io/decoded_data.h
deleted file mode 100644
index e201e91..0000000
--- a/source/libs/asura-lib-utils/io/decoded_data.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef __ASURA_ENGINE_DATA_H__
-#define __ASURA_ENGINE_DATA_H__
-
-#include <cstdlib>
-
-#include "../scripting/portable.hpp"
-
-#include "data_buffer.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		///
-		/// ��������һ���̹߳�����data�̳д��ࡣ��ͼƬ���ݡ���Ƶ���ݵȣ���������һ���߳��н���ԭ�ļ��������ڲ����ݸ�ʽ��������
-		/// �ȡ�
-		///
-		ASURA_ABSTRACT class DecodedData
-		{
-		public:
-
-			///
-			/// ���ڴ��й���data�����Է�����һ���߳����棬����Դ����ϵͳ������ء�
-			///
-			DecodedData(const DataBuffer& databuffer);
-
-			virtual ~DecodedData();
-
-		protected:
-
-			///
-			/// �����ڴ��е����ݡ�
-			///
-			virtual void Decode(const DataBuffer& buffer) = 0;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/file.cpp b/source/libs/asura-lib-utils/io/file.cpp
deleted file mode 100644
index 0ff8c90..0000000
--- a/source/libs/asura-lib-utils/io/file.cpp
+++ /dev/null
@@ -1,292 +0,0 @@
-#include <physfs/physfs.h>
-
-#include <asura-lib-utils/exceptions/exception.h>
-
-#include "file.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		File::File(const std::string& filename)
-			: mFileName(filename)
-			, mFileHandle(nullptr)
-			, mMode(FILE_MODE_CLOSED)
-			, mBufferMode(BUFFER_MODE_NONE)
-			, mBufferSize(0)
-		{
-			size_t dot = filename.rfind('.');
-			if (dot != std::string::npos)
-			{
-				mExtension = filename.substr(dot + 1);
-				mName = filename.substr(0, dot);
-			}
-			else
-				mName = filename;
-		}
-
-		File::~File()
-		{
-			if (mMode != FILE_MODE_CLOSED)
-				Close();
-		}
-
-		bool File::Open(FileMode mode)
-		{
-			if (!PHYSFS_isInit())
-				throw Exception("Physfs is NOT initialized.");
-
-			if (mode == FILE_MODE_CLOSED)
-				return false;
-
-			if (mode == FILE_MODE_READ && !PHYSFS_exists(mFileName.c_str()))
-				throw Exception("Could NOT open file %s. Does not exist.", mFileName.c_str());
-
-			if (mode == FILE_MODE_APPEND || mode == FILE_MODE_WRITE)
-			{
-				if (!PHYSFS_getWriteDir())
-				{
-					throw Exception("Could NOT set write directory.");
-				}
-			}
-
-			// �Ѿ���֮ǰ�򿪹����Ͳ��ٴ����µ�handle��
-			if (mFileHandle != nullptr)
-				return true;
-
-			PHYSFS_getLastErrorCode();
-
-			PHYSFS_File* handle = nullptr;
-
-			switch (mode)
-			{
-			case FILE_MODE_READ:
-				handle = PHYSFS_openRead(mFileName.c_str());
-				break;
-			case FILE_MODE_APPEND:
-				handle = PHYSFS_openAppend(mFileName.c_str());
-				break;
-			case FILE_MODE_WRITE:
-				handle = PHYSFS_openWrite(mFileName.c_str());
-				break;
-			}
-
-			if (handle == nullptr)
-			{
-				const char *err = PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode());
-				if (err == nullptr)
-					err = "unknown error";
-				throw Exception("Could not open file %s (%s)", mFileName.c_str(), err);
-			}
-
-			mFileHandle = handle;
-			mMode = mode; 
-
-			if (mFileHandle && !SetBuffer(mBufferMode,mBufferSize))
-			{
-				mBufferMode = BUFFER_MODE_NONE; 
-				mBufferSize = 0;
-			}
-
-			return mFileHandle != nullptr;
-		}
-
-		bool File::Close()
-		{
-			if (mFileHandle == nullptr || !PHYSFS_close(mFileHandle))
-				return false;
-			mMode = FILE_MODE_CLOSED;
-			mFileHandle = nullptr;
-			return true;
-		}
-
-		bool File::IsOpen()
-		{
-			return mMode != FILE_MODE_CLOSED && mFileHandle != nullptr;
-		}
-
-		size_t File::GetSize()
-		{
-			if (mFileHandle == nullptr)
-			{
-				Open(FILE_MODE_READ);
-				size_t size = PHYSFS_fileLength(mFileHandle);
-				Close(); 
-				return size;
-			}
-			return PHYSFS_fileLength(mFileHandle);
-		}
-
-		size_t File::Read(ASURA_OUT DataBuffer* dst, size_t length)
-		{
-			ASSERT(dst);
-
-			if (dst->GetSize() < length)
-				throw Exception("Data buffer is too small compares to read length.");
-
-			if (!mFileHandle || mMode != FILE_MODE_READ)
-				throw Exception("File \"%s\" is not opened for reading", mFileName);
-
-			size_t max = PHYSFS_fileLength(mFileHandle);
-			length = (length > max) ? max : length;
-
-			if (length < 0)
-				throw Exception("Invalid read size.");
-
-			dst->Lock();
-			size_t size = PHYSFS_readBytes(mFileHandle, dst->GetData(), length);
-			dst->Unlock();
-			return size;
-		}
-
-		size_t File::ReadAll(ASURA_OUT DataBuffer* dst)
-		{
-			ASSERT(dst);
-
-			if (!mFileHandle || mMode != FILE_MODE_READ)
-				throw Exception("File \"%s\" is not opened for reading", mFileName);
-
-			size_t length = PHYSFS_fileLength(mFileHandle);
-
-			if (dst->GetSize() < length)
-				throw Exception("Data buffer is too small compares to file length.");
-
-			dst->Lock();
-			size_t size = PHYSFS_readBytes(mFileHandle, dst->GetData(), length);
-			dst->Unlock();
-			return size;
-		}
-
-#ifdef ASURA_WINDOWS
-		inline bool test_eof(File *that, PHYSFS_File *)
-		{
-			int64 pos = that->Tell();
-			int64 size = that->GetSize();
-			return pos == -1 || size == -1 || pos >= size;
-		}
-#else
-		inline bool test_eof(File *, PHYSFS_File *file)
-		{
-			return PHYSFS_eof(file);
-		}
-#endif
-
-		bool File::IsEOF()
-		{
-			return mFileHandle == nullptr || test_eof(this, mFileHandle);
-		}
-
-		size_t File::Tell()
-		{
-			if (!mFileHandle)
-				return - 1;
-
-			return PHYSFS_tell(mFileHandle);
-		}
-
-		bool File::Seek(size_t pos)
-		{
-			return mFileHandle != nullptr && PHYSFS_seek(mFileHandle, pos) != 0;
-		}
-
-		bool File::Write(ASURA_REF DataBuffer* src)
-		{
-			if (!mFileHandle || (mMode != FILE_MODE_APPEND && mMode != FILE_MODE_WRITE))
-				throw Exception("File is not opened for writing.");
-
-			byte* data = src->GetData();
-			int size = src->GetSize();
-
-			if (size < 0)
-				throw Exception("Invalid write size.");
-
-			size_t written = PHYSFS_writeBytes(mFileHandle, data, size);
-
-			if (written != src->GetSize())
-				return false; 
-
-			// �������
-			if (mBufferSize == BUFFER_MODE_LINE && mBufferSize > size)
-			{
-				if (memchr(data, '\n', size) != nullptr)
-					Flush();
-			}
-
-			return true;
-		}
-
-		bool File::Flush()
-		{
-			if (!mFileHandle || (mMode != FILE_MODE_WRITE && mMode != FILE_MODE_APPEND))
-				throw Exception("File is not opened for writing.");
-
-			return PHYSFS_flush(mFileHandle) != 0;
-		}
-
-		bool File::SetBuffer(BufferMode mode, size_t size)
-		{
-			if (size < 0)
-				return false;
-
-			// If the file isn't open, we'll make sure the buffer values are set in
-			// File::open.
-			if (!IsOpen())
-			{
-				mBufferMode = mode;
-				mBufferSize = size;
-				return true;
-			}
-
-			int ret = 1;
-
-			switch (mode)
-			{
-			case BUFFER_MODE_NONE:
-			default:
-				ret = PHYSFS_setBuffer(mFileHandle, 0);
-				size = 0;
-				break;
-			case BUFFER_MODE_LINE:
-			case BUFFER_MODE_FULL:
-				ret = PHYSFS_setBuffer(mFileHandle, size);
-				break;
-			}
-
-			if (ret == 0)
-				return false;
-
-			mBufferMode = mode;
-			mBufferSize = size;
-
-			return true;
-		}
-
-		File::BufferMode File::GetBuffer(ASURA_OUT size_t& size) 
-		{
-			size = mBufferSize; 
-			return mBufferMode; 
-		}
-
-		const std::string& File::GetFileName()
-		{
-			return mFileName;
-		}
-
-		const std::string& File::GetName()
-		{
-			return mName;
-		}
-
-		const std::string& File::GetExtension()
-		{
-			return mExtension;
-		}
-
-		File::FileMode File::GetMode()
-		{
-			return mMode;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/file.h b/source/libs/asura-lib-utils/io/file.h
deleted file mode 100644
index 56077e0..0000000
--- a/source/libs/asura-lib-utils/io/file.h
+++ /dev/null
@@ -1,146 +0,0 @@
-#ifndef __ASURA_ENGINE_FILE_H__
-#define __ASURA_ENGINE_FILE_H__
-
-#include "physfs/physfs.h"
-
-#include "../scripting/portable.hpp"
-#include "../threading/thread.h"
-
-#include "file_data.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		///
-		/// ��������ʽ���ļ�������ָ����д��㡢��С��������ʹ������ȡʱʹ�ñ��࣬����ʹ��Filesystem.read()ֱ�Ӷ�ȡ�ļ�ȫ��
-		/// ���ݣ�������һ��FileData����
-		///
-		class File ASURA_FINAL
-			: public AEScripting::Portable<File>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(File);
-
-			///
-			/// �ļ���дģʽ
-			///
-			enum FileMode
-			{
-				FILE_MODE_CLOSED,
-				FILE_MODE_READ,
-				FILE_MODE_WRITE,
-				FILE_MODE_APPEND,
-			};
-
-			///
-			/// �ļ�д��ʱ��������Ϊ
-			///
-			enum BufferMode
-			{
-				BUFFER_MODE_NONE, ///< ��ʹ�û��壬����д���ļ�
-				BUFFER_MODE_LINE, ///< �л��壬�������з����ߴﵽ��������Сʱд���ļ�
-				BUFFER_MODE_FULL, ///< ��ȫ���壬��������ʱд���ļ�
-			};
-
-			File(const std::string& filename);
-			~File();
-
-			bool Open(FileMode mode); 
-			bool Close();
-			bool IsOpen();
-			FileMode GetMode();
-			size_t GetSize(); 
-
-			///
-			/// ��ȡ��data buffer������ض��������
-			///
-			size_t Read(ASURA_OUT DataBuffer* dst, size_t length);
-			size_t ReadAll(ASURA_OUT DataBuffer* dst);
-			size_t ReadAsync(ASURA_OUT DataBuffer* dst);
-
-			///
-			/// �Ƿ�������ļ���β
-			///
-			bool IsEOF();
-
-			///
-			/// ��data buffer�е�����д�룬�������Ƿ�ɹ�
-			///
-			bool Write(ASURA_REF DataBuffer* src);
-
-			///
-			/// �첽д�ļ�����д�ļ�task����thread�Ķ��С�
-			///
-			bool WriteAsync(ASURA_REF DataBuffer* src, AEThreading::Thread* thread);
-
-			///
-			/// ��������˻��壬ǿ����ջ�������д���ļ���
-			///
-			bool Flush();
-
-			///
-			/// ���ص�ǰ��дλ��
-			///
-			size_t Tell();
-
-			///
-			/// ������Ӧλ��
-			///
-			bool Seek(size_t pos);
-
-			///
-			/// ���û�������С��ģʽ
-			///
-			bool SetBuffer(BufferMode mode, size_t size);
-
-			///
-			/// ��ȡ��������С��ģʽ
-			///
-			BufferMode GetBuffer(ASURA_OUT size_t& size);
-
-			const std::string& GetFileName();
-			const std::string& GetName();
-			const std::string& GetExtension();
-
-		private:
-
-			PHYSFS_File* mFileHandle; ///< physfs �ļ�
-			std::string  mFileName;   ///< ���
-			std::string  mExtension;  ///< �����������չ��
-			std::string  mName;       ///< �����������չ�����ļ���
-			FileMode     mMode;       ///< �ļ���ģʽ
-			BufferMode   mBufferMode;	///< д�뻺����ģʽ
-			size_t       mBufferSize;	///< д�뻺������С
-
-			LUAX_DECL_ENUM(FileMode);
-			LUAX_DECL_ENUM(BufferMode);
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_Open);
-			LUAX_DECL_METHOD(_Close);
-			LUAX_DECL_METHOD(_IsOpen);
-			LUAX_DECL_METHOD(_GetMode);
-			LUAX_DECL_METHOD(_GetSize);
-			LUAX_DECL_METHOD(_Read);
-			LUAX_DECL_METHOD(_Write);
-			LUAX_DECL_METHOD(_ReadAsync);
-			LUAX_DECL_METHOD(_WriteAsync);
-			LUAX_DECL_METHOD(_IsEOF);
-			LUAX_DECL_METHOD(_Flush);
-			LUAX_DECL_METHOD(_Tell);
-			LUAX_DECL_METHOD(_Seek);
-			LUAX_DECL_METHOD(_SetBuffer);
-			LUAX_DECL_METHOD(_GetBuffer);
-			LUAX_DECL_METHOD(_GetFileName);
-			LUAX_DECL_METHOD(_GetExtension);
-			LUAX_DECL_METHOD(_GetName);
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/file_data.cpp b/source/libs/asura-lib-utils/io/file_data.cpp
deleted file mode 100644
index 92333cf..0000000
--- a/source/libs/asura-lib-utils/io/file_data.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "file_data.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		FileData::FileData(const std::string& filename)
-			: mData(nullptr)
-			, mFileName(filename)
-		{
-			size_t dot = filename.rfind('.');
-			if (dot != std::string::npos)
-			{
-				mExtension = filename.substr(dot + 1);
-				mName = filename.substr(0, dot);
-			}
-			else
-				mName = filename;
-		}
-
-		FileData::~FileData()
-		{
-		}
-
-		const std::string& FileData::GetFileName()
-		{
-			return mFileName;
-		}
-
-		const std::string& FileData::GetExtension()
-		{
-			return mExtension;
-		}
-
-		const std::string& FileData::GetName()
-		{
-			return mName;
-		}
-
-		void FileData::BindData(ASURA_MOVE DataBuffer* buffer)
-		{
-			mData = buffer;
-		}
-
-		DataBuffer* FileData::GetDataBuffer()
-		{
-			return mData;
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/io/file_data.h b/source/libs/asura-lib-utils/io/file_data.h
deleted file mode 100644
index 9aa0e3b..0000000
--- a/source/libs/asura-lib-utils/io/file_data.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef __ASURA_ENGINE_FILE_DATA_H__
-#define __ASURA_ENGINE_FILE_DATA_H__
-
-#include <string>
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "data_buffer.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		class Filesystem;
-
-		///
-		/// ����filesystemֱ�Ӷ�ȡ�����ļ�ʱ������FileData���������ļ����ݺ�������Ϣ����Filesystem������
-		///
-		class FileData ASURA_FINAL
-			: public AEScripting::Portable<FileData>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(FileData);
-
-			~FileData();
-
-			///
-			/// �����ļ����ݣ�����ͨ��Databuffer������ݺʹ�С�������ڲ��ӿڶ�����Data buffer��Ϊ��������������Ҳ����data buffer��
-			///
-			DataBuffer* GetDataBuffer();
-
-			const std::string& GetFileName(); 
-			const std::string& GetExtension();
-			const std::string& GetName();
-
-		private:
-
-			friend class Filesystem;
-
-			FileData(const std::string& name);
-
-			///
-			/// ��data buffer��
-			///
-			void BindData(ASURA_MOVE DataBuffer* buffer);
-
-			///
-			/// Data buffer������filedata����ʱ���٣���lua���ü���Ϊ0ʱ��lua����GC���١�����mDataʱ������һ����Ա���á�
-			///
-			ASURA_REF DataBuffer* mData;
-			Luax::LuaxMemberRef   mDataRef;
-
-			std::string mFileName;  ///< ������չ�����ļ���
-			std::string mExtension; ///< �����������չ��
-			std::string mName;      ///< ��������ͺ�׺���ļ���
-
-			LUAX_DECL_METHOD(_GetDataBuffer);
-			LUAX_DECL_METHOD(_GetFileName);
-			LUAX_DECL_METHOD(_GetExtension);
-			LUAX_DECL_METHOD(_GetName);
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/file_system.cpp b/source/libs/asura-lib-utils/io/file_system.cpp
deleted file mode 100644
index 20f3cb2..0000000
--- a/source/libs/asura-lib-utils/io/file_system.cpp
+++ /dev/null
@@ -1,198 +0,0 @@
-#include <physfs/physfs.h>
-
-#include "../exceptions/exception.h"
-
-#include "file.h"
-#include "file_data.h"
-#include "file_system.h"
-
-using namespace std;
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-#ifdef ASURA_WINDOWS
-	#include <windows.h>
-	#include <direct.h>
-#else
-	#include <sys/param.h>
-	#include <unistd.h>
-#endif
-
-		Filesystem::~Filesystem()
-		{
-			if (mInited) //PHYSFS_isInit
-				PHYSFS_deinit();
-		}
-
-		void Filesystem::Init(const char* arg0)
-		{
-			if (!PHYSFS_init(arg0))
-				throw Exception("Failed to initialize filesystem: %s", PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode()));
-
-			mInited = true;
-		}
-
-		bool Filesystem::Mount(const std::string& locpath, const std::string& montpoint/* = "/"*/, bool prepend /*= false*/)
-		{
-			if (!mInited)
-				return false;
-
-			return PHYSFS_mount(locpath.c_str(), montpoint.c_str(), !prepend);
-		}
-
-		bool Filesystem::Mount(DataBuffer* db, const std::string& archivename, const std::string& mountpoint /*= "/"*/, bool prepend /*= false*/)
-		{
-			if (!mInited)
-				return false;
-			if (PHYSFS_mountMemory(db->GetData(), db->GetSize(), nullptr, archivename.c_str(), mountpoint.c_str(), !prepend))
-			{
-				mMountData[archivename] = db;
-				return true;
-			}
-			return false;
-		}
-
-		bool Filesystem::Unmount(const std::string& locpath)
-		{
-			if (!mInited)
-				return false;
-
-			// ����ǹ鵵����ӳ����ɾ����
-			auto datait = mMountData.find(locpath);
-			if (datait != mMountData.end() && PHYSFS_unmount(locpath.c_str()) != 0)
-			{
-				mMountData.erase(datait);
-				return true;
-			}
-
-			return PHYSFS_unmount(locpath.c_str());
-		}
-
-		bool Filesystem::Unmount(DataBuffer* db)
-		{
-			for (const auto& dp : mMountData)
-			{
-				if (dp.second == db)
-				{
-					std::string archive = dp.first;
-					return Unmount(archive);
-				}
-			}
-		}
-
-		bool Filesystem::GetMountPoint(const std::string& locpath, ASURA_OUT std::string& mountpoint)
-		{
-			if (!mInited)
-				return false;
-			const char* point = PHYSFS_getMountPoint(locpath.c_str());
-			if (point != nullptr)
-			{
-				mountpoint = point;
-				return true;
-			}
-			return false;
-		}
-
-		void Filesystem::SetWriteDirectory(const std::string locpath)
-		{
-			if (!mInited)
-				return;
-			if (!PHYSFS_setWriteDir(locpath.c_str()))
-				throw Exception("Failed to set write directory %s", locpath.c_str());
-		}
-
-		std::string Filesystem::GetWriteDirectory()
-		{
-			return PHYSFS_getWriteDir();
-		}
-
-		File* Filesystem::NewFile(const std::string& name)
-		{
-			return new File(name);
-		}
-
-		bool Filesystem::NewDirectory(const std::string& path)
-		{
-			if (!mInited)
-				return false;
-			if (!PHYSFS_getWriteDir())
-				return false;
-			if (!PHYSFS_mkdir(path.c_str()))
-				return false;
-			return true;
-		}
-
-		bool Filesystem::Write(const std::string& name, ASURA_REF DataBuffer* buffer)
-		{
-			File file(name);
-			file.Open(File::FILE_MODE_WRITE);
-			if (!file.Write(buffer))
-				throw Exception("Data could not be written.");
-		}
-
-		bool Filesystem::Append(const std::string& name, ASURA_REF DataBuffer* buffer)
-		{
-			File file(name);
-			file.Open(File::FILE_MODE_APPEND);
-			if (!file.Write(buffer))
-				throw Exception("Data could not be append.");
-		}
-
-		FileData* Filesystem::Read(const std::string& name)
-		{
-			File file = File(name);
-			file.Open(File::FILE_MODE_READ);
-			int size = file.GetSize();
-			DataBuffer* db = new DataBuffer(size);
-			if (db)
-			{
-				file.ReadAll(db);
-				FileData* fd = new FileData(name);
-				fd->BindData(db);
-				return fd;
-			}
-			return nullptr;
-		}
-
-		bool Filesystem::Remove(const std::string& path)
-		{
-			if (!mInited)
-				return false;
-			if (PHYSFS_getWriteDir() == 0)
-				return false;
-
-			if (!PHYSFS_delete(path.c_str()))
-				return false;
-
-			return true;
-		}
-
-		bool Filesystem::GetFileInfo(const std::string& filepath, ASURA_OUT FileInfo* info)
-		{
-			if (!mInited)
-				return false;
-
-			PHYSFS_Stat stat = {};
-			if (!PHYSFS_stat(filepath.c_str(), &stat))
-				return false;
-
-			info->size = (int64)stat.filesize;
-			info->modtime = (int64)stat.modtime;
-
-			if (stat.filetype == PHYSFS_FILETYPE_REGULAR)
-				info->type = FILE_TYPE_FILE;
-			else if (stat.filetype == PHYSFS_FILETYPE_DIRECTORY)
-				info->type = FILE_TYPE_DIRECTORY;
-			else if (stat.filetype == PHYSFS_FILETYPE_SYMLINK)
-				info->type = FILE_TYPE_SYMLINK;
-			else
-				info->type = FILE_TYPE_OTHER;
-
-			return true;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/file_system.h b/source/libs/asura-lib-utils/io/file_system.h
deleted file mode 100644
index 849cbb6..0000000
--- a/source/libs/asura-lib-utils/io/file_system.h
+++ /dev/null
@@ -1,112 +0,0 @@
-#ifndef __ASURA_ENGINE_FILESYSTEM_H__
-#define __ASURA_ENGINE_FILESYSTEM_H__
-
-#include <map>
-#include <string>
-
-#include "../scripting/portable.hpp"
-#include "../singleton.hpp"
-#include "../type.h"
-
-#include "file_data.h"
-#include "file.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		enum FileType
-		{
-			FILE_TYPE_FILE, 		 ///< �ļ�
-			FILE_TYPE_DIRECTORY, ///< ���
-			FILE_TYPE_SYMLINK, 	 ///< ����
-			FILE_TYPE_OTHER,		 ///< ����
-		};
-
-		struct FileInfo
-		{
-			int64 size; 
-			int64 modtime; 
-			FileType type;
-		};
-
-		///
-		/// ��Դ������������ء��洢��Դ��ָ����Ŀ¼�ȡ����۱༭����������ʱ������Ҫ���Ʒ��ʵĻ��ƣ����û��IJ�����������ϷĿ¼
-		/// �£�file system����������µġ�Filesystem������ʱ�ͱ༭�����õ��࣬AssetDatabase������������Դ���࣬��framework
-		/// ��ʵ�֣��������߼���������д������Filesystemʵ�֣�AssetDatabase�ṩ�����ļ����ݴ�����Ӧ��Դ�ķ�����
-		///
-		class Filesystem ASURA_FINAL
-			: public Singleton<Filesystem>
-			, public AEScripting::Portable<Filesystem>
-		{
-		public:
-
-			LUAX_DECL_SINGLETON(Filesystem);
-
-			~Filesystem();
-
-			void Init(const char* arg0);
-
-			///
-			/// ��ǰ��ִ���ļ��������ļ���
-			///
-			std::string GetWorkingDirectory();
-
-			bool Mount(const std::string& locpath, const std::string& montpoint = "/", bool prepend = false);
-			bool Mount(DataBuffer* db, const std::string& archivename, const std::string& mountpoint = "/", bool prepend = false);
-
-			bool Unmount(const std::string& locpath);
-			bool Unmount(DataBuffer* db);
-
-			bool GetMountPoint(const std::string& locpath, ASURA_OUT std::string& mountpoint);
-
-			void SetWriteDirectory(const std::string locpath);
-			std::string GetWriteDirectory();
-			File* NewFile(const std::string& name);
-			bool NewDirectory(const std::string& path);
-			bool Write(const std::string& path, ASURA_REF DataBuffer* buffer);
-			bool Append(const std::string& path, ASURA_REF DataBuffer* buffer);
-			bool Remove(const std::string& path);
-
-			FileData* Read(const std::string& path);
-			bool GetFileInfo(const std::string& path, ASURA_OUT FileInfo* info);
-
-			bool GetDirectoryItems(const std::string& path, ASURA_OUT std::vector<std::string>& items) { return false; };
-
-		private:
-
-			typedef std::map<std::string, DataBuffer*> MountDataMap;
-
-			bool         mInited;    ///< �Ƿ��ʼ���ɹ�
-			std::string  mCwd;       ///< ��ǰִ���ļ��Ĺ���Ŀ¼
-			MountDataMap mMountData; ///< ��·����ѹ���ĵ���ӳ��
-
-			LUAX_DECL_METHOD(_Init);
-			LUAX_DECL_METHOD(_Mount);
-			LUAX_DECL_METHOD(_Unmount);
-			LUAX_DECL_METHOD(_GetMountPoint);
-
-			LUAX_DECL_METHOD(_SetWriteDirectory);
-			LUAX_DECL_METHOD(_GetWriteDirectory);
-			LUAX_DECL_METHOD(_CreateFile);
-			LUAX_DECL_METHOD(_CreateDirectory);
-
-			LUAX_DECL_METHOD(_Write);
-			LUAX_DECL_METHOD(_Append);
-			LUAX_DECL_METHOD(_Remove);
-
-			LUAX_DECL_METHOD(_Read);
-
-			LUAX_DECL_METHOD(_GetFileInfo);
-
-			LUAX_DECL_METHOD(_GetDirectoryItems);
-
-		};
-
-	}
-}
-
-namespace AEIO = AsuraEngine::IO;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/io_batch_task.cpp b/source/libs/asura-lib-utils/io/io_batch_task.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/io/io_batch_task.h b/source/libs/asura-lib-utils/io/io_batch_task.h
deleted file mode 100644
index c0be921..0000000
--- a/source/libs/asura-lib-utils/io/io_batch_task.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __ASURA_IO_BATCH_TASK_H__
-#define __ASURA_IO_BATCH_TASK_H__
-
-#include "io_task.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		///
-		/// ��������������д��һ�����ύһ��table�����δ����󷵻ؽ����
-		///
-		class IOBatchTask ASURA_FINAL : public AEThreading::Task
-		{
-		public:
-
-		private:
-
-			///
-			/// �������ÿһ���Ľṹ���£�
-			/// { path = "", }
-			/// 
-			Luax::LuaxMemberRef mTasks;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp
deleted file mode 100644
index 361b9c5..0000000
--- a/source/libs/asura-lib-utils/io/io_task.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "file_system.h"
-#include "io_task.h"
-
-#include <iostream>
-
-using namespace AEScripting;
-using namespace Luax;
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		IOTask::IOTask(const std::string& path, DataBuffer* buffer, IOTaskType type)
-			: mPath(path)
-			, mBuffer(buffer)
-		{
-		}
-
-		IOTask::~IOTask()
-		{
-		}
-
-		bool IOTask::Execute()
-		{
-			File file(mPath);
-			if (mType == IOTASK_TYPE_WRITE)
-			{
-
-			}
-			// ��path��ȡ���ݱ�����mBuffer��
-			else if (mType == IOTASK_TYPE_READ)
-			{
-				file.Open(File::FILE_MODE_READ);
-				file.ReadAll(mBuffer);
-				file.Close();
-			}
-			return true;
-		}
-
-		void IOTask::Invoke(lua_State* invokeThreaad)
-		{
-			if (mCallback)
-			{
-				LuaxScopedState state(invokeThreaad);
-				if (PushLuaxMemberRef(state, mCallback))
-				{
-					PushLuaxMemberRef(state, mBufferRef);
-					state.Call(1, 0);
-				}
-			}
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h
deleted file mode 100644
index 8f04142..0000000
--- a/source/libs/asura-lib-utils/io/io_task.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef __ASURA_IO_TASK_H__
-#define __ASURA_IO_TASK_H__
-
-#include <string>
-
-#include "../scripting/portable.hpp"
-#include "../threading/task.h"
-
-#include "data_buffer.h"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		enum IOTaskType
-		{
-			IOTASK_TYPE_READ, 
-			IOTASK_TYPE_WRITE,
-			IOTASK_TYPE_APPEND,
-		};
-
-		///
-		/// ��ȡ�ļ�����
-		///
-		class IOTask ASURA_FINAL
-			: public AEThreading::Task
-			, public AEScripting::Portable<IOTask>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(IOTask);
-
-			IOTask(const std::string& path, DataBuffer* buffer, IOTaskType type);
-			~IOTask();
-
-			bool Execute() override ;
-			void Invoke(lua_State* invokeThreaad) override;
-
-		private:
-
-			LUAX_DECL_ENUM(IOTaskType);
-
-			LUAX_DECL_METHOD(_New);
-
-			std::string mPath;
-			IOTaskType  mType;
-
-			ASURA_REF DataBuffer* mBuffer;
-			Luax::LuaxMemberRef   mBufferRef;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/io/reloadable.h b/source/libs/asura-lib-utils/io/reloadable.h
deleted file mode 100644
index 22a721c..0000000
--- a/source/libs/asura-lib-utils/io/reloadable.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef __ASURA_ENGINE_RELOADABLE_H__
-#define __ASURA_ENGINE_RELOADABLE_H__
-
-#include "../scripting/portable.hpp"
-
-namespace AsuraEngine
-{
-	namespace IO
-	{
-
-		///
-		/// �������¹��������ݽṹ������ͼƬ����Ƶ���֣����ⲿ���ݿ���ֱ�ӹ����������ڱ༭�������¹����������ڲ��ı�handle����Դ��
-		///
-		ASURA_ABSTRACT class Reloadable
-		{
-		public:
-			Reloadable();
-			virtual ~Reloadable();
-
-			// �̳�Reloadable����Ҫ�ṩһ��load����
-
-		};
-
-	}
-}
-
-namespace AEIO = AsuraEngine::IO;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/manager.hpp b/source/libs/asura-lib-utils/manager.hpp
deleted file mode 100644
index 7b4e272..0000000
--- a/source/libs/asura-lib-utils/manager.hpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef __ASURA_ENGINE_MANAGER_H__
-#define __ASURA_ENGINE_MANAGER_H__
-
-namespace AsuraEngine
-{
-
-	class Manager
-	{
-
-	};
-
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/math/curve.cpp b/source/libs/asura-lib-utils/math/curve.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/curve.h b/source/libs/asura-lib-utils/math/curve.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/functions.cpp b/source/libs/asura-lib-utils/math/functions.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/functions.h b/source/libs/asura-lib-utils/math/functions.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/matrix44.cpp b/source/libs/asura-lib-utils/math/matrix44.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/matrix44.h b/source/libs/asura-lib-utils/math/matrix44.h
deleted file mode 100644
index 4ab3c0b..0000000
--- a/source/libs/asura-lib-utils/math/matrix44.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __ASURA_ENGINE_MATRIX44_H__
-#define __ASURA_ENGINE_MATRIX44_H__
-
-namespace AsuraEngine
-{
-	namespace Math
-	{
-
-		///
-		/// 4x4����
-		///
-		class Matrix44
-		{
-		public:
-
-		private:
-			
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/math/quaternion.cpp b/source/libs/asura-lib-utils/math/quaternion.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/quaternion.h b/source/libs/asura-lib-utils/math/quaternion.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/ranged_value.cpp b/source/libs/asura-lib-utils/math/ranged_value.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/ranged_value.h b/source/libs/asura-lib-utils/math/ranged_value.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/rect.hpp b/source/libs/asura-lib-utils/math/rect.hpp
deleted file mode 100644
index 1751634..0000000
--- a/source/libs/asura-lib-utils/math/rect.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef __ASURA_ENGINE_RECT_H__
-#define __ASURA_ENGINE_RECT_H__
-
-namespace AsuraEngine
-{
-	namespace Math
-	{
-		
-		template<typename T> 
-		struct Rect
-		{
-		public:
-			Rect();
-			~Rect(T x, T y, T w, T h);
-
-			///
-			/// x,y�Ƿ�����rect�ڡ�
-			///
-			bool Contain(T x, T y);
-
-			///
-			/// ���������Ƿ��ཻ���������ཻ�ľ���
-			///
-			bool Intersect(const Rect& src, Rect& intersection);
-			
-			///
-			///  ���������Ƿ��ཻ���������ཻ�ľ���
-			///
-			static bool Intersect(const Rect<T>& src1, const Rect<T>& src2, Rect<T>& intersection);
-
-			T x, y, w, h;
-		};
-		
-#include "Rect.inl"
-
-		// Define the most common types
-		typedef Rect<int>          Recti;
-		typedef Rect<unsigned int> Rectu;
-		typedef Rect<float>        Rectf;
-		typedef Rect<long>         Reftl;
-
-	}
-}
-
-namespace AEMath = AsuraEngine::Math;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/math/rect.inl b/source/libs/asura-lib-utils/math/rect.inl
deleted file mode 100644
index 891a3f8..0000000
--- a/source/libs/asura-lib-utils/math/rect.inl
+++ /dev/null
@@ -1,19 +0,0 @@
-template <typename T>
-inline Rect<T>::Rect() 
-	: x(0)
-	, y(0)
-	, w(0)
-	, h(0)
-{
-
-}
-
-template <typename T>
-inline Rect<T>::Rect(T X, T Y, T W, T H)
-	: x(X)
-	, y(Y)
-	, w(W)
-	, h(H)
-{
-
-}
diff --git a/source/libs/asura-lib-utils/math/transform.cpp b/source/libs/asura-lib-utils/math/transform.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/math/transform.h b/source/libs/asura-lib-utils/math/transform.h
deleted file mode 100644
index be4c850..0000000
--- a/source/libs/asura-lib-utils/math/transform.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __ASURA_ENGINE_TRANSFORM_H__
-#define __ASURA_ENGINE_TRANSFORM_H__
-
-#include "../scripting/portable.hpp"
-
-namespace AsuraEngine
-{
-	namespace Math
-	{
-
-		class Transform
-		{
-		public:
-
-			void Set(float x, float y, float sx, float sy, float ox, float oy, float r);
-
-			void LoadIdentity();
-
-			void Move(float dx = 0, float dy = 0);
-			void Rotate(float r);
-			void Scale(float sx, float sy);
-
-			float m[16]; //4x4 matrix
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/math/vector2.hpp b/source/libs/asura-lib-utils/math/vector2.hpp
deleted file mode 100644
index df78255..0000000
--- a/source/libs/asura-lib-utils/math/vector2.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifndef __ASURA_ENGINE_VECTOR2_H__
-#define __ASURA_ENGINE_VECTOR2_H__
-
-namespace AsuraEngine
-{
-	namespace Math
-	{
-		template <typename T>
-		class Vector2
-		{
-		public:
-			Vector2();
-			Vector2(T X, T Y);
-
-			template <typename U>
-			explicit Vector2(const Vector2<U>& vector);
-
-			Set(T X, T Y);
-
-			T x; ///< X coordinate of the vector
-			T y; ///< Y coordinate of the vector
-		};
-
-		template <typename T>
-		Vector2<T> operator -(const Vector2<T>& right);
-
-		template <typename T>
-		Vector2<T>& operator +=(Vector2<T>& left, const Vector2<T>& right);
-
-		template <typename T>
-		Vector2<T>& operator -=(Vector2<T>& left, const Vector2<T>& right);
-
-		template <typename T>
-		Vector2<T> operator +(const Vector2<T>& left, const Vector2<T>& right);
-
-		template <typename T>
-		Vector2<T> operator -(const Vector2<T>& left, const Vector2<T>& right);
-
-		template <typename T>
-		Vector2<T> operator *(const Vector2<T>& left, T right);
-
-		template <typename T>
-		Vector2<T> operator *(T left, const Vector2<T>& right);
-
-		template <typename T>
-		Vector2<T>& operator *=(Vector2<T>& left, T right);
-
-		template <typename T>
-		Vector2<T> operator /(const Vector2<T>& left, T right);
-
-		template <typename T>
-		Vector2<T>& operator /=(Vector2<T>& left, T right);
-
-		template <typename T>
-		bool operator ==(const Vector2<T>& left, const Vector2<T>& right);
-
-		template <typename T>
-		bool operator !=(const Vector2<T>& left, const Vector2<T>& right);
-
-#include "Vector2.inl"
-
-		// Define the most common types
-		typedef Vector2<int>          Vector2i;
-		typedef Vector2<unsigned int> Vector2u;
-		typedef Vector2<float>        Vector2f;
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/math/vector2.inl b/source/libs/asura-lib-utils/math/vector2.inl
deleted file mode 100644
index 9e131a7..0000000
--- a/source/libs/asura-lib-utils/math/vector2.inl
+++ /dev/null
@@ -1,114 +0,0 @@
-template <typename T>
-inline Vector2<T>::Vector2() :
-	x(0),
-	y(0)
-{
-
-}
-
-template <typename T>
-inline Vector2<T>::Vector2(T X, T Y) :
-	x(X),
-	y(Y)
-{
-
-}
-
-template <typename T>
-template <typename U>
-inline Vector2<T>::Vector2(const Vector2<U>& vector) :
-	x(static_cast<T>(vector.x)),
-	y(static_cast<T>(vector.y))
-{
-}
-
-template <typename T>
-inline Vector2<T>::Set(T X, T Y)
-{
-	x = X;
-	y = Y;
-}
-
-template <typename T>
-inline Vector2<T> operator -(const Vector2<T>& right)
-{
-	return Vector2<T>(-right.x, -right.y);
-}
-
-template <typename T>
-inline Vector2<T>& operator +=(Vector2<T>& left, const Vector2<T>& right)
-{
-	left.x += right.x;
-	left.y += right.y;
-
-	return left;
-}
-
-template <typename T>
-inline Vector2<T>& operator -=(Vector2<T>& left, const Vector2<T>& right)
-{
-	left.x -= right.x;
-	left.y -= right.y;
-
-	return left;
-}
-
-template <typename T>
-inline Vector2<T> operator +(const Vector2<T>& left, const Vector2<T>& right)
-{
-	return Vector2<T>(left.x + right.x, left.y + right.y);
-}
-
-template <typename T>
-inline Vector2<T> operator -(const Vector2<T>& left, const Vector2<T>& right)
-{
-	return Vector2<T>(left.x - right.x, left.y - right.y);
-}
-
-template <typename T>
-inline Vector2<T> operator *(const Vector2<T>& left, T right)
-{
-	return Vector2<T>(left.x * right, left.y * right);
-}
-
-template <typename T>
-inline Vector2<T> operator *(T left, const Vector2<T>& right)
-{
-	return Vector2<T>(right.x * left, right.y * left);
-}
-
-template <typename T>
-inline Vector2<T>& operator *=(Vector2<T>& left, T right)
-{
-	left.x *= right;
-	left.y *= right;
-
-	return left;
-}
-
-template <typename T>
-inline Vector2<T> operator /(const Vector2<T>& left, T right)
-{
-	return Vector2<T>(left.x / right, left.y / right);
-}
-
-template <typename T>
-inline Vector2<T>& operator /=(Vector2<T>& left, T right)
-{
-	left.x /= right;
-	left.y /= right;
-
-	return left;
-}
-
-template <typename T>
-inline bool operator ==(const Vector2<T>& left, const Vector2<T>& right)
-{
-	return (left.x == right.x) && (left.y == right.y);
-}
-
-template <typename T>
-inline bool operator !=(const Vector2<T>& left, const Vector2<T>& right)
-{
-	return (left.x != right.x) || (left.y != right.y);
-}
diff --git a/source/libs/asura-lib-utils/math/vector3.hpp b/source/libs/asura-lib-utils/math/vector3.hpp
deleted file mode 100644
index 2b23406..0000000
--- a/source/libs/asura-lib-utils/math/vector3.hpp
+++ /dev/null
@@ -1,233 +0,0 @@
-#ifndef __ASURA_ENGINE_VECTOR3_H__
-#define __ASURA_ENGINE_VECTOR3_H__
-
-namespace AsuraEngine
-{
-	namespace Math
-	{
-		template <typename T>
-		class Vector3
-		{
-		public:
-
-			////////////////////////////////////////////////////////////
-			/// \brief Default constructor
-			///
-			/// Creates a Vector3(0, 0, 0).
-			///
-			////////////////////////////////////////////////////////////
-			Vector3();
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct the vector from its coordinates
-			///
-			/// \param X X coordinate
-			/// \param Y Y coordinate
-			/// \param Z Z coordinate
-			///
-			////////////////////////////////////////////////////////////
-			Vector3(T X, T Y, T Z);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct the vector from another type of vector
-			///
-			/// This constructor doesn't replace the copy constructor,
-			/// it's called only when U != T.
-			/// A call to this constructor will fail to compile if U
-			/// is not convertible to T.
-			///
-			/// \param vector Vector to convert
-			///
-			////////////////////////////////////////////////////////////
-			template <typename U>
-			explicit Vector3(const Vector3<U>& vector);
-
-			////////////////////////////////////////////////////////////
-			// Member data
-			////////////////////////////////////////////////////////////
-			T x; ///< X coordinate of the vector
-			T y; ///< Y coordinate of the vector
-			T z; ///< Z coordinate of the vector
-		};
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of unary operator -
-		///
-		/// \param left Vector to negate
-		///
-		/// \return Memberwise opposite of the vector
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T> operator -(const Vector3<T>& left);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator +=
-		///
-		/// This operator performs a memberwise addition of both vectors,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T>& operator +=(Vector3<T>& left, const Vector3<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator -=
-		///
-		/// This operator performs a memberwise subtraction of both vectors,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T>& operator -=(Vector3<T>& left, const Vector3<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator +
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Memberwise addition of both vectors
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T> operator +(const Vector3<T>& left, const Vector3<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator -
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Memberwise subtraction of both vectors
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T> operator -(const Vector3<T>& left, const Vector3<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator *
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Memberwise multiplication by \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T> operator *(const Vector3<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator *
-		///
-		/// \param left  Left operand (a scalar value)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Memberwise multiplication by \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T> operator *(T left, const Vector3<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator *=
-		///
-		/// This operator performs a memberwise multiplication by \a right,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T>& operator *=(Vector3<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator /
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Memberwise division by \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T> operator /(const Vector3<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator /=
-		///
-		/// This operator performs a memberwise division by \a right,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector3<T>& operator /=(Vector3<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator ==
-		///
-		/// This operator compares strict equality between two vectors.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return True if \a left is equal to \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		bool operator ==(const Vector3<T>& left, const Vector3<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector3
-		/// \brief Overload of binary operator !=
-		///
-		/// This operator compares strict difference between two vectors.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return True if \a left is not equal to \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		bool operator !=(const Vector3<T>& left, const Vector3<T>& right);
-
-#include "Vector3.inl"
-
-		// Define the most common types
-		typedef Vector3<int>   Vector3i;
-		typedef Vector3<float> Vector3f;
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/math/vector3.inl b/source/libs/asura-lib-utils/math/vector3.inl
deleted file mode 100644
index 3a2aa93..0000000
--- a/source/libs/asura-lib-utils/math/vector3.inl
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T>::Vector3() :
-	x(0),
-	y(0),
-	z(0)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T>::Vector3(T X, T Y, T Z) :
-	x(X),
-	y(Y),
-	z(Z)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-template <typename U>
-inline Vector3<T>::Vector3(const Vector3<U>& vector) :
-	x(static_cast<T>(vector.x)),
-	y(static_cast<T>(vector.y)),
-	z(static_cast<T>(vector.z))
-{
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T> operator -(const Vector3<T>& left)
-{
-	return Vector3<T>(-left.x, -left.y, -left.z);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T>& operator +=(Vector3<T>& left, const Vector3<T>& right)
-{
-	left.x += right.x;
-	left.y += right.y;
-	left.z += right.z;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T>& operator -=(Vector3<T>& left, const Vector3<T>& right)
-{
-	left.x -= right.x;
-	left.y -= right.y;
-	left.z -= right.z;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T> operator +(const Vector3<T>& left, const Vector3<T>& right)
-{
-	return Vector3<T>(left.x + right.x, left.y + right.y, left.z + right.z);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T> operator -(const Vector3<T>& left, const Vector3<T>& right)
-{
-	return Vector3<T>(left.x - right.x, left.y - right.y, left.z - right.z);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T> operator *(const Vector3<T>& left, T right)
-{
-	return Vector3<T>(left.x * right, left.y * right, left.z * right);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T> operator *(T left, const Vector3<T>& right)
-{
-	return Vector3<T>(right.x * left, right.y * left, right.z * left);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T>& operator *=(Vector3<T>& left, T right)
-{
-	left.x *= right;
-	left.y *= right;
-	left.z *= right;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T> operator /(const Vector3<T>& left, T right)
-{
-	return Vector3<T>(left.x / right, left.y / right, left.z / right);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector3<T>& operator /=(Vector3<T>& left, T right)
-{
-	left.x /= right;
-	left.y /= right;
-	left.z /= right;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline bool operator ==(const Vector3<T>& left, const Vector3<T>& right)
-{
-	return (left.x == right.x) && (left.y == right.y) && (left.z == right.z);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline bool operator !=(const Vector3<T>& left, const Vector3<T>& right)
-{
-	return (left.x != right.x) || (left.y != right.y) || (left.z != right.z);
-}
diff --git a/source/libs/asura-lib-utils/math/vector4.h b/source/libs/asura-lib-utils/math/vector4.h
deleted file mode 100644
index 13a9d8a..0000000
--- a/source/libs/asura-lib-utils/math/vector4.h
+++ /dev/null
@@ -1,234 +0,0 @@
-#ifndef __ASURA_ENGINE_VECTOR4_H__
-#define __ASURA_ENGINE_VECTOR4_H__
-
-namespace AsuraEngine
-{
-	namespace Math
-	{
-		template <typename T>
-		class Vector4
-		{
-		public:
-
-			////////////////////////////////////////////////////////////
-			/// \brief Default constructor
-			///
-			/// Creates a Vector4(0, 0, 0).
-			///
-			////////////////////////////////////////////////////////////
-			Vector4();
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct the vector from its coordinates
-			///
-			/// \param X X coordinate
-			/// \param Y Y coordinate
-			/// \param Z Z coordinate
-			///
-			////////////////////////////////////////////////////////////
-			Vector4(T X, T Y, T Z, T W);
-
-			////////////////////////////////////////////////////////////
-			/// \brief Construct the vector from another type of vector
-			///
-			/// This constructor doesn't replace the copy constructor,
-			/// it's called only when U != T.
-			/// A call to this constructor will fail to compile if U
-			/// is not convertible to T.
-			///
-			/// \param vector Vector to convert
-			///
-			////////////////////////////////////////////////////////////
-			template <typename U>
-			explicit Vector4(const Vector4<U>& vector);
-
-			////////////////////////////////////////////////////////////
-			// Member data
-			////////////////////////////////////////////////////////////
-			T x; ///< X coordinate of the vector
-			T y; ///< Y coordinate of the vector
-			T z; ///< Z coordinate of the vector
-			T w; ///< W coordinate of the vector
-		};
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of unary operator -
-		///
-		/// \param left Vector to negate
-		///
-		/// \return Memberwise opposite of the vector
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T> operator -(const Vector4<T>& left);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator +=
-		///
-		/// This operator performs a memberwise addition of both vectors,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T>& operator +=(Vector4<T>& left, const Vector4<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator -=
-		///
-		/// This operator performs a memberwise subtraction of both vectors,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T>& operator -=(Vector4<T>& left, const Vector4<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator +
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Memberwise addition of both vectors
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T> operator +(const Vector4<T>& left, const Vector4<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator -
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Memberwise subtraction of both vectors
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T> operator -(const Vector4<T>& left, const Vector4<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator *
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Memberwise multiplication by \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T> operator *(const Vector4<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator *
-		///
-		/// \param left  Left operand (a scalar value)
-		/// \param right Right operand (a vector)
-		///
-		/// \return Memberwise multiplication by \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T> operator *(T left, const Vector4<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator *=
-		///
-		/// This operator performs a memberwise multiplication by \a right,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T>& operator *=(Vector4<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator /
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Memberwise division by \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T> operator /(const Vector4<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator /=
-		///
-		/// This operator performs a memberwise division by \a right,
-		/// and assigns the result to \a left.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a scalar value)
-		///
-		/// \return Reference to \a left
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		Vector4<T>& operator /=(Vector4<T>& left, T right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator ==
-		///
-		/// This operator compares strict equality between two vectors.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return True if \a left is equal to \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		bool operator ==(const Vector4<T>& left, const Vector4<T>& right);
-
-		////////////////////////////////////////////////////////////
-		/// \relates Vector4
-		/// \brief Overload of binary operator !=
-		///
-		/// This operator compares strict difference between two vectors.
-		///
-		/// \param left  Left operand (a vector)
-		/// \param right Right operand (a vector)
-		///
-		/// \return True if \a left is not equal to \a right
-		///
-		////////////////////////////////////////////////////////////
-		template <typename T>
-		bool operator !=(const Vector4<T>& left, const Vector4<T>& right);
-
-#include "Vector4.inl"
-
-		// Define the most common types
-		typedef Vector4<int>   Vector4i;
-		typedef Vector4<float> Vector4f;
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/math/vector4.inl b/source/libs/asura-lib-utils/math/vector4.inl
deleted file mode 100644
index 025bfcc..0000000
--- a/source/libs/asura-lib-utils/math/vector4.inl
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T>::Vector4() :
-	x(0),
-	y(0),
-	z(0),
-	w(0)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T>::Vector4(T X, T Y, T Z) :
-	x(X),
-	y(Y),
-	z(Z),
-	w(0)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-template <typename U>
-inline Vector4<T>::Vector4(const Vector4<U>& vector) :
-	x(static_cast<T>(vector.x)),
-	y(static_cast<T>(vector.y)),
-	z(static_cast<T>(vector.z))
-	w(static_cast<T>(vector.w))
-{
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T> operator -(const Vector4<T>& left)
-{
-	return Vector4<T>(-left.x, -left.y, -left.z, -left.w);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T>& operator +=(Vector4<T>& left, const Vector4<T>& right)
-{
-	left.x += right.x;
-	left.y += right.y;
-	left.z += right.z;
-	left.w += right.w;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T>& operator -=(Vector4<T>& left, const Vector4<T>& right)
-{
-	left.x -= right.x;
-	left.y -= right.y;
-	left.z -= right.z;
-	left.w -= right.w;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T> operator +(const Vector4<T>& left, const Vector4<T>& right)
-{
-	return Vector4<T>(left.x + right.x, left.y + right.y, left.z + right.z, left.w + right.w);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T> operator -(const Vector4<T>& left, const Vector4<T>& right)
-{
-	return Vector4<T>(left.x - right.x, left.y - right.y, left.z - right.z, left.w - right.w);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T> operator *(const Vector4<T>& left, T right)
-{
-	return Vector4<T>(left.x * right, left.y * right, left.z * right, left.w * right);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T> operator *(T left, const Vector4<T>& right)
-{
-	return Vector4<T>(right.x * left, right.y * left, right.z * left, right.w * left);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T>& operator *=(Vector4<T>& left, T right)
-{
-	left.x *= right;
-	left.y *= right;
-	left.z *= right;
-	left.w *= right;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T> operator /(const Vector4<T>& left, T right)
-{
-	return Vector4<T>(left.x / right, left.y / right, left.z / right, left.w / right);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline Vector4<T>& operator /=(Vector4<T>& left, T right)
-{
-	left.x /= right;
-	left.y /= right;
-	left.z /= right;
-	left.w /= right;
-
-	return left;
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline bool operator ==(const Vector4<T>& left, const Vector4<T>& right)
-{
-	return (left.x == right.x) && (left.y == right.y) && (left.z == right.z) && (left.w == right.w);
-}
-
-
-////////////////////////////////////////////////////////////
-template <typename T>
-inline bool operator !=(const Vector4<T>& left, const Vector4<T>& right)
-{
-	return (left.x != right.x) || (left.y != right.y) || (left.z != right.z) || (left.w != right.w);
-}
diff --git a/source/libs/asura-lib-utils/module.h b/source/libs/asura-lib-utils/module.h
deleted file mode 100644
index b22c68c..0000000
--- a/source/libs/asura-lib-utils/module.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __ASURA_MODULE_H__
-#define __ASURA_MODULE_H__
-
-#include "type.h"
-#include "scripting/portable.hpp"
-
-namespace AsuraEngine
-{
-
-	///
-	/// Asura libs ��Ҫ�̳д��࣬�Կ���ע�ᡣ��ģ������а�˳��������Щģ�飬Ȼ��˳�����Initialize��Finalize��������ʼ����
-	/// �ر���Щģ�顣
-	/// 
-	ASURA_ABSTRACT class Module
-	{
-	public:
-
-		///
-		/// ��ʼ��ģ�顣
-		///
-		virtual void Initialize(Luax::LuaxState& state) = 0;
-
-		///
-		/// �ر�ģ�顣
-		///
-		virtual void Finalize(Luax::LuaxState& state) = 0;
-
-	};
-
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/profiler/memory_leak.cpp b/source/libs/asura-lib-utils/profiler/memory_leak.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/profiler/memory_leak.h b/source/libs/asura-lib-utils/profiler/memory_leak.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/scripting/lua_env.h b/source/libs/asura-lib-utils/scripting/lua_env.h
deleted file mode 100644
index e2fc4fc..0000000
--- a/source/libs/asura-lib-utils/scripting/lua_env.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef __ASURA_LUA_ENV_H__
-#define __ASURA_LUA_ENV_H__
-
-extern "C"
-{
-#include <Lua51/lua.h>
-#include <Lua51/lauxlib.h>
-}
-#include <Luax/luax.h>
-
-#include "../singleton.hpp"
-
-namespace AsuraEngine
-{
-	namespace Scripting
-	{
-
-		///
-		/// ����ͨ������ӿڷ�����lua state��Asura�����˼���ǣ��������߳�ά��һ��lua�������Ӧ��
-		/// ����Ҫ�߼����ڴ����������lua�߳�����߽���ջ���
-		///
-		class LuaEnv ASURA_FINAL : public Singleton<LuaEnv>
-		{
-		public:
-
-			LuaEnv() : mVM(0) {};
-			~LuaEnv() {};
-
-			///
-			/// ���������������ִ��ջ��
-			///
-			inline void Init() 
-			{ 
-				ASSERT(!mVM);
-				mVM = new Luax::LuaxVM();
-				ASSERT(mVM);
-				mVM->Setup();
-			};
-
-			inline lua_State* GetMainThread()
-			{ 
-				return mVM->GetMainThread(); 
-			};
-
-			inline void Exit()
-			{
-				delete mVM;
-				mVM = nullptr;
-			}
-
-		private:
-
-			///
-			/// ���̱߳���һ����lua�������һ��Asura������Զֻ��һ������������󲿷ִ��붼�������
-			/// ��������У���ֻ������һ�Ρ����߳�\��ִ��ջ��Ӧ����global_State����ģ�
-			///
-			///	    struct lua_State *mainthread;
-			///
-			/// ʹ��lua_newstate()���ᴴ��һ�������������һ��global_State�ṹ��������һ�������
-			/// ��������߳�lua_State�����ء�global_State�����������������̹߳��������˵�һ����
-			/// �߳���lua_newstate()�����⣬�����߳���lua_newthread()������
-			///
-			Luax::LuaxVM* mVM;
-
-		};
-
-	}
-}
-
-namespace AEScripting = AsuraEngine::Scripting;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/scripting/portable.hpp b/source/libs/asura-lib-utils/scripting/portable.hpp
deleted file mode 100644
index 5badf8d..0000000
--- a/source/libs/asura-lib-utils/scripting/portable.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef __ASURA_ENGINE_PORTABLE_H__
-#define __ASURA_ENGINE_PORTABLE_H__
-
-#include "../type.h"
-
-#include "lua_env.h"
-
-namespace AsuraEngine
-{
-	namespace Scripting
-	{
-
-		///
-		/// Ҫע���lua��native����Ҫ�̳д�ģ�塣
-		///
-		template<typename T> 
-		using Portable = Luax::LuaxNativeClass<T>;
-
-		///
-		/// ��Ҫ��Ϊ���࣬����userdata��member ref����̳д��࣬ע���������̳С�
-		///
-		using NativeAccessor = Luax::ILuaxNativeAccessor;
-
-	}
-}
-
-namespace AEScripting = AsuraEngine::Scripting;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/singleton.hpp b/source/libs/asura-lib-utils/singleton.hpp
deleted file mode 100644
index 0d2777e..0000000
--- a/source/libs/asura-lib-utils/singleton.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef __ASURA_SINGLETON_H__
-#define __ASURA_SINGLETON_H__
-
-#include "utils_config.h"
-
-namespace AsuraEngine
-{
-
-	///
-	/// �̳�Singleton�����ڵ�һ��ʵ����ʱ����ʵ����֮������ٴ�ʵ�����ᱨ����
-	/// 
-	template<class T>
-	class Singleton
-	{
-	public:
-
-		static T* Get()
-		{
-			// ���֮ǰû�д�������������������һ��������
-			if (!instance) instance = new T;
-			// ����ʵ��
-			return instance;
-		}
-
-		static void Destroy()
-		{
-			delete instance;
-			instance = nullptr;
-		}
-
-	protected:
-
-		Singleton()
-		{
-			// �����instance����ζ���ִ�����һ��ʵ�������Ǵ���ġ�
-			ASSERT(!instance);
-			// ���򣬽���ʵ����Ϊʵ��
-			instance = static_cast<T*>(this);
-		};
-
-		virtual ~Singleton() {};
-
-		static T* instance;
-
-	private:
-
-		Singleton(const Singleton& singleton);
-
-		Singleton& operator = (const Singleton& singleton);
-
-	};
-
-	// ʵ����ʼ��Ϊ��
-	template<class T>
-	T* Singleton<T>::instance = nullptr;
-
-}
-
-#endif // __ASURA_SINGLETON_H__
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/stringmap.cpp b/source/libs/asura-lib-utils/stringmap.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/stringmap.hpp b/source/libs/asura-lib-utils/stringmap.hpp
deleted file mode 100644
index ddba128..0000000
--- a/source/libs/asura-lib-utils/stringmap.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef __ASURA_ENGINE_STRINGMAP_H__
-#define __ASURA_ENGINE_STRINGMAP_H__
-
-#include <string>
-
-namespace AsuraEngine
-{
-
-	///
-	/// һ��˫��һһ��Ӧ��ӳ�䣬��������shader uniforms��statemathine state parameter��ID��
-	///
-	template<typename key_type> 
-	class StringMap
-	{
-	public:
-
-		bool ContainsKey(const key_type& key);
-
-		bool ContainsString(const String& str);
-
-		std::string GetStringByKey(const key_type& key);
-
-		key_type GetKeyByString(const String& str);
-
-	};
-
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/binding/_coroutine.cpp b/source/libs/asura-lib-utils/threading/binding/_coroutine.cpp
deleted file mode 100644
index 7f74cca..0000000
--- a/source/libs/asura-lib-utils/threading/binding/_coroutine.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "../coroutine.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Threading 
-	{
-		
-		LUAX_REGISTRY(Coroutine)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "New", _New },
-				{ "Run", _Run }
-			);
-		}
-
-		LUAX_POSTPROCESS(Coroutine)
-		{
-
-		}
-
-		// Coroutine.New()
-		LUAX_IMPL_METHOD(Coroutine, _New)
-		{
-			LUAX_STATE(L);
-
-			return 0;
-		}
-
-		// coroutine:Run()
-		LUAX_IMPL_METHOD(Coroutine, _Run)
-		{
-			LUAX_PREPARE(L, Coroutine);
-
-			return 0;
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/threading/binding/_thread.cpp b/source/libs/asura-lib-utils/threading/binding/_thread.cpp
deleted file mode 100644
index a5aff03..0000000
--- a/source/libs/asura-lib-utils/threading/binding/_thread.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-#include "../thread.h"
-
-using namespace std;
-
-namespace AsuraEngine 
-{
-	namespace Threading 
-	{
-		
-		LUAX_REGISTRY(Thread)
-		{
-			LUAX_REGISTER_METHODS(state,
-				{ "New",       _New       },
-				{ "AddTask",   _AddTask   },
-				{ "Start",     _Start     },
-				{ "Idle",      _Idle      },
-				{ "Pause",     _Pause     },
-				{ "Resume",    _Resume    },
-				{ "Stop",      _Stop      },
-				{ "Join",      _Join      },
-				{ "IsRunning", _IsRunning },
-				{ "IsPaused",  _IsPaused  },
-				{ "IsStopped", _IsStopped },
-				{ "IsCurrent", _IsCurrent },
-				{ "Sleep",     _Sleep     },
-				{ "Post",      _Post      },
-				{ "GetName",   _GetName   },
-				{ "GetType",   _GetType   },
-				{ "GetState",  _GetState  }
-			);
-		}
-
-		LUAX_POSTPROCESS(Thread)
-		{
-			LUAX_REGISTER_ENUM(state, "EThreadType",
-				{ "DEFERRED",  THREAD_TYPE_DEFERRED  },
-				{ "IMMEDIATE", THREAD_TYPE_IMMEDIATE }
-			);
-			LUAX_REGISTER_ENUM(state, "EThreadState",
-				{ "READY",   THREAD_STATE_IDLE   },
-				{ "RUNNING", THREAD_STATE_RUNNING },
-				{ "PAUSED",  THREAD_STATE_PAUSED  },
-				{ "STOPPED", THREAD_STATE_STOPPED }
-			);
-		}
-
-		// thread = Thread.New(thread_type, sleepTime, name)
-		LUAX_IMPL_METHOD(Thread, _New)
-		{
-			LUAX_STATE(L);
-
-			ThreadType type = (ThreadType)state.GetValue<int>(1, THREAD_TYPE_DEFERRED);
-			uint sleepTime = state.GetValue<uint>(2,1);
-			cc8* name = state.GetValue<cc8*>(3, "");
-
-			Thread* thread = new Thread(state, type, sleepTime, name);
-			thread->PushLuaxUserdata(state);
-
-			return 1;
-		}
-
-		// thread:AddTask(task)
-		LUAX_IMPL_METHOD(Thread, _AddTask)
-		{
-			LUAX_PREPARE(L, Thread);
-
-			Task* task = state.GetUserdata<Task>(2);
-			self->AddTask(task);
-			self->LuaxRetain<Task>(state, task);
-			return 0;
-		}
-
-		// successed = thread:Start(isDeamon, stackSize)
-		LUAX_IMPL_METHOD(Thread, _Start)
-		{
-			LUAX_PREPARE(L, Thread);
-
-			bool isDaemon = state.GetValue(2, true);
-			uint stackSize = state.GetValue(3, 0);
-
-			state.Push(self->Start(isDaemon, stackSize));
-			return 1;
-		}
-
-		// thread:Idle()
-		LUAX_IMPL_METHOD(Thread, _Idle)
-		{
-			LUAX_PREPARE(L, Thread);
-			self->Idle();
-			return 0;
-		}
-
-		// thread:Pause()
-		LUAX_IMPL_METHOD(Thread, _Pause)
-		{
-			LUAX_PREPARE(L, Thread);
-			self->Pause();
-			return 0;
-		}
-
-		// thread:Resume()
-		LUAX_IMPL_METHOD(Thread, _Resume)
-		{
-			LUAX_PREPARE(L, Thread);
-			self->Resume();
-			return 0;
-		}
-
-		// thread:Stop()
-		LUAX_IMPL_METHOD(Thread, _Stop)
-		{
-			LUAX_PREPARE(L, Thread);
-			self->Stop();
-			return 0;
-		}
-
-		// thread:Join()
-		LUAX_IMPL_METHOD(Thread, _Join)
-		{
-			LUAX_PREPARE(L, Thread);
-			self->Join();
-			return 0;
-		}
-
-		// thread:IsRunning()
-		LUAX_IMPL_METHOD(Thread, _IsRunning)
-		{
-			LUAX_PREPARE(L, Thread);
-			state.Push(self->IsRunning());
-			return 1;
-		}
-
-		// thread:IsPaused()
-		LUAX_IMPL_METHOD(Thread, _IsPaused)
-		{
-			LUAX_PREPARE(L, Thread);
-			state.Push(self->IsPaused());
-			return 1;
-		}
-
-		// thread:IsStopped()
-		LUAX_IMPL_METHOD(Thread, _IsStopped)
-		{
-			LUAX_PREPARE(L, Thread);
-			state.Push(self->IsStopped());
-			return 1;
-		}
-
-		// thread:IsCurrent()
-		LUAX_IMPL_METHOD(Thread, _IsCurrent)
-		{
-			LUAX_PREPARE(L, Thread);
-			state.Push(self->IsCurrent());
-			return 1;
-		}
-
-		// Thread.Sleep(ms)
-		LUAX_IMPL_METHOD(Thread, _Sleep)
-		{
-			LUAX_STATE(L);
-			uint ms = state.GetValue(1, 0);
-#ifdef _WIN32
-			::Sleep(ms);
-#endif
-			return 0;
-		}
-
-		// thread:Post()
-		LUAX_IMPL_METHOD(Thread, _Post)
-		{
-			LUAX_PREPARE(L, Thread);
-			self->Post();
-			return 0;
-		}
-
-		// thread:GetName()
-		LUAX_IMPL_METHOD(Thread, _GetName)
-		{
-			LUAX_PREPARE(L, Thread);
-			state.Push(self->GetName());
-			return 1;
-		}
-
-		// thread:GetType()
-		LUAX_IMPL_METHOD(Thread, _GetType)
-		{
-			LUAX_PREPARE(L, Thread);
-			state.Push(self->mType);
-			return 1;
-		}
-
-		// thread:GetState()
-		LUAX_IMPL_METHOD(Thread, _GetState)
-		{
-			LUAX_PREPARE(L, Thread);
-			state.Push(self->mState);
-			return 1;
-		}
-
-		// thread:SetSleepTime(sleepTime)
-		LUAX_IMPL_METHOD(Thread, _SetSleepTime)
-		{
-			LUAX_PREPARE(L, Thread);
-			uint time = state.CheckValue<uint>(2);
-			self->SetSleepTime(time);
-			return 0;
-		}
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/threading/coroutine.cpp b/source/libs/asura-lib-utils/threading/coroutine.cpp
deleted file mode 100644
index 9f65c5f..0000000
--- a/source/libs/asura-lib-utils/threading/coroutine.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "coroutine.h"
-
-namespace AsuraEngine
-{
-	namespace  Threading
-	{
-/*
-		Coroutine::Coroutine()
-		{
-
-		}
-*/
-
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/threading/coroutine.h b/source/libs/asura-lib-utils/threading/coroutine.h
deleted file mode 100644
index 01af654..0000000
--- a/source/libs/asura-lib-utils/threading/coroutine.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef __ASURA_COROUTINE_H__
-#define __ASURA_COROUTINE_H__
-
-#include "../scripting/portable.hpp"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// luaЭ�̣�������һЩ�߼�����������
-		///
-		class Coroutine ASURA_FINAL
-			: public AEScripting::Portable<Coroutine>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(Coroutine);
-
-
-
-		private:
-
-			///
-			/// ��ǰЭ�̵�state
-			///
-			lua_State* mThreadState;
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_Run);
-
-		};
-
-	}
-}
-
-namespace AEThreading = AsuraEngine::Threading;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/mutex.cpp b/source/libs/asura-lib-utils/threading/mutex.cpp
deleted file mode 100644
index 663ac28..0000000
--- a/source/libs/asura-lib-utils/threading/mutex.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-#include <asura-lib-utils/exceptions/exception.h>
-
-#include "mutex.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-#define try_create_mutex(impl)\
-	if (!mImpl)						  \
-	{											  \
-		try									  \
-		{										  \
-			mImpl = new impl(); \
-		}										  \
-		catch (Exception& e)  \
-		{										  \
-			mImpl = nullptr;	  \
-		}										  \
-	}											 
-
-		Mutex::Mutex()
-			: mImpl(nullptr)
-		{
-#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
-			try_create_mutex(MutexImplWin32_CS);
-#endif
-#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
-			try_create_mutex(MutexImplWin32_KM);
-#endif
-			ASSERT(mImpl);
-		}
-
-		Mutex::~Mutex()
-		{
-			delete mImpl;
-		}
-
-		void Mutex::Lock()
-		{
-			ASSERT(mImpl);
-
-			mImpl->Lock();
-		}
-
-		void Mutex::Unlock()
-		{
-			ASSERT(mImpl);
-
-			mImpl->Unlock();
-		}
-
-#if ASURA_MUTEX_WIN32_CRITICLE_SECTION 
-
-		MutexImplWin32_CS::MutexImplWin32_CS()
-		{
-			::InitializeCriticalSection(&mMutex);
-		}
-
-		MutexImplWin32_CS::~MutexImplWin32_CS()
-		{
-			::DeleteCriticalSection(&mMutex);
-		}
-
-		void MutexImplWin32_CS::Lock()
-		{
-			::EnterCriticalSection(&mMutex);
-		}
-
-		void MutexImplWin32_CS::Unlock()
-		{
-			::LeaveCriticalSection(&mMutex);
-		}
-
-#endif // ASURA_MUTEX_WIN32_CRITICLE_SECTION
-
-#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
-		MutexImplWin32_KM::MutexImplWin32_KM()
-		{
-			mHandle = ::CreateMutex(NULL, FALSE, NULL);
-			if (!mHandle)
-				throw Exception("Cant use win32 mutex.");
-		}
-
-		MutexImplWin32_KM::~MutexImplWin32_KM()
-		{
-			::CloseHandle(mHandle);
-			mHandle = NULL;
-		}
-
-		void MutexImplWin32_KM::Lock()
-		{
-			::WaitForSingleObject(mHandle, INFINITE);
-		}
-
-		void MutexImplWin32_KM::Unlock()
-		{
-			::ReleaseMutex(mHandle);
-		}
-
-#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/threading/mutex.h b/source/libs/asura-lib-utils/threading/mutex.h
deleted file mode 100644
index 7e7d877..0000000
--- a/source/libs/asura-lib-utils/threading/mutex.h
+++ /dev/null
@@ -1,126 +0,0 @@
-#ifndef __ASURA_MUTEX_H__
-#define __ASURA_MUTEX_H__
-
-#include <asura-lib-utils/type.h>
-
-#include "../utils_config.h"
-
-#if ASURA_THREAD_WIN32
-	#include <windows.h>
-#endif
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		class MutexImpl;
-
-		class Mutex
-		{
-		public:
-
-			Mutex();
-			~Mutex();
-
-			void Lock();
-			void Unlock();
-
-		private:
-
-			MutexImpl* mImpl;
-
-		};
-
-		class _mutex_locker
-		{
-		public:
-			_mutex_locker(Mutex& mutex)
-				: m(mutex)
-			{
-				m.Lock();
-			};
-			~_mutex_locker()
-			{
-				m.Unlock();
-			}
-		private: 
-			void* operator new(size_t);
-			Mutex& m;
-		};
-
-// �����ڵ�ջ�Ӵ�λ�ÿ�ʼ����ջ����Ϊ�ٽ���������
-#define lock(mutex)  _mutex_locker _asura_scoped_lock_0x0(mutex)
-#define lock2(mutex) _mutex_locker _asura_scoped_lock_0x1(mutex)
-#define lock3(mutex) _mutex_locker _asura_scoped_lock_0x2(mutex)
-#define lock4(mutex) _mutex_locker _asura_scoped_lock_0x3(mutex)
-#define lock5(mutex) _mutex_locker _asura_scoped_lock_0x4(mutex)
-
-		ASURA_ABSTRACT class MutexImpl
-		{
-		public:
-
-			MutexImpl() {};
-			virtual ~MutexImpl() {};
-
-			virtual void Lock() = 0; 
-			virtual void Unlock() = 0;
-
-		};
-
-#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
-
-		//https://blog.csdn.net/l799623787/article/details/18259949
-		class MutexImplWin32_CS ASURA_FINAL : public MutexImpl
-		{
-		public:
-
-			MutexImplWin32_CS();
-			~MutexImplWin32_CS();
-
-			void Lock() override;
-			void Unlock() override;
-
-		private:
-
-			//HANDLE mHandle;
-			CRITICAL_SECTION mMutex;
-
-		};
-
-#endif // ASURA_MUTEX_WIN32_CRITICLE_SECTION
-
-#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
-		class MutexImplWin32_KM ASURA_FINAL : public MutexImpl
-		{
-		public:
-
-			MutexImplWin32_KM();
-			~MutexImplWin32_KM();
-
-			void Lock() override;
-			void Unlock() override;
-
-		private:
-
-			HANDLE mHandle;
-
-		};
-
-#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
-#if ASURA_THREAD_STD 
-
-		class MutexImplSTD ASURA_FINAL : public MutexImpl
-		{
-		};
-
-#endif // ASURA_THREAD_STD 
-
-	}
-}
-
-namespace AEThreading = AsuraEngine::Threading;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/semaphore.cpp b/source/libs/asura-lib-utils/threading/semaphore.cpp
deleted file mode 100644
index d59ec78..0000000
--- a/source/libs/asura-lib-utils/threading/semaphore.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "../exceptions/exception.h"
-#include "../type.h"
-
-#include "semaphore.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-#define try_create_semaphore(impl) \
-		if (!mImpl)												\
-		{																	\
-			try															\
-			{																\
-				mImpl = new impl(init_count);	\
-			}																\
-			catch (Exception& e)						\
-			{																\
-				mImpl = nullptr;							\
-			}																\
-		}
-
-		Semaphore::Semaphore(unsigned int init_count)
-			: mImpl(nullptr)
-		{
-#ifdef ASURA_THREAD_WIN32 
-			try_create_semaphore(SemaphoreWin32);
-#endif
-			ASSERT(mImpl);
-		}
-
-		Semaphore::~Semaphore()
-		{
-			if (mImpl) delete mImpl;
-		}
-
-		void Semaphore::Signal()
-		{
-			ASSERT(mImpl);
-			mImpl->Signal();
-		}
-
-		void Semaphore::Wait(int timeout)
-		{
-			ASSERT(mImpl);
-			mImpl->Wait(timeout);
-		}
-
-#if ASURA_THREAD_WIN32 
-
-		SemaphoreWin32::SemaphoreWin32(unsigned int init_value)
-			: SemaphoreImpl(init_value)
-		{
-			mSem = CreateSemaphore(NULL, init_value, UINT_MAX, NULL);
-			if (!mSem)
-				throw Exception("Cant use win32 semaphore.");
-		}
-
-		SemaphoreWin32::~SemaphoreWin32()
-		{
-			CloseHandle(mSem);
-		}
-
-		void SemaphoreWin32::Signal()
-		{
-			InterlockedIncrement(&mCount);
-			if (ReleaseSemaphore(mSem, 1, NULL) == FALSE)
-				InterlockedDecrement(&mCount);
-		}
-
-		bool SemaphoreWin32::Wait(int timeout)
-		{
-			int result;
-			result = WaitForSingleObject(mSem, timeout < 0 ? INFINITE : timeout);
-			if (result == WAIT_OBJECT_0)
-			{
-				InterlockedDecrement(&mCount);
-				return true;
-			}
-			else
-				return false;
-		}
-
-#endif // ASURA_THREAD_WIN32 
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/semaphore.h b/source/libs/asura-lib-utils/threading/semaphore.h
deleted file mode 100644
index 80773d8..0000000
--- a/source/libs/asura-lib-utils/threading/semaphore.h
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifndef __ASURA_SEMAPHORE_H__
-#define __ASURA_SEMAPHORE_H__
-
-#include "../utils_config.h"
-
-#if ASURA_THREAD_WIN32 
-#include <windows.h>
-#endif
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		class SemaphoreImpl;
-
-		///
-		/// ���
-		///
-		class Semaphore
-		{
-		public:
-
-			Semaphore(unsigned int init_count = 1);
-			~Semaphore();
-
-			void Signal();
-			void Wait(int timeout = 0);
-
-		private: 
-			SemaphoreImpl* mImpl;
-		};
-
-		class SemaphoreImpl
-		{
-		public:
-			SemaphoreImpl(unsigned int init_value) 
-				: mCount(init_value)
-			{
-			};
-			virtual ~SemaphoreImpl() {};
-			virtual void Signal() = 0;
-			virtual bool Wait(int timeout) = 0;
-			inline int Current() { return mCount; }
-		protected: 
-			unsigned int mCount;
-		};
-
-#define wait(sem) sem.Wait();
-#define signal(sem) sem.Signal(); 
-		
-#if ASURA_THREAD_WIN32
-
-		class SemaphoreWin32 : public SemaphoreImpl
-		{
-		public:
-			SemaphoreWin32(unsigned int init_value);
-			~SemaphoreWin32();
-			void Signal() override; 
-			bool Wait(int timeout) override;
-		private:
-			HANDLE mSem;
-		};
-
-#endif // ASURA_THREAD_WIN32
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/task.cpp b/source/libs/asura-lib-utils/threading/task.cpp
deleted file mode 100644
index 2e84ed4..0000000
--- a/source/libs/asura-lib-utils/threading/task.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "task.h"
-#include "../scripting/lua_env.h"
-
-using namespace AEScripting;
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-	}
-}
diff --git a/source/libs/asura-lib-utils/threading/task.h b/source/libs/asura-lib-utils/threading/task.h
deleted file mode 100644
index fb7aa5f..0000000
--- a/source/libs/asura-lib-utils/threading/task.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef __ASURA_THRAD_TASK_H__
-#define __ASURA_THRAD_TASK_H__
-
-#include <asura-lib-utils/type.h>
-#include <asura-lib-utils/scripting/portable.hpp>
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// ϣ��������һ���̴߳��������񣬼̳�Task����дExecute������
-		///
-		ASURA_ABSTRACT class Task 
-			: public virtual AEScripting::NativeAccessor
-		{
-		public:
-
-			Task() {};
-			virtual ~Task() {};
-
-			///
-			/// ִ��������ɺ󷵻�true�����ûص�������
-			///
-			virtual bool Execute() = 0;
-
-			///
-			/// ���ûص�����invoke thread����ص���
-			///
-			virtual void Invoke(lua_State* invokeThreaad) = 0;
-
-		protected:
-
-			// ȡ�ص�����
-			Luax::LuaxMemberRef mCallback;
-
-		};
-
-	}
-}
-
-namespace AEThreading = AsuraEngine::Threading;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/thread.cpp b/source/libs/asura-lib-utils/threading/thread.cpp
deleted file mode 100644
index 0f4f5da..0000000
--- a/source/libs/asura-lib-utils/threading/thread.cpp
+++ /dev/null
@@ -1,272 +0,0 @@
-#include "thread.h"
-
-#include "thread_impl_win32.h"
-#include "thread_impl_posix.h"
-#include "thread_impl_sdl.h"
-#include "thread_impl_std.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		Thread::Thread(lua_State* luaThread, ThreadType type /*= THREAD_TYPE_DEFERRED*/, uint sleepTime /*= 0*/, const std::string& name /*= ""*/)
-			: mName(name)
-			, mState(THREAD_STATE_IDLE)
-			, mType(type)
-			, mLuaThread(luaThread)
-			, mCallbackThread(nullptr)
-			, mSleepTime(sleepTime)
-		{
-			LUAX_STATE(luaThread);
-			if (type == THREAD_TYPE_IMMEDIATE)
-			{
-				Luax::LuaxVM* vm = state.GetVM();
-				ASSERT(vm);
-				mCallbackThread = vm->CreateThread();
-				ASSERT(mCallbackThread);
-				SetLuaxMemberRef(state, mCallbackThreadRef, -1);
-				state.Pop(); // callback thread
-			}
-		}
-
-		Thread::~Thread()
-		{
-			if (mImpl)
-			{
-				delete mImpl;
-				mImpl = nullptr;
-			}
-		}
-
-		bool Thread::AddTask(Task* task)
-		{
-			lock(mTaskQueueMutex);
-			mTaskQueue.push(task);
-			return true;
-		}
-
-		uint Thread::GetTaskCount()
-		{
-			return mTaskQueue.size();
-		}
-
-		void Thread::Idle()
-		{
-			mState = THREAD_STATE_IDLE;
-		}
-
-#define try_start_thread(impl)\
-	if (!mImpl) \
-	{ \
-		mImpl = new impl(); \
-		if (!mImpl->Start(this, stacksize)) \
-		{ \
-			delete mImpl; \
-			mImpl = nullptr; \
-		} \
-	}
-
-		bool Thread::Start(bool isDaemon /*= true*/, uint32 stacksize /*= 0*/)
-		{
-			if (mState != THREAD_STATE_IDLE)
-				return false;
-
-			// ����Ѿ�����һ��֮ǰ�����ģ��ر�����
-			if (mImpl)
-			{
-					delete mImpl;
-					mImpl = nullptr;
-			}
-
-#if ASURA_THREAD_WIN32
-			try_start_thread(ThreadImplWin32);
-#endif
-
-			if (!mImpl)
-				return false;
-
-			mIsDaemon = isDaemon;
-			mStateMutex.Lock();
-			mState = THREAD_STATE_RUNNING;
-			mStateMutex.Unlock();
-		}
-
-		void Thread::Pause()
-		{
-			ASSERT(mImpl);
-
-			lock(mStateMutex);
-			mState = THREAD_STATE_PAUSED;
-		}
-
-		void Thread::Resume()
-		{
-			ASSERT(mImpl);
-
-			lock(mStateMutex);
-			if(mState == THREAD_STATE_PAUSED)
-				mState = THREAD_STATE_RUNNING;
-		}
-
-		void Thread::Stop()
-		{
-			ASSERT(mImpl);
-
-			lock(mStateMutex);
-			mState = THREAD_STATE_STOPPED;
-		}
-
-		void Thread::PauseSync()
-		{
-			Pause();
-			wait(mSemPause);
-		}
-
-		void Thread::ResumeSync()
-		{
-			Resume();
-			wait(mSemResume);
-		}
-
-		void Thread::StopSync()
-		{
-			Stop();
-			wait(mSemStop);
-		}
-
-		void Thread::Join()
-		{
-			ASSERT(mImpl); 
-			mImpl->Join();
-		}
-
-		ThreadState Thread::GetState()
-		{
-			ThreadState state;
-			mStateMutex.Lock();
-			state = mState;
-			mStateMutex.Unlock();
-			return state;
-		}
-
-		bool Thread::IsRunning()
-		{
-			ASSERT(mImpl);
-
-			return GetState() == THREAD_STATE_RUNNING;
-		}
-
-		bool Thread::IsPaused()
-		{
-			ASSERT(mImpl);
-
-			return GetState() == THREAD_STATE_PAUSED;
-		}
-
-		bool Thread::IsStopped()
-		{
-			ASSERT(mImpl);
-
-			return GetState() == THREAD_STATE_STOPPED;
-		}
-
-		bool Thread::IsCurrent()
-		{
-			ASSERT(mImpl);
-
-			return mImpl->IsCurrent(); 
-		}
-
-		const std::string& Thread::GetName()
-		{
-			return mName;
-		}
-
-		void Thread::Process()
-		{
-			LUAX_STATE(mLuaThread);
-
-			do{
-				if (IsRunning())
-				{
-					while (!mTaskQueue.empty())
-					{
-						Task* task = mTaskQueue.front();
-						if (task && task->Execute())
-						{
-							if (mType == THREAD_TYPE_DEFERRED)
-							{
-								mFinishedMutex.Lock();
-								mFinishedTasks.push(task);
-								mFinishedMutex.Unlock();
-							}
-							else if (mType == THREAD_TYPE_IMMEDIATE)
-							{
-								task->Invoke(mCallbackThread);
-								this->LuaxRelease<Task>(state, task);
-							}
-							mTaskQueueMutex.Lock();
-							mTaskQueue.pop();
-							mTaskQueueMutex.Unlock();
-						}
-					}
-				}
-
-				// �˳�ѭ��
-				if (IsStopped())
-					break;
-
-				// ����CPUʹ����
-				Sleep(mSleepTime);
-
-			} while (mIsDaemon);
-
-			// ���ػ��̣߳����е�stop״̬
-			if (!mIsDaemon)
-				Stop();
-
-			signal(mSemStop);
-
-			// ����״̬ΪIdle
-			Idle();
-		}
-
-		///
-		/// �ӳ�ģʽ���������ص���
-		/// 
-		void Thread::Post()
-		{
-			ASSERT(mType == THREAD_TYPE_DEFERRED);
-
-			LUAX_STATE(mLuaThread);
-			while (!mFinishedTasks.empty())
-			{
-				Task* task = mFinishedTasks.front(); 
-				if (task)
-				{
-					task->Invoke(mLuaThread);
-					this->LuaxRelease<Task>(state, task);
-					mFinishedMutex.Lock();
-					mFinishedTasks.pop();
-					mFinishedMutex.Unlock();
-				}
-			}
-		}
-
-		void Thread::Sleep(uint ms)
-		{
-			ASSERT(mImpl);
-			if (mImpl)
-			{
-				mImpl->Sleep(ms);
-			}
-		}
-
-		void Thread::SetSleepTime(uint ms)
-		{
-			mSleepTime = ms;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/thread.h b/source/libs/asura-lib-utils/threading/thread.h
deleted file mode 100644
index 0e75770..0000000
--- a/source/libs/asura-lib-utils/threading/thread.h
+++ /dev/null
@@ -1,221 +0,0 @@
-#ifndef __ASURA_THREAD_H__
-#define __ASURA_THREAD_H__
-
-#include <string>
-#include <queue>
-
-#include <asura-lib-utils/scripting/portable.hpp>
-
-#include "task.h"
-#include "mutex.h"
-#include "semaphore.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		class ThreadImpl;
-
-		///
-		/// �̵߳ļ��ֲ�ͬ��ʵ�֣�
-		///     1: Deferred���ӳ�ģʽ�����߳��ϵ�������ɺ���Ҫ�ֶ������̵߳���Post������
-		///        �����̵߳��ص����������������첽��Ϊͬ�������������lua_State��ͻ�����⡣
-		///     2: Immediate������ģʽ����ÿһ���߳�ά��һ��lua_newthread����������lua_State��
-		///        �ص������ڲ�ͬ��lua_State�е��ã����ⲻͬ���̷߳���ͬһ��lua_State��
-		///
-		enum ThreadType
-		{
-			THREAD_TYPE_DEFERRED,
-			THREAD_TYPE_IMMEDIATE,
-		};
-
-		enum ThreadState
-		{
-			THREAD_STATE_IDLE,    ///< ���ã���δ�����ں˶���
-			THREAD_STATE_RUNNING,	///< ��������ѭ��
-			THREAD_STATE_PAUSED,	///< ��ѭ������ͣ
-			THREAD_STATE_STOPPED,	///< �˳�ѭ��
-		};
-
-		///
-		/// �߳����壬ÿ���߳�ά��һ��task queue��
-		///
-		class Thread ASURA_FINAL
-			: public AEScripting::Portable<Thread>
-		{
-		public:
-
-			LUAX_DECL_FACTORY(Thread);
-
-			Thread(lua_State* luaThread, ThreadType type = THREAD_TYPE_DEFERRED, uint sleepTime = 1, const std::string& name = "");
-			~Thread();
-
-			bool AddTask(Task* task);
-			///
-			/// ��õȴ�������������
-			///
-			uint GetTaskCount();
-
-			void Idle();
-
-			///
-			/// �����ں˶��󣬲����С������daemon����ȴ��ֶ�stop���������ijʱ�̶�����ɺ��Զ�stop��
-			///
-			bool Start(bool daemon = true, uint32 stacksize = 0);
-
-			///
-			/// ��ͬ���߳̿��ƣ�����ʵʱ�ġ�������Ҫ�����߳���ʹ��Is����ȷ�ϵ���ָ��״̬��
-			///
-			void Pause();
-			void Resume();
-			void Stop();
-
-			///
-			/// ͬ���߳̿��ƣ���ȷ������źź��������ִ�С���������̵߳ȴ���
-			///
-			void PauseSync();
-			void ResumeSync();
-			void StopSync();
-
-			///
-			/// ���̵߳ȴ����߳̽�����ż���ִ�С�
-			///
-			void Join();
-
-			ThreadState GetState();
-
-			///
-			/// �߼�������߳�״̬��
-			///     1: Idle�����У����̴߳������Ĭ��״̬��������ʱ��������Start��
-			///     2: Running�����У����ں˶����´������Ѿ������ں˵����У�����������Task��
-			///     3: Paused����ͣ������Ȼ�������ں��У����������˶�����Ĵ������߼�����ͣ��
-			///     4: Stopped��ֹͣ������Ȼ�������ں��У������Ѿ��޷�������������
-			/// 
-			bool IsIdle();
-			bool IsRunning();
-			bool IsPaused(); 
-			bool IsStopped();
-
-			bool IsCurrent();
-
-			///
-			/// ִ��������С�
-			///
-			void Process();
-
-			const std::string& GetName();
-
-			///
-			/// �ص���
-			///
-			void Post();
-
-			///
-			/// ���ߺ���
-			///
-			void Sleep(uint ms);
-
-			///
-			/// ��������ʱ��
-			///
-			void SetSleepTime(uint ms);
-
-		private:
-
-			//----------------------------------------------------------------------------//
-
-			LUAX_DECL_ENUM(ThreadType);
-			LUAX_DECL_ENUM(ThreadState);
-
-			LUAX_DECL_METHOD(_New);
-			LUAX_DECL_METHOD(_AddTask);
-			LUAX_DECL_METHOD(_Start);
-			LUAX_DECL_METHOD(_Idle);
-			LUAX_DECL_METHOD(_Pause);
-			LUAX_DECL_METHOD(_Resume);
-			LUAX_DECL_METHOD(_Stop);
-			LUAX_DECL_METHOD(_Join);
-			LUAX_DECL_METHOD(_IsRunning);
-			LUAX_DECL_METHOD(_IsPaused);
-			LUAX_DECL_METHOD(_IsStopped);
-			LUAX_DECL_METHOD(_IsCurrent);
-			LUAX_DECL_METHOD(_Sleep);
-			LUAX_DECL_METHOD(_Post);
-			LUAX_DECL_METHOD(_GetName);
-			LUAX_DECL_METHOD(_GetType);
-			LUAX_DECL_METHOD(_GetState);
-			LUAX_DECL_METHOD(_SetSleepTime);
-
-			//----------------------------------------------------------------------------//
-
-			///
-			/// �˴������Ƿ����ػ�ģʽ��
-			///
-			bool mIsDaemon;
-
-			lua_State*  mLuaThread;
-
-			ThreadImpl* mImpl;
-			std::string mName;
-			ThreadType  mType;
-			uint        mSleepTime;
-
-			ThreadState mState;
-			Mutex       mStateMutex;
-
-			///
-			/// ͬ��������ص��ź���
-			///
-			Semaphore mSemPause;
-			Semaphore mSemResume;
-			Semaphore mSemStop;
-
-			///
-			/// ���������������
-			///
-			std::queue<Task*> mTaskQueue;
-			Mutex             mTaskQueueMutex;
-
-			/// 
-			/// �ӳ�ģʽʹ��
-			///
-			std::queue<Task*> mFinishedTasks;
-			Mutex             mFinishedMutex;
-
-			///
-			/// ����ģʽʹ�ã��ص�ʹ�õ�lua�߳�
-			///
-			lua_State*          mCallbackThread;
-			Luax::LuaxMemberRef mCallbackThreadRef;
-
-		};
-
-		///
-		/// �̵߳ľ���ʵ�֣����û���͸���ģ�һ��׼�������ֲ��ԣ�
-		///     1: win32 
-		///     2: posix
-		///     3: SDL 
-		///     4: std::thread
-		///
-		ASURA_ABSTRACT class ThreadImpl
-		{
-		public:
-			ThreadImpl() {};
-			virtual ~ThreadImpl() {};
-
-			virtual bool Start(Thread* thread, uint32 stacksize = 0) = 0;
-			virtual void Join() = 0;
-			virtual void Kill() = 0;
-
-			virtual void Sleep(uint ms) = 0;
-
-			virtual bool IsRunning() = 0;
-			virtual bool IsCurrent() = 0;
-
-		};
-
-	}
-}
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_posix.cpp b/source/libs/asura-lib-utils/threading/thread_impl_posix.cpp
deleted file mode 100644
index d2ad7af..0000000
--- a/source/libs/asura-lib-utils/threading/thread_impl_posix.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "thread_impl_posix.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-		
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_posix.h b/source/libs/asura-lib-utils/threading/thread_impl_posix.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_sdl.cpp b/source/libs/asura-lib-utils/threading/thread_impl_sdl.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_sdl.h b/source/libs/asura-lib-utils/threading/thread_impl_sdl.h
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_std.cpp b/source/libs/asura-lib-utils/threading/thread_impl_std.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_std.h b/source/libs/asura-lib-utils/threading/thread_impl_std.h
deleted file mode 100644
index 0e7d3da..0000000
--- a/source/libs/asura-lib-utils/threading/thread_impl_std.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef __ASURA_THREAD_STD_H__
-#define __ASURA_THREAD_STD_H__
-
-#include "../utils_config.h"
-
-#if ASURA_THREAD_STD
-
-#include <windows.h>
-
-#include "thread.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// Thread��std::threadʵ�֡�
-		///
-		class ThreadImplSTD : public ThreadImpl
-		{
-		public:
-
-			ThreadImplSTD();
-			~ThreadImplSTD();
-
-			bool Start(Thread* thread, uint32 stacksize) override;
-			void Join() override;
-			void Kill() override;
-
-			bool IsRunning() override;
-			bool IsCurrent() override;
-
-		private:
-
-		};
-
-	}
-}
-
-#endif // #if ASURA_THREAD_STD
-
-#endif // __ASURA_THREAD_STD_H__
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp b/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp
deleted file mode 100644
index 6871c2d..0000000
--- a/source/libs/asura-lib-utils/threading/thread_impl_win32.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "thread_impl_win32.h"
-#include "thread.h"
-
-#include <iostream>
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		static DWORD WINAPI _thread_win32_runner(LPVOID param)
-		{
-			Thread* thread = (Thread*)param;
-			thread->Process();
-			return 0;
-		}
-
-		ThreadImplWin32::ThreadImplWin32()
-		{
-		}
-
-		ThreadImplWin32::~ThreadImplWin32()
-		{
-			if (!mHandle) return;
-			::CloseHandle(mHandle);
-			mHandle = 0;
-		}
-
-		bool ThreadImplWin32::Start(Thread* thread, uint32 stacksize/*=0*/)
-		{
-			assert(!IsRunning());
-			mHandle = ::CreateThread(
-				NULL
-				, stacksize
-				, _thread_win32_runner
-				, thread
-				, 0 /*���������������*/
-			  , NULL);
-
-			return mHandle;
-		}
-
-		void ThreadImplWin32::Join()
-		{
-			// ���̵߳ȴ����̷߳���
-			::WaitForSingleObject(mHandle, INFINITE);
-		}
-
-		void ThreadImplWin32::Kill()
-		{
-			::TerminateThread(mHandle, FALSE);
-		}
-
-		void ThreadImplWin32::Sleep(uint ms)
-		{
-			::Sleep(ms);
-		}
-
-		bool ThreadImplWin32::IsRunning()
-		{
-			if (mHandle) {
-				DWORD exitCode = 0;
-				// https://blog.csdn.net/yuanmeng567/article/details/19485719
-				::GetExitCodeThread(mHandle, &exitCode);
-				return exitCode == STILL_ACTIVE;
-			}
-			return false;
-		}
-
-		bool ThreadImplWin32::IsCurrent()
-		{
-			return mHandle == ::GetCurrentThread();
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/thread_impl_win32.h b/source/libs/asura-lib-utils/threading/thread_impl_win32.h
deleted file mode 100644
index a22aeef..0000000
--- a/source/libs/asura-lib-utils/threading/thread_impl_win32.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef __ASURA_THREAD_WIN32_H__
-#define __ASURA_THREAD_WIN32_H__
-
-#include "../utils_config.h"
-
-#if ASURA_THREAD_WIN32
-
-#include <windows.h>
-
-#include "thread.h"
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// Thread��win32ʵ�֡�
-		///
-		class ThreadImplWin32 : public ThreadImpl
-		{
-		public:
-
-			ThreadImplWin32();
-			~ThreadImplWin32();
-
-			bool Start(Thread* thread, uint32 stacksize) override;
-			void Join() override;
-			void Kill() override;
-
-			void Sleep(uint ms) override;
-
-			bool IsRunning() override;
-			bool IsCurrent() override;
-
-		private:
-
-			HANDLE mHandle;
-
-		};
-
-	}
-}
-
-#endif // #if ASURA_THREAD_WIN32
-
-#endif // __ASURA_THREAD_WIN32_H__
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/threading/thread_task.cpp b/source/libs/asura-lib-utils/threading/thread_task.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/source/libs/asura-lib-utils/threading/thread_task.h b/source/libs/asura-lib-utils/threading/thread_task.h
deleted file mode 100644
index 1ea0a1a..0000000
--- a/source/libs/asura-lib-utils/threading/thread_task.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef __ASURA_THRAD_TASK_H__
-#define __ASURA_THRAD_TASK_H__
-
-#include <asura-lib-utils/type.h>
-#include <asura-lib-utils/scripting/portable.hpp>
-
-namespace AsuraEngine
-{
-	namespace Threading
-	{
-
-		///
-		/// ϣ��������һ���̴߳��������񣬼̳�Task����дExecute������
-		///
-		ASURA_ABSTRACT class ThreadTask 
-			: virtual public AEScripting::NativeAccessor
-		{
-		public:
-
-			ThreadTask(); 
-			virtual ~ThreadTask();
-
-			///
-			/// ִ��������ɺ󷵻�true�����ûص�������
-			///
-			virtual bool Execute() = 0;
-
-			///
-			/// ���ûص���
-			///
-			virtual void Invoke() = 0;
-
-		protected: 
-
-			Luax::LuaxMemberRef mCallback;
-
-		};
-
-	}
-}
-
-namespace AEThreading = AsuraEngine::Threading;
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/type.h b/source/libs/asura-lib-utils/type.h
deleted file mode 100644
index 1ed2d42..0000000
--- a/source/libs/asura-lib-utils/type.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef __ASURA_UTILS_TYPE_H__
-#define __ASURA_UTILS_TYPE_H__
-
-#include <cstdlib>
-#include <stdint.h>
-
-namespace AsuraEngine
-{
-
-	//--------------------------------------------------------------------------------//
-
-	typedef int8_t   int8;
-	typedef uint8_t  uint8;
-	//typedef uint8	   byte;
-	typedef char	   byte;
-	typedef int16_t  int16;
-	typedef uint16_t uint16;
-	typedef int32_t  int32;
-	typedef uint32_t uint32;
-	typedef int64_t  int64;
-	typedef uint64_t uint64;
-
-	typedef uint32_t uint;
-	typedef int32_t  sint;
-
-	typedef std::size_t size_t;
-
-	typedef const char cc8;
-
-	//--------------------------------------------------------------------------------//
-
-#ifndef ASSERT
-	#ifdef NDEBUG
-		#define ASSERT(x) { false ? (void)(x) : (void)0; }
-	#else
-		#ifdef _WIN32
-			#define ASURA_DEBUG_BREAK() __debugbreak()
-		#else
-			#define ASURA_DEBUG_BREAK()  raise(SIGTRAP) 
-		#endif
-		#define ASSERT(x) do { const volatile bool asura_assert_b____ = !(x); if(asura_assert_b____) ASURA_DEBUG_BREAK(); } while (false)
-	#endif
-#endif
-
-	//--------------------------------------------------------------------------------//
-
-#ifdef _WIN32
-	#define ASURA_FINAL final
-	#define ASURA_LIBRARY_EXPORT __declspec(dllexport)
-	#define ASURA_LIBRARY_IMPORT __declspec(dllimport)
-	#define ASURA_FORCE_INLINE __forceinline
-	#define ASURA_RESTRICT __restrict
-	#define ASURA_ATTRIBUTE_USED	
-	#define ASURA_ABSTRACT
-	#define ASURA_API ASURA_LIBRARY_EXPORT
-
-	#define ASURA_WINDOWS 1
-#else 
-	#define  ASURA_FINAL final
-	#define ASURA_LIBRARY_EXPORT __attribute__((visibility("default")))
-	#define ASURA_LIBRARY_IMPORT 
-	#define ASURA_FORCE_INLINE __attribute__((always_inline)) inline
-	#define ASURA_RESTRICT __restrict__
-	#define ASURA_ATTRIBUTE_USED __attribute__((used))
-	#define ASURA_ABSTRACT
-	#define ASURA_API ASURA_LIBRARY_EXPORT
-#endif
-
-	///
-	/// �������������
-	///
-#define ASURA_OUT
-#define ASURA_REF
-	///
-	/// �����ƶ�ָ������Ȩ
-	///
-#define ASURA_MOVE
-	
-	//--------------------------------------------------------------------------------//
-	
-#define ASURA_SDL_HOST 1
-
-} // namespace AsuraEngine
-
-#endif // __ASURA_CONFIG_H__
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/utils.h b/source/libs/asura-lib-utils/utils.h
deleted file mode 100644
index ce1c6a1..0000000
--- a/source/libs/asura-lib-utils/utils.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef __ASURA_UTILS_H__
-#define __ASURA_UTILS_H__
-
-#include "utils_module.h"
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/utils_config.h b/source/libs/asura-lib-utils/utils_config.h
deleted file mode 100644
index 02837dc..0000000
--- a/source/libs/asura-lib-utils/utils_config.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef __ASURA_UTILS_CONFIG_H__
-#define __ASURA_UTILS_CONFIG_H__
-
-#define ASURA_THREAD_WIN32 1
-#define ASURA_THREAD_STD 1
-
-#define ASURA_MUTEX_WIN32_CRITICLE_SECTION 1
-#define ASURA_MUTEX_WIN32_KERNAL_MUTEX     1
-
-#endif
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/utils_module.cpp b/source/libs/asura-lib-utils/utils_module.cpp
deleted file mode 100644
index 61780e6..0000000
--- a/source/libs/asura-lib-utils/utils_module.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "utils_module.h"
-
-using namespace AsuraEngine::IO;
-using namespace AsuraEngine::Threading;
-
-namespace AsuraEngine
-{
-
-	void UtilsModule::Initialize(Luax::LuaxState& state)
-	{
-		// IO 
-		LUAX_REGISTER_SINGLETON(state, Filesystem);
-		LUAX_REGISTER_FACTORY(state, DataBuffer);
-		LUAX_REGISTER_FACTORY(state, FileData);
-		LUAX_REGISTER_FACTORY(state, File);
-		LUAX_REGISTER_FACTORY(state, IOTask);
-		// Threading
-		LUAX_REGISTER_FACTORY(state, Thread);
-	}
-
-	void UtilsModule::Finalize(Luax::LuaxState& state)
-	{
-	}
-
-}
\ No newline at end of file
diff --git a/source/libs/asura-lib-utils/utils_module.h b/source/libs/asura-lib-utils/utils_module.h
deleted file mode 100644
index e802730..0000000
--- a/source/libs/asura-lib-utils/utils_module.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __ASURA_LIBS_UTIL_MODULE_H__
-#define __ASURA_LIBS_UTIL_MODULE_H__
-
-#include "io/file_system.h"
-#include "io/data_buffer.h"
-#include "io/file_data.h"
-#include "io/file.h"
-#include "io/io_task.h"
-
-#include "threading/thread.h"
-
-#include "module.h"
-
-namespace AsuraEngine
-{
-
-	///
-	/// Asura�����
-	///
-	class UtilsModule ASURA_FINAL : public Module
-	{
-	public:
-
-		void Initialize(Luax::LuaxState& state) override; 
-
-		void Finalize(Luax::LuaxState& state) override;
-		
-	};
-
-}
-
-#endif
\ No newline at end of file
-- 
cgit v1.1-26-g67d0