From 2f8e6dbb30fa4492dde6b23ed5ee869ce65dbcd1 Mon Sep 17 00:00:00 2001
From: Marc-Eric Martel <1205697@etu.cegepsth.qc.ca>
Date: Fri, 24 Sep 2021 10:15:43 -0400
Subject: [PATCH] =?UTF-8?q?D=C3=A9but=20TP2=20+=20Handling=20des=20=C3=A9v?=
=?UTF-8?q?=C3=A9nements=20de=20touches=20de=20mouvement?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
SQCSim2021.sln | 29 +-
SQCSim2021/SQCSim2021.vcxproj | 160 ----
SQCSim2021/SQCSim2021.vcxproj.filters | 51 --
SQCSim2021/blockarray3d.cpp | 26 -
SQCSim2021/blockarray3d.h | 24 -
SQCSim2021/blockinfo.cpp | 13 -
SQCSim2021/blockinfo.h | 23 -
SQCSim2021/chunk.cpp | 13 -
SQCSim2021/chunk.h | 20 -
SQCSim2021/define.h | 17 -
SQCSim2021/main.cpp | 64 --
SQCSim2021/main.h | 11 -
mcclone/Makefile | 64 ++
mcclone/blockarray3d.cpp | 41 +
mcclone/blockarray3d.h | 26 +
mcclone/blockinfo.cpp | 34 +
mcclone/blockinfo.h | 27 +
mcclone/chunk.cpp | 25 +
mcclone/chunk.h | 16 +
mcclone/define.h | 25 +
mcclone/engine.cpp | 189 +++++
mcclone/engine.h | 37 +
mcclone/external/devil178/include/IL/config.h | 140 ++++
.../external/devil178/include/IL/config.h.win | 79 ++
.../include/IL/devil_internal_exports.h | 161 ++++
mcclone/external/devil178/include/IL/il.h | 644 +++++++++++++++
.../external/devil178/include/IL/il_wrap.h | 205 +++++
mcclone/external/devil178/include/IL/ilu.h | 195 +++++
.../external/devil178/include/IL/ilu_region.h | 25 +
mcclone/external/devil178/include/IL/ilut.h | 390 +++++++++
.../devil178/include/IL/ilut_config.h | 26 +
mcclone/external/devil178/lib/DevIL.dll | Bin 0 -> 764416 bytes
mcclone/external/devil178/lib/DevIL.lib | Bin 0 -> 30802 bytes
mcclone/external/devil178/lib/ILU.dll | Bin 0 -> 28672 bytes
mcclone/external/devil178/lib/ILU.lib | Bin 0 -> 11630 bytes
mcclone/external/devil178/lib/ILUT.dll | Bin 0 -> 17408 bytes
mcclone/external/devil178/lib/ILUT.lib | Bin 0 -> 10564 bytes
.../external/devil178/lib/unicode/DevIL.dll | Bin 0 -> 764416 bytes
.../external/devil178/lib/unicode/DevIL.lib | Bin 0 -> 30802 bytes
mcclone/external/devil178/lib/unicode/ILU.dll | Bin 0 -> 29184 bytes
mcclone/external/devil178/lib/unicode/ILU.lib | Bin 0 -> 11630 bytes
.../external/devil178/lib/unicode/ILUT.dll | Bin 0 -> 17408 bytes
.../external/devil178/lib/unicode/ILUT.lib | Bin 0 -> 10564 bytes
.../external/sfml23/include/SFML/Audio.hpp | 56 ++
.../sfml23/include/SFML/Audio/AlResource.hpp | 70 ++
.../sfml23/include/SFML/Audio/Export.hpp | 48 ++
.../include/SFML/Audio/InputSoundFile.hpp | 250 ++++++
.../sfml23/include/SFML/Audio/Listener.hpp | 234 ++++++
.../sfml23/include/SFML/Audio/Music.hpp | 229 ++++++
.../include/SFML/Audio/OutputSoundFile.hpp | 133 +++
.../sfml23/include/SFML/Audio/Sound.hpp | 264 ++++++
.../sfml23/include/SFML/Audio/SoundBuffer.hpp | 352 ++++++++
.../SFML/Audio/SoundBufferRecorder.hpp | 138 ++++
.../include/SFML/Audio/SoundFileFactory.hpp | 197 +++++
.../include/SFML/Audio/SoundFileFactory.inl | 100 +++
.../include/SFML/Audio/SoundFileReader.hpp | 161 ++++
.../include/SFML/Audio/SoundFileWriter.hpp | 125 +++
.../include/SFML/Audio/SoundRecorder.hpp | 364 +++++++++
.../sfml23/include/SFML/Audio/SoundSource.hpp | 287 +++++++
.../sfml23/include/SFML/Audio/SoundStream.hpp | 386 +++++++++
.../external/sfml23/include/SFML/Config.hpp | 193 +++++
.../external/sfml23/include/SFML/Graphics.hpp | 67 ++
.../include/SFML/Graphics/BlendMode.hpp | 214 +++++
.../include/SFML/Graphics/CircleShape.hpp | 154 ++++
.../sfml23/include/SFML/Graphics/Color.hpp | 275 +++++++
.../include/SFML/Graphics/ConvexShape.hpp | 153 ++++
.../sfml23/include/SFML/Graphics/Drawable.hpp | 126 +++
.../sfml23/include/SFML/Graphics/Export.hpp | 48 ++
.../sfml23/include/SFML/Graphics/Font.hpp | 433 ++++++++++
.../sfml23/include/SFML/Graphics/Glyph.hpp | 79 ++
.../sfml23/include/SFML/Graphics/Image.hpp | 327 ++++++++
.../include/SFML/Graphics/PrimitiveType.hpp | 53 ++
.../sfml23/include/SFML/Graphics/Rect.hpp | 248 ++++++
.../sfml23/include/SFML/Graphics/Rect.inl | 159 ++++
.../include/SFML/Graphics/RectangleShape.hpp | 132 +++
.../include/SFML/Graphics/RenderStates.hpp | 174 ++++
.../include/SFML/Graphics/RenderTarget.hpp | 451 +++++++++++
.../include/SFML/Graphics/RenderTexture.hpp | 280 +++++++
.../include/SFML/Graphics/RenderWindow.hpp | 267 ++++++
.../sfml23/include/SFML/Graphics/Shader.hpp | 659 +++++++++++++++
.../sfml23/include/SFML/Graphics/Shape.hpp | 355 ++++++++
.../sfml23/include/SFML/Graphics/Sprite.hpp | 279 +++++++
.../sfml23/include/SFML/Graphics/Text.hpp | 372 +++++++++
.../sfml23/include/SFML/Graphics/Texture.hpp | 618 ++++++++++++++
.../include/SFML/Graphics/Transform.hpp | 450 +++++++++++
.../include/SFML/Graphics/Transformable.hpp | 429 ++++++++++
.../sfml23/include/SFML/Graphics/Vertex.hpp | 148 ++++
.../include/SFML/Graphics/VertexArray.hpp | 223 +++++
.../sfml23/include/SFML/Graphics/View.hpp | 343 ++++++++
mcclone/external/sfml23/include/SFML/Main.hpp | 43 +
.../external/sfml23/include/SFML/Network.hpp | 53 ++
.../sfml23/include/SFML/Network/Export.hpp | 48 ++
.../sfml23/include/SFML/Network/Ftp.hpp | 611 ++++++++++++++
.../sfml23/include/SFML/Network/Http.hpp | 482 +++++++++++
.../sfml23/include/SFML/Network/IpAddress.hpp | 316 ++++++++
.../sfml23/include/SFML/Network/Packet.hpp | 412 ++++++++++
.../sfml23/include/SFML/Network/Socket.hpp | 219 +++++
.../include/SFML/Network/SocketHandle.hpp | 57 ++
.../include/SFML/Network/SocketSelector.hpp | 263 ++++++
.../include/SFML/Network/TcpListener.hpp | 162 ++++
.../sfml23/include/SFML/Network/TcpSocket.hpp | 315 ++++++++
.../sfml23/include/SFML/Network/UdpSocket.hpp | 283 +++++++
.../external/sfml23/include/SFML/OpenGL.hpp | 74 ++
.../external/sfml23/include/SFML/System.hpp | 60 ++
.../sfml23/include/SFML/System/Clock.hpp | 117 +++
.../sfml23/include/SFML/System/Err.hpp | 80 ++
.../sfml23/include/SFML/System/Export.hpp | 48 ++
.../include/SFML/System/FileInputStream.hpp | 169 ++++
.../include/SFML/System/InputStream.hpp | 152 ++++
.../sfml23/include/SFML/System/Lock.hpp | 139 ++++
.../include/SFML/System/MemoryInputStream.hpp | 148 ++++
.../sfml23/include/SFML/System/Mutex.hpp | 148 ++++
.../include/SFML/System/NonCopyable.hpp | 119 +++
.../sfml23/include/SFML/System/Sleep.hpp | 52 ++
.../sfml23/include/SFML/System/String.hpp | 668 +++++++++++++++
.../sfml23/include/SFML/System/String.inl | 53 ++
.../sfml23/include/SFML/System/Thread.hpp | 282 +++++++
.../sfml23/include/SFML/System/Thread.inl | 90 +++
.../include/SFML/System/ThreadLocal.hpp | 103 +++
.../include/SFML/System/ThreadLocalPtr.hpp | 158 ++++
.../include/SFML/System/ThreadLocalPtr.inl | 77 ++
.../sfml23/include/SFML/System/Time.hpp | 488 +++++++++++
.../sfml23/include/SFML/System/Utf.hpp | 763 ++++++++++++++++++
.../sfml23/include/SFML/System/Utf.inl | 752 +++++++++++++++++
.../sfml23/include/SFML/System/Vector2.hpp | 301 +++++++
.../sfml23/include/SFML/System/Vector2.inl | 161 ++++
.../sfml23/include/SFML/System/Vector3.hpp | 302 +++++++
.../sfml23/include/SFML/System/Vector3.inl | 168 ++++
.../external/sfml23/include/SFML/Window.hpp | 56 ++
.../sfml23/include/SFML/Window/Context.hpp | 151 ++++
.../include/SFML/Window/ContextSettings.hpp | 145 ++++
.../sfml23/include/SFML/Window/Event.hpp | 284 +++++++
.../sfml23/include/SFML/Window/Export.hpp | 48 ++
.../sfml23/include/SFML/Window/GlResource.hpp | 76 ++
.../sfml23/include/SFML/Window/Joystick.hpp | 227 ++++++
.../sfml23/include/SFML/Window/Keyboard.hpp | 224 +++++
.../sfml23/include/SFML/Window/Mouse.hpp | 177 ++++
.../sfml23/include/SFML/Window/Sensor.hpp | 150 ++++
.../sfml23/include/SFML/Window/Touch.hpp | 137 ++++
.../sfml23/include/SFML/Window/VideoMode.hpp | 228 ++++++
.../sfml23/include/SFML/Window/Window.hpp | 585 ++++++++++++++
.../include/SFML/Window/WindowHandle.hpp | 74 ++
.../include/SFML/Window/WindowStyle.hpp | 53 ++
mcclone/external/sfml23/lib/flac.lib | Bin 0 -> 512458 bytes
mcclone/external/sfml23/lib/freetype.lib | Bin 0 -> 858580 bytes
mcclone/external/sfml23/lib/jpeg.lib | Bin 0 -> 354754 bytes
mcclone/external/sfml23/lib/ogg.lib | Bin 0 -> 22794 bytes
mcclone/external/sfml23/lib/openal32.lib | Bin 0 -> 32366 bytes
mcclone/external/sfml23/lib/sfml-audio-d.lib | Bin 0 -> 55936 bytes
.../external/sfml23/lib/sfml-audio-s-d.lib | Bin 0 -> 3637600 bytes
mcclone/external/sfml23/lib/sfml-audio-s.lib | Bin 0 -> 1208582 bytes
mcclone/external/sfml23/lib/sfml-audio.lib | Bin 0 -> 55596 bytes
.../external/sfml23/lib/sfml-graphics-d.lib | Bin 0 -> 128968 bytes
.../external/sfml23/lib/sfml-graphics-s-d.lib | Bin 0 -> 4893600 bytes
.../external/sfml23/lib/sfml-graphics-s.lib | Bin 0 -> 1877020 bytes
mcclone/external/sfml23/lib/sfml-graphics.lib | Bin 0 -> 128172 bytes
mcclone/external/sfml23/lib/sfml-main-d.lib | Bin 0 -> 18176 bytes
mcclone/external/sfml23/lib/sfml-main.lib | Bin 0 -> 1170 bytes
.../external/sfml23/lib/sfml-network-d.lib | Bin 0 -> 71842 bytes
.../external/sfml23/lib/sfml-network-s-d.lib | Bin 0 -> 3062186 bytes
.../external/sfml23/lib/sfml-network-s.lib | Bin 0 -> 1187608 bytes
mcclone/external/sfml23/lib/sfml-network.lib | Bin 0 -> 71436 bytes
mcclone/external/sfml23/lib/sfml-system-d.lib | Bin 0 -> 41816 bytes
.../external/sfml23/lib/sfml-system-s-d.lib | Bin 0 -> 1197778 bytes
mcclone/external/sfml23/lib/sfml-system-s.lib | Bin 0 -> 408504 bytes
mcclone/external/sfml23/lib/sfml-system.lib | Bin 0 -> 41534 bytes
mcclone/external/sfml23/lib/sfml-window-d.lib | Bin 0 -> 31084 bytes
.../external/sfml23/lib/sfml-window-s-d.lib | Bin 0 -> 2418960 bytes
mcclone/external/sfml23/lib/sfml-window-s.lib | Bin 0 -> 824300 bytes
mcclone/external/sfml23/lib/sfml-window.lib | Bin 0 -> 30878 bytes
mcclone/external/sfml23/lib/vorbis.lib | Bin 0 -> 852828 bytes
mcclone/external/sfml23/lib/vorbisenc.lib | Bin 0 -> 643788 bytes
mcclone/external/sfml23/lib/vorbisfile.lib | Bin 0 -> 34544 bytes
mcclone/main.cpp | 9 +
mcclone/matrix4.h | 571 +++++++++++++
mcclone/mcclone.vcxproj | 114 +++
mcclone/mcclone.vcxproj.filters | 74 ++
mcclone/media/textures/checker.png | Bin 0 -> 7538 bytes
mcclone/notes.txt | 5 +
mcclone/openglcontext.cpp | 172 ++++
mcclone/openglcontext.h | 68 ++
mcclone/texture.cpp | 64 ++
mcclone/texture.h | 23 +
mcclone/transformation.cpp | 63 ++
mcclone/transformation.h | 35 +
mcclone/vector3.h | 219 +++++
186 files changed, 26429 insertions(+), 442 deletions(-)
delete mode 100644 SQCSim2021/SQCSim2021.vcxproj
delete mode 100644 SQCSim2021/SQCSim2021.vcxproj.filters
delete mode 100644 SQCSim2021/blockarray3d.cpp
delete mode 100644 SQCSim2021/blockarray3d.h
delete mode 100644 SQCSim2021/blockinfo.cpp
delete mode 100644 SQCSim2021/blockinfo.h
delete mode 100644 SQCSim2021/chunk.cpp
delete mode 100644 SQCSim2021/chunk.h
delete mode 100644 SQCSim2021/define.h
delete mode 100644 SQCSim2021/main.cpp
delete mode 100644 SQCSim2021/main.h
create mode 100644 mcclone/Makefile
create mode 100644 mcclone/blockarray3d.cpp
create mode 100644 mcclone/blockarray3d.h
create mode 100644 mcclone/blockinfo.cpp
create mode 100644 mcclone/blockinfo.h
create mode 100644 mcclone/chunk.cpp
create mode 100644 mcclone/chunk.h
create mode 100644 mcclone/define.h
create mode 100644 mcclone/engine.cpp
create mode 100644 mcclone/engine.h
create mode 100644 mcclone/external/devil178/include/IL/config.h
create mode 100644 mcclone/external/devil178/include/IL/config.h.win
create mode 100644 mcclone/external/devil178/include/IL/devil_internal_exports.h
create mode 100644 mcclone/external/devil178/include/IL/il.h
create mode 100644 mcclone/external/devil178/include/IL/il_wrap.h
create mode 100644 mcclone/external/devil178/include/IL/ilu.h
create mode 100644 mcclone/external/devil178/include/IL/ilu_region.h
create mode 100644 mcclone/external/devil178/include/IL/ilut.h
create mode 100644 mcclone/external/devil178/include/IL/ilut_config.h
create mode 100644 mcclone/external/devil178/lib/DevIL.dll
create mode 100644 mcclone/external/devil178/lib/DevIL.lib
create mode 100644 mcclone/external/devil178/lib/ILU.dll
create mode 100644 mcclone/external/devil178/lib/ILU.lib
create mode 100644 mcclone/external/devil178/lib/ILUT.dll
create mode 100644 mcclone/external/devil178/lib/ILUT.lib
create mode 100644 mcclone/external/devil178/lib/unicode/DevIL.dll
create mode 100644 mcclone/external/devil178/lib/unicode/DevIL.lib
create mode 100644 mcclone/external/devil178/lib/unicode/ILU.dll
create mode 100644 mcclone/external/devil178/lib/unicode/ILU.lib
create mode 100644 mcclone/external/devil178/lib/unicode/ILUT.dll
create mode 100644 mcclone/external/devil178/lib/unicode/ILUT.lib
create mode 100644 mcclone/external/sfml23/include/SFML/Audio.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/AlResource.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Export.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/InputSoundFile.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Listener.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Music.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/OutputSoundFile.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Sound.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundBuffer.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundBufferRecorder.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.inl
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileReader.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileWriter.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundRecorder.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundSource.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundStream.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Config.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/BlendMode.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/CircleShape.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Color.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/ConvexShape.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Drawable.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Export.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Font.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Glyph.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Image.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/PrimitiveType.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Rect.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Rect.inl
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RectangleShape.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderStates.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderTarget.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderTexture.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderWindow.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Shader.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Shape.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Sprite.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Text.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Texture.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Transform.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Transformable.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Vertex.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/VertexArray.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/View.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Main.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/Export.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/Ftp.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/Http.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/IpAddress.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/Packet.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/Socket.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/SocketHandle.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/SocketSelector.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/TcpListener.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/TcpSocket.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Network/UdpSocket.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/OpenGL.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Clock.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Err.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Export.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/FileInputStream.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/InputStream.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Lock.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/MemoryInputStream.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Mutex.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/NonCopyable.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Sleep.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/String.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/String.inl
create mode 100644 mcclone/external/sfml23/include/SFML/System/Thread.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Thread.inl
create mode 100644 mcclone/external/sfml23/include/SFML/System/ThreadLocal.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.inl
create mode 100644 mcclone/external/sfml23/include/SFML/System/Time.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Utf.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Utf.inl
create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector2.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector2.inl
create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector3.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector3.inl
create mode 100644 mcclone/external/sfml23/include/SFML/Window.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Context.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/ContextSettings.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Event.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Export.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/GlResource.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Joystick.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Keyboard.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Mouse.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Sensor.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Touch.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/VideoMode.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/Window.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/WindowHandle.hpp
create mode 100644 mcclone/external/sfml23/include/SFML/Window/WindowStyle.hpp
create mode 100644 mcclone/external/sfml23/lib/flac.lib
create mode 100644 mcclone/external/sfml23/lib/freetype.lib
create mode 100644 mcclone/external/sfml23/lib/jpeg.lib
create mode 100644 mcclone/external/sfml23/lib/ogg.lib
create mode 100644 mcclone/external/sfml23/lib/openal32.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-audio-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-audio-s-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-audio-s.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-audio.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-graphics-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-graphics-s-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-graphics-s.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-graphics.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-main-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-main.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-network-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-network-s-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-network-s.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-network.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-system-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-system-s-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-system-s.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-system.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-window-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-window-s-d.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-window-s.lib
create mode 100644 mcclone/external/sfml23/lib/sfml-window.lib
create mode 100644 mcclone/external/sfml23/lib/vorbis.lib
create mode 100644 mcclone/external/sfml23/lib/vorbisenc.lib
create mode 100644 mcclone/external/sfml23/lib/vorbisfile.lib
create mode 100644 mcclone/main.cpp
create mode 100644 mcclone/matrix4.h
create mode 100644 mcclone/mcclone.vcxproj
create mode 100644 mcclone/mcclone.vcxproj.filters
create mode 100644 mcclone/media/textures/checker.png
create mode 100644 mcclone/notes.txt
create mode 100644 mcclone/openglcontext.cpp
create mode 100644 mcclone/openglcontext.h
create mode 100644 mcclone/texture.cpp
create mode 100644 mcclone/texture.h
create mode 100644 mcclone/transformation.cpp
create mode 100644 mcclone/transformation.h
create mode 100644 mcclone/vector3.h
diff --git a/SQCSim2021.sln b/SQCSim2021.sln
index a4beb16..13eae87 100644
--- a/SQCSim2021.sln
+++ b/SQCSim2021.sln
@@ -1,31 +1,20 @@

-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31624.102
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SQCSim2021", "SQCSim2021\SQCSim2021.vcxproj", "{90AE3964-E572-47EC-A7FB-B550481DC822}"
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mcclone", "mcclone\mcclone.vcxproj", "{A21FD938-1FEA-4687-AB86-0EABAC30877B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|x64 = Release|x64
- Release|x86 = Release|x86
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x64.ActiveCfg = Debug|x64
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x64.Build.0 = Debug|x64
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x86.ActiveCfg = Debug|Win32
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x86.Build.0 = Debug|Win32
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x64.ActiveCfg = Release|x64
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x64.Build.0 = Release|x64
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x86.ActiveCfg = Release|Win32
- {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x86.Build.0 = Release|Win32
+ {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Debug|Win32.Build.0 = Debug|Win32
+ {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Release|Win32.ActiveCfg = Release|Win32
+ {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {422CB8A4-C8D4-44CC-9478-D867DE3AFFDA}
- EndGlobalSection
EndGlobal
diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj
deleted file mode 100644
index 35d96b4..0000000
--- a/SQCSim2021/SQCSim2021.vcxproj
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
-
- 16.0
- Win32Proj
- {90ae3964-e572-47ec-a7fb-b550481dc822}
- SQCSim2021
- 10.0
-
-
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- false
-
-
- true
-
-
- false
-
-
-
- Level3
- true
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
- Level3
- true
- _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters
deleted file mode 100644
index f06cd67..0000000
--- a/SQCSim2021/SQCSim2021.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
-
-
-
-
\ No newline at end of file
diff --git a/SQCSim2021/blockarray3d.cpp b/SQCSim2021/blockarray3d.cpp
deleted file mode 100644
index 78b866a..0000000
--- a/SQCSim2021/blockarray3d.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "blockarray3d.h"
-
-BlockArray3d::BlockArray3d(int x, int y, int z) : m_x(x), m_y(y), m_z(z) {
- m_blocks = new BlockType[x * y * z];
- Reset(BTYPE_AIR);
-}
-
-BlockArray3d::BlockArray3d(BlockArray3d& ba) : m_x(ba.m_x), m_y(ba.m_y), m_z(ba.m_z) {
- m_blocks = new BlockType[ba.m_x*ba.m_y*ba.m_z];
-
- for (int index = 0; index < (m_x * m_y * m_z); ++index)
- m_blocks[index] = ba.m_blocks[index];
-}
-
-BlockArray3d::~BlockArray3d() { delete[] m_blocks; }
-
-void BlockArray3d::Set(int x, int y, int z, BlockType type) { m_blocks[GetPosition(x, y, z)] = type; }
-
-BlockType BlockArray3d::Get(int x, int y, int z) const { return m_blocks[GetPosition(x, y, z)]; }
-
-void BlockArray3d::Reset(BlockType type) {
- for (int index = 0; index < (m_x * m_y * m_z); ++index)
- m_blocks[index] = type;
-}
-
-int BlockArray3d::GetPosition(int x, int y, int z) const { return x + (z * m_x) + (y * m_z * m_x); }
diff --git a/SQCSim2021/blockarray3d.h b/SQCSim2021/blockarray3d.h
deleted file mode 100644
index f169cf2..0000000
--- a/SQCSim2021/blockarray3d.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef BLOCKARRAY3D_H__
-#define BLOCKARRAY3D_H__
-
-#include "define.h"
-
-class BlockArray3d {
-public:
- BlockArray3d(int x, int y, int z);
- BlockArray3d(BlockArray3d& ba);
- virtual ~BlockArray3d();
-
- void Set(int x, int y, int z, BlockType type);
- BlockType Get(int x, int y, int z) const;
- void Reset(BlockType type);
-
-private:
- BlockType* m_blocks;
- int m_x;
- int m_y;
- int m_z;
-
- int GetPosition(int x, int y, int z) const;
-};
-#endif
\ No newline at end of file
diff --git a/SQCSim2021/blockinfo.cpp b/SQCSim2021/blockinfo.cpp
deleted file mode 100644
index 9205100..0000000
--- a/SQCSim2021/blockinfo.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "blockinfo.h"
-
-BlockInfo::BlockInfo(BlockType type, const std::string& name): m_name(name), m_type(type) { m_durability = 0; }
-
-BlockInfo::~BlockInfo() { }
-
-BlockType BlockInfo::GetType() const { return m_type; }
-
-void BlockInfo::SetDurability(int durability) { m_durability = durability; }
-
-int BlockInfo::GetDurability() const { return m_durability; }
-
-void BlockInfo::Show() const { std::cout << "Name: " << m_name << "; Type " << m_type << "; Durability: " << m_durability << std::endl; }
diff --git a/SQCSim2021/blockinfo.h b/SQCSim2021/blockinfo.h
deleted file mode 100644
index 9ef279f..0000000
--- a/SQCSim2021/blockinfo.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef BLOCKINFO_H__
-#define BLOCKINFO_H__
-
-#include "define.h"
-
-class BlockInfo {
-public:
- BlockInfo(BlockType type, const std::string& name);
- ~BlockInfo();
-
- BlockType GetType() const;
-
- void SetDurability(int durability);
- int GetDurability() const;
- void Show() const;
-
-private:
- std::string m_name;
- int m_durability;
- BlockType m_type;
-};
-#endif
-
diff --git a/SQCSim2021/chunk.cpp b/SQCSim2021/chunk.cpp
deleted file mode 100644
index 579e355..0000000
--- a/SQCSim2021/chunk.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "chunk.h"
-
-Chunk::Chunk(): BlockArray3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z) {}
-
-Chunk::Chunk(Chunk& chk) : BlockArray3d(chk) {}
-
-Chunk::~Chunk() {}
-
-void Chunk::RemoveBlock(int x, int y, int z) { Set(x, y, z, BTYPE_AIR); }
-
-void Chunk::SetBlock(int x, int y, int z, BlockType type) { Set(x, y, z, type); }
-
-BlockType Chunk::GetBlock(int x, int y, int z) const { return Get(x, y, z); }
diff --git a/SQCSim2021/chunk.h b/SQCSim2021/chunk.h
deleted file mode 100644
index 4045b1a..0000000
--- a/SQCSim2021/chunk.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef CHUNK_H__
-#define CHUNK_H__
-
-#include "define.h"
-#include "blockarray3d.h"
-
-class Chunk : public BlockArray3d {
-public:
- Chunk();
- Chunk(Chunk& chk);
- virtual ~Chunk();
-
- void RemoveBlock(int x, int y, int z);
- void SetBlock(int x, int y, int z, BlockType type);
- BlockType GetBlock(int x, int y, int z) const;
-
-};
-
-#endif
-
diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h
deleted file mode 100644
index d4413d5..0000000
--- a/SQCSim2021/define.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef DEFINE_H__
-#define DEFINE_H__
-
-#include
-#include
-
-#define CHUNK_SIZE_X 16
-#define CHUNK_SIZE_Y 128
-#define CHUNK_SIZE_Z 16
-
-enum BlockType {
- BTYPE_AIR,
- BTYPE_DIRT,
- BTYPE_GRASS
-};
-
-#endif
diff --git a/SQCSim2021/main.cpp b/SQCSim2021/main.cpp
deleted file mode 100644
index 920ebbf..0000000
--- a/SQCSim2021/main.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "main.h"
-
-int main() {
-
- Chunk* testchunk = new Chunk();
- std::vector testblock;
-
- std::cout << "-Test 1-------BlockInfo------------------" << std::endl;
-
- testblock.push_back(new BlockInfo(BTYPE_AIR, "The air in the sky"));
- testblock.push_back(new BlockInfo(BTYPE_DIRT, "The dirt on the ground"));
- testblock.push_back(new BlockInfo(BTYPE_GRASS, "The grass on the dirt"));
-
- testblock[1]->SetDurability(5);
- testblock[2]->SetDurability(6);
-
- for (int index = 0; index < testblock.size(); ++index)
- testblock[index]->Show();
-
- std::cout << "GetDurability: " << testblock[0]->GetDurability() << " and " << testblock[1]->GetDurability() << " and " << testblock[2]->GetDurability() << std::endl;
- std::cout << "GetType: " << testblock[0]->GetType() << " and " << testblock[1]->GetType() << " and " << testblock[2]->GetType() << std::endl;
-
- std::cout << std::endl;
- std::cout << "-Test 2--------Chunk/BlockArray3D---------" << std::endl;
- testchunk->SetBlock(1, 0, 0, BTYPE_DIRT);
- testchunk->SetBlock(2, 0, 0, BTYPE_GRASS);
- testblock.push_back(new BlockInfo(testchunk->GetBlock(0, 0, 0), "A new block in the chunk"));
- testblock.push_back(new BlockInfo(testchunk->GetBlock(1, 0, 0), "A dirty block in the chunk"));
- testblock.push_back(new BlockInfo(testchunk->GetBlock(2, 0, 0), "A grassy block in the chunk"));
-
- for (int index = 3; index < testblock.size(); ++index)
- testblock[index]->Show();
-
- std::cout << std::endl;
- std::cout << "-Test 3--------Chunk Copy------------------" << std::endl;
- Chunk testchunkcopy(*testchunk);
-
- delete testchunk;
-
- testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(0, 0, 0), "A block in a copied chunk"));
- testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(1, 0, 0), "A dirty block in a copied chunk"));
- testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(1, 0, 0), "A grassy block in a copied chunk"));
-
- for (int index = 6; index < testblock.size(); ++index)
- testblock[index]->Show();
-
- std::cout << std::endl;
- std::cout << "-Test 3--------Chunk Reset/Remove Block-----" << std::endl;
- testchunkcopy.Reset(BTYPE_GRASS);
- testchunkcopy.RemoveBlock(3, 0, 0);
- testchunkcopy.SetBlock(4, 0, 0, BTYPE_DIRT);
-
- testblock.clear();
-
- for (int index = 0; index < 10; ++index)
- testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(index, 0, 0), "A block in a reset chunk containing lots of grass"));
-
- for (int index = 0; index < testblock.size(); ++index)
- testblock[index]->Show();
-
- testblock.clear();
-
- return 0;
-}
diff --git a/SQCSim2021/main.h b/SQCSim2021/main.h
deleted file mode 100644
index e124f29..0000000
--- a/SQCSim2021/main.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef MAIN_H__
-#define MAIN_H__
-
-#include
-
-#include "define.h"
-#include "chunk.h"
-#include "blockinfo.h"
-
-#endif
-
diff --git a/mcclone/Makefile b/mcclone/Makefile
new file mode 100644
index 0000000..5d1cc75
--- /dev/null
+++ b/mcclone/Makefile
@@ -0,0 +1,64 @@
+SRCS = $(wildcard *.cpp)
+OBJS = $(SRCS:.cpp=.o)
+BINFILE = ./mcclone
+CC = g++
+
+COMPILER_FLAGS = -I/usr/X11R6/include -I/usr/local/include -I./external/noise/include -I./external/enet-1.3.1/include -finline-functions -std=c++11
+LINKER_FLAGS = -lm -L/usr/X11R6/lib -L/usr/local/lib -lGL -lGLU -lpthread -lsfml-graphics -lsfml-window -lsfml-system -lsndfile -lopenal -lsfml-audio -lXrandr -lIL -lILU -lX11 -ldl -lGLEW
+
+# Release:
+#CFLAGS = -O3 -fomit-frame-pointer -ffast-math -w $(COMPILER_FLAGS)
+#LFLAGS = $(LINKER_FLAGS)
+
+# Debug:
+CFLAGS = -g -W -Wall $(COMPILER_FLAGS) -Wno-write-strings -Wno-unused-parameter -Wno-switch -Wno-reorder -DDEBUGMODE -DDEBUG
+LFLAGS = $(LINKER_FLAGS)
+
+# Profiling:
+#CFLAGS = -pg -W -Wall $(COMPILER_FLAGS) -Wno-write-strings
+#LFLAGS = -pg $(LINKER_FLAGS)
+
+all : $(BINFILE)
+
+$(BINFILE) : $(OBJS)
+ @echo Linking to $(BINFILE)...
+ @$(CC) $(OBJS) -o $(BINFILE) $(LFLAGS)
+
+%.o : %.cpp
+ @echo CC $@
+ @$(CC) $(CFLAGS) -c $< -o $@
+
+%.o : %.cc
+ @echo CC $@
+ @$(CC) $(CFLAGS) -c $< -o $@
+
+%.o : %.C
+ @echo CC $@
+ @$(CC) $(CFLAGS) -c $< -o $@
+
+%.o : %.cxx
+ @echo CC $@
+ @$(CC) $(CFLAGS) -c $< -o $@
+
+strip:
+ @strip $(BINFILE)
+
+clean:
+ @rm -f Makefile.bak
+ @rm -f $(OBJS)
+ @rm -f gmon.out
+ @rm -f profiler_output.txt
+ @rm -f $(BINFILE)
+
+depend:
+ @$(CC) -MM $(CFLAGS) $(SRCS) > Makefile.dep
+ @make -s clean
+
+info:
+ @echo SRCS: $(SRCS)
+ @echo OBJS: $(OBJS)
+ @echo $(BINFILE)
+
+
+include Makefile.dep
+
diff --git a/mcclone/blockarray3d.cpp b/mcclone/blockarray3d.cpp
new file mode 100644
index 0000000..fe12b35
--- /dev/null
+++ b/mcclone/blockarray3d.cpp
@@ -0,0 +1,41 @@
+#include "blockarray3d.h"
+
+BlockArray3d::BlockArray3d(int x, int y, int z) : m_x(x), m_y(y), m_z(z)
+{
+ m_blocks = new BlockType[m_x * m_y * m_z];
+
+ Reset(BTYPE_AIR);
+}
+
+BlockArray3d::~BlockArray3d()
+{
+ delete [] m_blocks;
+}
+
+BlockArray3d::BlockArray3d(const BlockArray3d& array) : m_x(array.m_x), m_y(array.m_y), m_z(array.m_z)
+{
+ m_blocks = new BlockType[m_x * m_y * m_z];
+ for(int i = 0; i < m_x * m_y * m_z; ++i)
+ m_blocks[i] = array.m_blocks[i];
+}
+
+void BlockArray3d::Set(int x, int y, int z, BlockType type)
+{
+ m_blocks[To1dIndex(x, y, z)] = type;
+}
+
+BlockType BlockArray3d::Get(int x, int y, int z) const
+{
+ return m_blocks[To1dIndex(x, y, z)];
+}
+
+void BlockArray3d::Reset(BlockType type)
+{
+ for(int i = 0; i < m_x * m_y * m_z; ++i)
+ m_blocks[i] = type;
+}
+
+int BlockArray3d::To1dIndex(int x, int y, int z) const
+{
+ return x + (z * m_x) + (y * m_z * m_x);
+}
diff --git a/mcclone/blockarray3d.h b/mcclone/blockarray3d.h
new file mode 100644
index 0000000..818eef3
--- /dev/null
+++ b/mcclone/blockarray3d.h
@@ -0,0 +1,26 @@
+#ifndef BLOCKARRAY3D_H__
+#define BLOCKARRAY3D_H__
+
+#include "define.h"
+
+class BlockArray3d
+{
+ public:
+ BlockArray3d(int x, int y, int z);
+ ~BlockArray3d();
+ BlockArray3d(const BlockArray3d& array);
+
+ void Set(int x, int y, int z, BlockType type);
+ BlockType Get(int x, int y, int z) const;
+
+ void Reset(BlockType type);
+
+ private:
+ int To1dIndex(int x, int y, int z) const;
+
+ private:
+ int m_x, m_y, m_z;
+ BlockType* m_blocks;
+};
+
+#endif // BLOCKARRAY3D_H__
diff --git a/mcclone/blockinfo.cpp b/mcclone/blockinfo.cpp
new file mode 100644
index 0000000..e4670b7
--- /dev/null
+++ b/mcclone/blockinfo.cpp
@@ -0,0 +1,34 @@
+#include "blockinfo.h"
+#include
+
+BlockInfo::BlockInfo(BlockType type, const std::string& name) : m_type(type), m_name(name), m_durability(1)
+{
+}
+
+BlockInfo::~BlockInfo()
+{
+}
+
+BlockType BlockInfo::GetType() const
+{
+ return m_type;
+}
+
+void BlockInfo::SetDurability(int durability)
+{
+ m_durability = durability;
+}
+
+int BlockInfo::GetDurability() const
+{
+ return m_durability;
+}
+
+void BlockInfo::Show() const
+{
+ std::cout << "Type: " << m_type << std::endl;
+ std::cout << "Nom: " << m_name << std::endl;
+ std::cout << "Durabilite: " << m_durability << std::endl;
+}
+
+
diff --git a/mcclone/blockinfo.h b/mcclone/blockinfo.h
new file mode 100644
index 0000000..3b6c880
--- /dev/null
+++ b/mcclone/blockinfo.h
@@ -0,0 +1,27 @@
+#ifndef BLOCKINFO_H__
+#define BLOCKINFO_H__
+
+#include
+#include "define.h"
+
+class BlockInfo
+{
+ public:
+ BlockInfo(BlockType type, const std::string& name);
+ ~BlockInfo();
+
+ BlockType GetType() const;
+
+ void SetDurability(int durability);
+ int GetDurability() const;
+
+ void Show() const;
+
+ private:
+ BlockType m_type;
+ std::string m_name;
+ int m_durability;
+
+};
+
+#endif // BLOCKINFO_H__
diff --git a/mcclone/chunk.cpp b/mcclone/chunk.cpp
new file mode 100644
index 0000000..32b8fcb
--- /dev/null
+++ b/mcclone/chunk.cpp
@@ -0,0 +1,25 @@
+#include "chunk.h"
+
+Chunk::Chunk() : BlockArray3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z)
+{
+}
+
+Chunk::~Chunk()
+{
+}
+
+void Chunk::RemoveBlock(int x, int y, int z)
+{
+ Set(x, y, z, BTYPE_AIR);
+}
+
+void Chunk::SetBlock(int x, int y, int z, BlockType type)
+{
+ Set(x, y, z, type);
+}
+
+BlockType Chunk::GetBlock(int x, int y, int z)
+{
+ return Get(x, y, z);
+}
+
diff --git a/mcclone/chunk.h b/mcclone/chunk.h
new file mode 100644
index 0000000..46030e5
--- /dev/null
+++ b/mcclone/chunk.h
@@ -0,0 +1,16 @@
+#ifndef CHUNK_H__
+#define CHUNK_H__
+#include "blockarray3d.h"
+
+class Chunk : public BlockArray3d
+{
+ public:
+ Chunk();
+ ~Chunk();
+
+ void RemoveBlock(int x, int y, int z);
+ void SetBlock(int x, int y, int z, BlockType type);
+ BlockType GetBlock(int x, int y, int z);
+};
+
+#endif // CHUNK_H__
diff --git a/mcclone/define.h b/mcclone/define.h
new file mode 100644
index 0000000..1b1f83c
--- /dev/null
+++ b/mcclone/define.h
@@ -0,0 +1,25 @@
+#ifndef DEFINE_H__
+#define DEFINE_H__
+
+#include
+#include
+
+#ifdef _WIN32
+#include
+#include
+#include
+#else
+#include
+#endif
+
+#define CHUNK_SIZE_X 16
+#define CHUNK_SIZE_Y 128
+#define CHUNK_SIZE_Z 16
+
+enum BlockType {BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS};
+
+
+#define TEXTURE_PATH "../mcclone/media/textures/"
+#define VIEW_DISTANCE 128
+
+#endif // DEFINE_H__
diff --git a/mcclone/engine.cpp b/mcclone/engine.cpp
new file mode 100644
index 0000000..74aa6b5
--- /dev/null
+++ b/mcclone/engine.cpp
@@ -0,0 +1,189 @@
+#include "engine.h"
+#include
+#include
+#include
+
+Engine::Engine()
+{
+}
+
+Engine::~Engine()
+{
+}
+
+void Engine::Init()
+{
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ glEnable(GL_TEXTURE_2D);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45.0f, (float)Width() / (float)Height(), 0.0001f, 1000.0f);
+ glEnable(GL_DEPTH_TEST);
+ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LINE_SMOOTH);
+
+ // Light
+ GLfloat light0Pos[4] = { 0.0f, CHUNK_SIZE_Y, 0.0f, 1.0f };
+ GLfloat light0Amb[4] = { 0.9f, 0.9f, 0.9f, 1.0f };
+ GLfloat light0Diff[4] = { 1.0f, 1.0f, 1.0f, 1.0f };
+ GLfloat light0Spec[4] = { 0.2f, 0.2f, 0.2f, 1.0f };
+
+ glEnable(GL_LIGHT0);
+ glLightfv(GL_LIGHT0, GL_POSITION, light0Pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, light0Amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, light0Diff);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, light0Spec);
+
+ CenterMouse();
+ HideCursor();
+}
+
+void Engine::DeInit()
+{
+}
+
+void Engine::LoadResource()
+{
+ LoadTexture(m_textureFloor, TEXTURE_PATH "checker.png");
+}
+
+void Engine::UnloadResource()
+{
+}
+
+void Engine::Render(float elapsedTime)
+{
+ static float gameTime = elapsedTime;
+
+ gameTime += elapsedTime;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ // Transformations initiales
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ // Plancher
+ // Les vertex doivent etre affiches dans le sens anti-horaire (CCW)
+ m_textureFloor.Bind();
+ float nbRep = 50.f;
+ glBegin(GL_QUADS);
+ glNormal3f(0, 1, 0); // Normal vector
+ glTexCoord2f(0, 0);
+ glVertex3f(-100.f, -2.f, 100.f);
+ glTexCoord2f(nbRep, 0);
+ glVertex3f(100.f, -2.f, 100.f);
+ glTexCoord2f(nbRep, nbRep);
+ glVertex3f(100.f, -2.f, -100.f);
+ glTexCoord2f(0, nbRep);
+ glVertex3f(-100.f, -2.f, -100.f);
+ glEnd();
+}
+
+void Engine::KeyPressEvent(unsigned char key)
+{
+ switch(key)
+ {
+ case 36: // ESC
+ Stop();
+ break;
+ case 94: // F10
+ SetFullscreen(!IsFullscreen());
+ break;
+ case 22: // W
+ if (!m_keyW) {
+ std::cout << "W " << (int)key << std::endl;
+ m_keyW = true;
+ }
+ break;
+ case 0: // A
+ if (!m_keyA) {
+ std::cout << "A " << (int)key << std::endl;
+ m_keyA = true;
+ }
+ break;
+ case 18: // S
+ if (!m_keyS) {
+ std::cout << "S " << (int)key << std::endl;
+ m_keyS = true;
+ }
+ break;
+ case 3: // D
+ if (!m_keyD) {
+ std::cout << "D " << (int)key << std::endl;
+ m_keyD = true;
+ }
+ break;
+ default:
+ std::cout << "Unhandled key: " << (int)key << std::endl;
+ }
+}
+
+void Engine::KeyReleaseEvent(unsigned char key)
+{
+ switch(key)
+ {
+ case 24: // Y
+ m_wireframe = !m_wireframe;
+ if(m_wireframe)
+ glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+ else
+ glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+ break;
+ case 22: // W
+ std::cout << "rW " << (int)key << std::endl;
+ m_keyW = false;
+ break;
+ case 0: // A
+ std::cout << "rA " << (int)key << std::endl;
+ m_keyA = false;
+ break;
+ case 18: // S
+ std::cout << "rS " << (int)key << std::endl;
+ m_keyS = false;
+ break;
+ case 3: // D
+ std::cout << "rD " << (int)key << std::endl;
+ m_keyD = false;
+ break;
+ }
+}
+
+void Engine::MouseMoveEvent(int x, int y)
+{
+ // Centrer la souris seulement si elle n'est pas déjà centrée
+ // Il est nécessaire de faire la vérification pour éviter de tomber
+ // dans une boucle infinie où l'appel à CenterMouse génère un
+ // MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre
+ // MouseMoveEvent, etc
+ if(x == (Width() / 2) && y == (Height() / 2))
+ return;
+
+ CenterMouse();
+}
+
+void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y)
+{
+}
+
+void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y)
+{
+}
+
+bool Engine::LoadTexture(Texture& texture, const std::string& filename, bool stopOnError)
+{
+ texture.Load(filename);
+ if(!texture.IsValid())
+ {
+ std::cerr << "Unable to load texture (" << filename << ")" << std::endl;
+ if(stopOnError)
+ Stop();
+
+ return false;
+ }
+
+ return true;
+}
diff --git a/mcclone/engine.h b/mcclone/engine.h
new file mode 100644
index 0000000..43b8d2b
--- /dev/null
+++ b/mcclone/engine.h
@@ -0,0 +1,37 @@
+#ifndef ENGINE_H__
+#define ENGINE_H__
+#include "define.h"
+#include "openglcontext.h"
+#include "texture.h"
+
+class Engine : public OpenglContext
+{
+public:
+ Engine();
+ virtual ~Engine();
+ virtual void Init();
+ virtual void DeInit();
+ virtual void LoadResource();
+ virtual void UnloadResource();
+ virtual void Render(float elapsedTime);
+ virtual void KeyPressEvent(unsigned char key);
+ virtual void KeyReleaseEvent(unsigned char key);
+ virtual void MouseMoveEvent(int x, int y);
+ virtual void MousePressEvent(const MOUSE_BUTTON &button, int x, int y);
+ virtual void MouseReleaseEvent(const MOUSE_BUTTON &button, int x, int y);
+
+private:
+ bool LoadTexture(Texture& texture, const std::string& filename, bool stopOnError = true);
+
+private:
+ bool m_wireframe = false;
+
+ Texture m_textureFloor;
+
+ bool m_keyW = false;
+ bool m_keyA = false;
+ bool m_keyS = false;
+ bool m_keyD = false;
+};
+
+#endif // ENGINE_H__
diff --git a/mcclone/external/devil178/include/IL/config.h b/mcclone/external/devil178/include/IL/config.h
new file mode 100644
index 0000000..b9fe5dc
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/config.h
@@ -0,0 +1,140 @@
+/* include/IL/config.h. Generated by configure. */
+/* include/IL/config.h.in. Generated from configure.in by autoheader. */
+#ifndef __CONFIG_H__
+#define __CONFIG_H__
+
+#define IL_USE_PRAGMA_LIBS
+
+// Supported image formats (IL)
+
+// #define IL_NO_BLP
+// #define IL_NO_BMP
+// #define IL_NO_CUT
+// #define IL_NO_CHEAD
+// #define IL_NO_DCX
+// #define IL_NO_DDS
+// #define IL_NO_DICOM
+// #define IL_NO_DOOM
+// #define IL_NO_EXR
+// #define IL_NO_FITS
+// #define IL_NO_FTX
+// #define IL_NO_GIF
+// #define IL_NO_HDR
+// #define IL_NO_ICO
+// #define IL_NO_ICNS
+// #define IL_NO_IWI
+// #define IL_NO_JP2
+// #define IL_NO_JPG
+// #define IL_NO_LCMS
+// #define IL_NO_LIF
+// #define IL_NO_MDL
+// #define IL_NO_MNG
+// #define IL_NO_PCD
+// #define IL_NO_PCX
+// #define IL_NO_PIC
+// #define IL_NO_PIX
+// #define IL_NO_PNG
+// #define IL_NO_PNM
+// #define IL_NO_PSD
+// #define IL_NO_PSP
+// #define IL_NO_PXR
+// #define IL_NO_RAW
+// #define IL_NO_ROT
+// #define IL_NO_SGI
+// #define IL_NO_SUN
+// #define IL_NO_TGA
+// #define IL_NO_TIF
+// #define IL_NO_TPL
+// #define IL_NO_WAL
+// #define IL_NO_WDP
+// #define IL_NO_XPM
+#define IL_USE_JPEGLIB_UNMODIFIED 1
+//#define IL_USE_DXTC_NVIDIA
+#define IL_USE_DXTC_SQUISH
+
+/* Supported api (ilut) */
+
+
+//
+// sorry just
+// cant get this one to work under windows
+// have disabled for the now
+//
+// will look at it some more later
+//
+// Kriss
+//
+#undef ILUT_USE_ALLEGRO
+
+#undef ILUT_USE_DIRECTX8
+//#define ILUT_USE_DIRECTX9
+//#define ILUT_USE_DIRECTX10
+//#define ILUT_USE_OPENGL
+//#define ILUT_USE_SDL
+//#define ILUT_USE_WIN32
+
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the header file. */
+//#define HAVE_UNISTD_H 1
+
+/* Name of package */
+#define IL_PACKAGE "DevIL"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define IL_PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define IL_PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define IL_PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define IL_PACKAGE_VERSION ""
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+//#define IL_VERSION "1.7.3"
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+/* If using Mac OS X uncomment this line */
+/* #include "macconfig.h" */
+
+/* Define to 1 if the X Window System is missing or not being used. */
+/* #undef X_DISPLAY_MISSING */
+#endif /* __CONFIG_H__ */
diff --git a/mcclone/external/devil178/include/IL/config.h.win b/mcclone/external/devil178/include/IL/config.h.win
new file mode 100644
index 0000000..659f4ca
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/config.h.win
@@ -0,0 +1,79 @@
+#ifndef __CONFIG_H__
+#define __CONFIG_H__
+
+#define IL_USE_PRAGMA_LIBS // Links to only the libraries that are requested.
+#define IL_INLINE_ASM 1 // Define if you can support at least some ASM
+
+// Supported images formats (IL)
+
+// #define IL_NO_BLP
+// #define IL_NO_BMP
+// #define IL_NO_CUT
+// #define IL_NO_CHEAD
+// #define IL_NO_DCX
+// #define IL_NO_DDS
+// #define IL_NO_DICOM
+// #define IL_NO_DOOM
+// #define IL_NO_EXR
+// #define IL_NO_FITS
+// #define IL_NO_FTX
+// #define IL_NO_GIF
+// #define IL_NO_HDR
+// #define IL_NO_ICO
+// #define IL_NO_ICNS
+// #define IL_NO_IWI
+// #define IL_NO_JP2
+// #define IL_NO_JPG
+// #define IL_NO_LCMS
+// #define IL_NO_LIF
+// #define IL_NO_MDL
+// #define IL_NO_MNG
+// #define IL_NO_PCD
+// #define IL_NO_PCX
+// #define IL_NO_PIC
+// #define IL_NO_PIX
+// #define IL_NO_PNG
+// #define IL_NO_PNM
+// #define IL_NO_PSD
+// #define IL_NO_PSP
+// #define IL_NO_PXR
+// #define IL_NO_RAW
+// #define IL_NO_ROT
+// #define IL_NO_SGI
+// #define IL_NO_SUN
+// #define IL_NO_TGA
+// #define IL_NO_TIF
+// #define IL_NO_TPL
+// #define IL_NO_WAL
+// #define IL_NO_WDP
+// #define IL_NO_XPM
+
+#define IL_USE_JPEGLIB_UNMODIFIED 1
+#define IL_USE_DXTC_NVIDIA
+#define IL_USE_DXTC_SQUISH
+
+//#define IL_NO_GAMES
+
+/* Supported api (ilut) */
+
+
+//
+// sorry just
+// cant get this one to work under windows
+// have disabled for the now
+//
+// will look at it some more later
+//
+// Kriss
+//
+#undef ILUT_USE_ALLEGRO
+
+#undef ILUT_USE_DIRECTX8
+#define ILUT_USE_DIRECTX9
+#define ILUT_USE_DIRECTX10
+#define ILUT_USE_OPENGL
+#define ILUT_USE_SDL
+#define ILUT_USE_WIN32
+
+
+#endif /* __CONFIG_H__ */
diff --git a/mcclone/external/devil178/include/IL/devil_internal_exports.h b/mcclone/external/devil178/include/IL/devil_internal_exports.h
new file mode 100644
index 0000000..30b7aaa
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/devil_internal_exports.h
@@ -0,0 +1,161 @@
+//-----------------------------------------------------------------------------
+//
+// ImageLib Sources
+// Copyright (C) 2000-2009 by Denton Woods
+// Last modified: 01/06/2009
+//
+// Filename: IL/devil_internal_exports.h
+//
+// Description: Internal stuff for DevIL (IL, ILU and ILUT)
+//
+//-----------------------------------------------------------------------------
+
+#ifndef IL_EXPORTS_H
+#define IL_EXPORTS_H
+
+#include "IL/il.h"
+
+#ifdef DEBUG
+ #include
+#else
+ #define assert(x)
+#endif
+
+//#ifndef NOINLINE
+#ifndef INLINE
+#if defined(__GNUC__)
+ #define INLINE extern inline
+#elif defined(_MSC_VER) //@TODO: Get this working in MSVC++.
+ // http://www.greenend.org.uk/rjk/2003/03/inline.html
+ #define NOINLINE
+ //#define INLINE
+ /*#ifndef _WIN64 // Cannot use inline assembly in x64 target platform.
+ #define USE_WIN32_ASM
+ #endif//_WIN64*/
+ #define INLINE __inline
+#else
+ #define INLINE inline
+#endif
+#endif
+//#else
+//#define INLINE
+//#endif //NOINLINE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IL_MAX(a,b) (((a) > (b)) ? (a) : (b))
+#define IL_MIN(a,b) (((a) < (b)) ? (a) : (b))
+
+
+//! Basic Palette struct
+typedef struct ILpal
+{
+ ILubyte* Palette; //!< the image palette (if any)
+ ILuint PalSize; //!< size of the palette (in bytes)
+ ILenum PalType; //!< the palette types in il.h (0x0500 range)
+} ILpal;
+
+
+//! The Fundamental Image structure
+/*! Every bit of information about an image is stored in this internal structure.*/
+typedef struct ILimage
+{
+ ILuint Width; //!< the image's width
+ ILuint Height; //!< the image's height
+ ILuint Depth; //!< the image's depth
+ ILubyte Bpp; //!< bytes per pixel (now number of channels)
+ ILubyte Bpc; //!< bytes per channel
+ ILuint Bps; //!< bytes per scanline (components for IL)
+ ILubyte* Data; //!< the image data
+ ILuint SizeOfData; //!< the total size of the data (in bytes)
+ ILuint SizeOfPlane; //!< SizeOfData in a 2d image, size of each plane slice in a 3d image (in bytes)
+ ILenum Format; //!< image format (in IL enum style)
+ ILenum Type; //!< image type (in IL enum style)
+ ILenum Origin; //!< origin of the image
+ ILpal Pal; //!< palette details
+ ILuint Duration; //!< length of the time to display this "frame"
+ ILenum CubeFlags; //!< cube map flags for sides present in chain
+ struct ILimage* Mipmaps; //!< mipmapped versions of this image terminated by a NULL - usu. NULL
+ struct ILimage* Next; //!< next image in the chain - usu. NULL
+ struct ILimage* Faces; //!< next cubemap face in the chain - usu. NULL
+ struct ILimage* Layers; //!< subsequent layers in the chain - usu. NULL
+ ILuint* AnimList; //!< animation list
+ ILuint AnimSize; //!< animation list size
+ void* Profile; //!< colour profile
+ ILuint ProfileSize; //!< colour profile size
+ ILuint OffX; //!< x-offset of the image
+ ILuint OffY; //!< y-offset of the image
+ ILubyte* DxtcData; //!< compressed data
+ ILenum DxtcFormat; //!< compressed data format
+ ILuint DxtcSize; //!< compressed data size
+} ILimage;
+
+
+// Memory functions
+ILAPI void* ILAPIENTRY ialloc(const ILsizei Size);
+ILAPI void ILAPIENTRY ifree(const void *Ptr);
+ILAPI void* ILAPIENTRY icalloc(const ILsizei Size, const ILsizei Num);
+#ifdef ALTIVEC_GCC
+ILAPI void* ILAPIENTRY ivec_align_buffer(void *buffer, const ILuint size);
+#endif
+
+// Internal library functions in IL
+ILAPI ILimage* ILAPIENTRY ilGetCurImage(void);
+ILAPI void ILAPIENTRY ilSetCurImage(ILimage *Image);
+ILAPI void ILAPIENTRY ilSetError(ILenum Error);
+ILAPI void ILAPIENTRY ilSetPal(ILpal *Pal);
+
+//
+// Utility functions
+//
+ILAPI ILubyte ILAPIENTRY ilGetBppFormat(ILenum Format);
+ILAPI ILenum ILAPIENTRY ilGetFormatBpp(ILubyte Bpp);
+ILAPI ILubyte ILAPIENTRY ilGetBpcType(ILenum Type);
+ILAPI ILenum ILAPIENTRY ilGetTypeBpc(ILubyte Bpc);
+ILAPI ILubyte ILAPIENTRY ilGetBppPal(ILenum PalType);
+ILAPI ILenum ILAPIENTRY ilGetPalBaseType(ILenum PalType);
+ILAPI ILuint ILAPIENTRY ilNextPower2(ILuint Num);
+ILAPI ILenum ILAPIENTRY ilTypeFromExt(ILconst_string FileName);
+ILAPI void ILAPIENTRY ilReplaceCurImage(ILimage *Image);
+ILAPI void ILAPIENTRY iMemSwap(ILubyte *, ILubyte *, const ILuint);
+
+//
+// Image functions
+//
+ILAPI void ILAPIENTRY iBindImageTemp (void);
+ILAPI ILboolean ILAPIENTRY ilClearImage_ (ILimage *Image);
+ILAPI void ILAPIENTRY ilCloseImage (ILimage *Image);
+ILAPI void ILAPIENTRY ilClosePal (ILpal *Palette);
+ILAPI ILpal* ILAPIENTRY iCopyPal (void);
+ILAPI ILboolean ILAPIENTRY ilCopyImageAttr (ILimage *Dest, ILimage *Src);
+ILAPI ILimage* ILAPIENTRY ilCopyImage_ (ILimage *Src);
+ILAPI void ILAPIENTRY ilGetClear (void *Colours, ILenum Format, ILenum Type);
+ILAPI ILuint ILAPIENTRY ilGetCurName (void);
+ILAPI ILboolean ILAPIENTRY ilIsValidPal (ILpal *Palette);
+ILAPI ILimage* ILAPIENTRY ilNewImage (ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILubyte Bpc);
+ILAPI ILimage* ILAPIENTRY ilNewImageFull (ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data);
+ILAPI ILboolean ILAPIENTRY ilInitImage (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data);
+ILAPI ILboolean ILAPIENTRY ilResizeImage (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILubyte Bpc);
+ILAPI ILboolean ILAPIENTRY ilTexImage_ (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data);
+ILAPI ILboolean ILAPIENTRY ilTexSubImage_ (ILimage *Image, void *Data);
+ILAPI void* ILAPIENTRY ilConvertBuffer (ILuint SizeOfData, ILenum SrcFormat, ILenum DestFormat, ILenum SrcType, ILenum DestType, ILpal *SrcPal, void *Buffer);
+ILAPI ILimage* ILAPIENTRY iConvertImage (ILimage *Image, ILenum DestFormat, ILenum DestType);
+ILAPI ILpal* ILAPIENTRY iConvertPal (ILpal *Pal, ILenum DestFormat);
+ILAPI ILubyte* ILAPIENTRY iGetFlipped (ILimage *Image);
+ILAPI ILboolean ILAPIENTRY iMirror();
+ILAPI void ILAPIENTRY iFlipBuffer(ILubyte *buff, ILuint depth, ILuint line_size, ILuint line_num);
+ILubyte* iFlipNewBuffer(ILubyte *buff, ILuint depth, ILuint line_size, ILuint line_num);
+ILAPI void ILAPIENTRY iGetIntegervImage(ILimage *Image, ILenum Mode, ILint *Param);
+
+// Internal library functions in ILU
+ILAPI ILimage* ILAPIENTRY iluRotate_(ILimage *Image, ILfloat Angle);
+ILAPI ILimage* ILAPIENTRY iluRotate3D_(ILimage *Image, ILfloat x, ILfloat y, ILfloat z, ILfloat Angle);
+ILAPI ILimage* ILAPIENTRY iluScale_(ILimage *Image, ILuint Width, ILuint Height, ILuint Depth);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif//IL_EXPORTS_H
diff --git a/mcclone/external/devil178/include/IL/il.h b/mcclone/external/devil178/include/IL/il.h
new file mode 100644
index 0000000..540a56e
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/il.h
@@ -0,0 +1,644 @@
+//-----------------------------------------------------------------------------
+//
+// ImageLib Sources
+// Copyright (C) 2000-2009 by Denton Woods
+// Last modified: 03/07/2009
+//
+// Filename: IL/il.h
+//
+// Description: The main include file for DevIL
+//
+//-----------------------------------------------------------------------------
+
+// Doxygen comment
+/*! \file il.h
+ The main include file for DevIL
+*/
+
+#ifndef __il_h_
+#ifndef __IL_H__
+
+#define __il_h_
+#define __IL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//this define controls if floats and doubles are clampled to [0..1]
+//during conversion. It takes a little more time, but it is the correct
+//way of doing this. If you are sure your floats are always valid,
+//you can undefine this value...
+#define CLAMP_HALF 1
+#define CLAMP_FLOATS 1
+#define CLAMP_DOUBLES 1
+
+/*#ifdef _WIN32_WCE
+ #define IL_NO_EXR
+ #define IL_NO_GIF
+ #define IL_NO_JP2
+ #define IL_NO_JPG
+ #define IL_NO_MNG
+ #define IL_NO_PNG
+ #define IL_NO_TIF
+ #define IL_NO_LCMS
+#endif //_WIN32_WCE
+
+#ifdef DJGPP
+ #define IL_NO_EXR
+ #define IL_NO_GIF
+ #define IL_NO_JP2
+ #define IL_NO_JPG
+ #define IL_NO_MNG
+ #define IL_NO_PNG
+ #define IL_NO_TIF
+ #define IL_NO_LCMS
+#endif //DJGPP*/
+
+#ifdef _WIN32
+ #if (defined(IL_USE_PRAGMA_LIBS)) && (!defined(_IL_BUILD_LIBRARY))
+ #if defined(_MSC_VER) || defined(__BORLANDC__)
+ #pragma comment(lib, "DevIL.lib")
+ #endif
+ #endif
+#endif
+
+#ifdef RESTRICT_KEYWORD
+#define RESTRICT restrict
+#define CONST_RESTRICT const restrict
+#else
+#define RESTRICT
+#define CONST_RESTRICT const
+#endif
+
+#include
+
+typedef unsigned int ILenum;
+typedef unsigned char ILboolean;
+typedef unsigned int ILbitfield;
+typedef signed char ILbyte;
+typedef signed short ILshort;
+typedef int ILint;
+typedef size_t ILsizei;
+typedef unsigned char ILubyte;
+typedef unsigned short ILushort;
+typedef unsigned int ILuint;
+typedef float ILfloat;
+typedef float ILclampf;
+typedef double ILdouble;
+typedef double ILclampd;
+
+#ifdef _MSC_VER
+typedef __int64 ILint64;
+typedef unsigned __int64 ILuint64;
+#else
+typedef long long int ILint64;
+typedef long long unsigned int ILuint64;
+#endif
+
+
+#include
+#ifdef _UNICODE
+ #ifndef _WIN32_WCE
+ #include
+ #endif
+ //if we use a define instead of a typedef,
+ //ILconst_string works as intended
+ #define ILchar wchar_t
+ #define ILstring wchar_t*
+ #define ILconst_string wchar_t const *
+#else
+ //if we use a define instead of a typedef,
+ //ILconst_string works as intended
+ #define ILchar char
+ #define ILstring char*
+ #define ILconst_string char const *
+#endif //_UNICODE
+
+#define IL_FALSE 0
+#define IL_TRUE 1
+
+// Matches OpenGL's right now.
+//! Data formats \link Formats Formats\endlink
+#define IL_COLOUR_INDEX 0x1900
+#define IL_COLOR_INDEX 0x1900
+#define IL_ALPHA 0x1906
+#define IL_RGB 0x1907
+#define IL_RGBA 0x1908
+#define IL_BGR 0x80E0
+#define IL_BGRA 0x80E1
+#define IL_LUMINANCE 0x1909
+#define IL_LUMINANCE_ALPHA 0x190A
+
+//! Data types \link Types Types\endlink
+#define IL_BYTE 0x1400
+#define IL_UNSIGNED_BYTE 0x1401
+#define IL_SHORT 0x1402
+#define IL_UNSIGNED_SHORT 0x1403
+#define IL_INT 0x1404
+#define IL_UNSIGNED_INT 0x1405
+#define IL_FLOAT 0x1406
+#define IL_DOUBLE 0x140A
+#define IL_HALF 0x140B
+
+
+#define IL_MAX_BYTE SCHAR_MAX
+#define IL_MAX_UNSIGNED_BYTE UCHAR_MAX
+#define IL_MAX_SHORT SHRT_MAX
+#define IL_MAX_UNSIGNED_SHORT USHRT_MAX
+#define IL_MAX_INT INT_MAX
+#define IL_MAX_UNSIGNED_INT UINT_MAX
+
+#define IL_LIMIT(x,m,M) (xM?M:x))
+#define IL_CLAMP(x) IL_LIMIT(x,0,1)
+
+#define IL_VENDOR 0x1F00
+#define IL_LOAD_EXT 0x1F01
+#define IL_SAVE_EXT 0x1F02
+
+
+//
+// IL-specific #define's
+//
+
+#define IL_VERSION_1_7_8 1
+#define IL_VERSION 178
+
+
+// Attribute Bits
+#define IL_ORIGIN_BIT 0x00000001
+#define IL_FILE_BIT 0x00000002
+#define IL_PAL_BIT 0x00000004
+#define IL_FORMAT_BIT 0x00000008
+#define IL_TYPE_BIT 0x00000010
+#define IL_COMPRESS_BIT 0x00000020
+#define IL_LOADFAIL_BIT 0x00000040
+#define IL_FORMAT_SPECIFIC_BIT 0x00000080
+#define IL_ALL_ATTRIB_BITS 0x000FFFFF
+
+
+// Palette types
+#define IL_PAL_NONE 0x0400
+#define IL_PAL_RGB24 0x0401
+#define IL_PAL_RGB32 0x0402
+#define IL_PAL_RGBA32 0x0403
+#define IL_PAL_BGR24 0x0404
+#define IL_PAL_BGR32 0x0405
+#define IL_PAL_BGRA32 0x0406
+
+
+// Image types
+#define IL_TYPE_UNKNOWN 0x0000
+#define IL_BMP 0x0420 //!< Microsoft Windows Bitmap - .bmp extension
+#define IL_CUT 0x0421 //!< Dr. Halo - .cut extension
+#define IL_DOOM 0x0422 //!< DooM walls - no specific extension
+#define IL_DOOM_FLAT 0x0423 //!< DooM flats - no specific extension
+#define IL_ICO 0x0424 //!< Microsoft Windows Icons and Cursors - .ico and .cur extensions
+#define IL_JPG 0x0425 //!< JPEG - .jpg, .jpe and .jpeg extensions
+#define IL_JFIF 0x0425 //!<
+#define IL_ILBM 0x0426 //!< Amiga IFF (FORM ILBM) - .iff, .ilbm, .lbm extensions
+#define IL_PCD 0x0427 //!< Kodak PhotoCD - .pcd extension
+#define IL_PCX 0x0428 //!< ZSoft PCX - .pcx extension
+#define IL_PIC 0x0429 //!< PIC - .pic extension
+#define IL_PNG 0x042A //!< Portable Network Graphics - .png extension
+#define IL_PNM 0x042B //!< Portable Any Map - .pbm, .pgm, .ppm and .pnm extensions
+#define IL_SGI 0x042C //!< Silicon Graphics - .sgi, .bw, .rgb and .rgba extensions
+#define IL_TGA 0x042D //!< TrueVision Targa File - .tga, .vda, .icb and .vst extensions
+#define IL_TIF 0x042E //!< Tagged Image File Format - .tif and .tiff extensions
+#define IL_CHEAD 0x042F //!< C-Style Header - .h extension
+#define IL_RAW 0x0430 //!< Raw Image Data - any extension
+#define IL_MDL 0x0431 //!< Half-Life Model Texture - .mdl extension
+#define IL_WAL 0x0432 //!< Quake 2 Texture - .wal extension
+#define IL_LIF 0x0434 //!< Homeworld Texture - .lif extension
+#define IL_MNG 0x0435 //!< Multiple-image Network Graphics - .mng extension
+#define IL_JNG 0x0435 //!<
+#define IL_GIF 0x0436 //!< Graphics Interchange Format - .gif extension
+#define IL_DDS 0x0437 //!< DirectDraw Surface - .dds extension
+#define IL_DCX 0x0438 //!< ZSoft Multi-PCX - .dcx extension
+#define IL_PSD 0x0439 //!< Adobe PhotoShop - .psd extension
+#define IL_EXIF 0x043A //!<
+#define IL_PSP 0x043B //!< PaintShop Pro - .psp extension
+#define IL_PIX 0x043C //!< PIX - .pix extension
+#define IL_PXR 0x043D //!< Pixar - .pxr extension
+#define IL_XPM 0x043E //!< X Pixel Map - .xpm extension
+#define IL_HDR 0x043F //!< Radiance High Dynamic Range - .hdr extension
+#define IL_ICNS 0x0440 //!< Macintosh Icon - .icns extension
+#define IL_JP2 0x0441 //!< Jpeg 2000 - .jp2 extension
+#define IL_EXR 0x0442 //!< OpenEXR - .exr extension
+#define IL_WDP 0x0443 //!< Microsoft HD Photo - .wdp and .hdp extension
+#define IL_VTF 0x0444 //!< Valve Texture Format - .vtf extension
+#define IL_WBMP 0x0445 //!< Wireless Bitmap - .wbmp extension
+#define IL_SUN 0x0446 //!< Sun Raster - .sun, .ras, .rs, .im1, .im8, .im24 and .im32 extensions
+#define IL_IFF 0x0447 //!< Interchange File Format - .iff extension
+#define IL_TPL 0x0448 //!< Gamecube Texture - .tpl extension
+#define IL_FITS 0x0449 //!< Flexible Image Transport System - .fit and .fits extensions
+#define IL_DICOM 0x044A //!< Digital Imaging and Communications in Medicine (DICOM) - .dcm and .dicom extensions
+#define IL_IWI 0x044B //!< Call of Duty Infinity Ward Image - .iwi extension
+#define IL_BLP 0x044C //!< Blizzard Texture Format - .blp extension
+#define IL_FTX 0x044D //!< Heavy Metal: FAKK2 Texture - .ftx extension
+#define IL_ROT 0x044E //!< Homeworld 2 - Relic Texture - .rot extension
+#define IL_TEXTURE 0x044F //!< Medieval II: Total War Texture - .texture extension
+#define IL_DPX 0x0450 //!< Digital Picture Exchange - .dpx extension
+#define IL_UTX 0x0451 //!< Unreal (and Unreal Tournament) Texture - .utx extension
+#define IL_MP3 0x0452 //!< MPEG-1 Audio Layer 3 - .mp3 extension
+
+
+#define IL_JASC_PAL 0x0475 //!< PaintShop Pro Palette
+
+
+// Error Types
+#define IL_NO_ERROR 0x0000
+#define IL_INVALID_ENUM 0x0501
+#define IL_OUT_OF_MEMORY 0x0502
+#define IL_FORMAT_NOT_SUPPORTED 0x0503
+#define IL_INTERNAL_ERROR 0x0504
+#define IL_INVALID_VALUE 0x0505
+#define IL_ILLEGAL_OPERATION 0x0506
+#define IL_ILLEGAL_FILE_VALUE 0x0507
+#define IL_INVALID_FILE_HEADER 0x0508
+#define IL_INVALID_PARAM 0x0509
+#define IL_COULD_NOT_OPEN_FILE 0x050A
+#define IL_INVALID_EXTENSION 0x050B
+#define IL_FILE_ALREADY_EXISTS 0x050C
+#define IL_OUT_FORMAT_SAME 0x050D
+#define IL_STACK_OVERFLOW 0x050E
+#define IL_STACK_UNDERFLOW 0x050F
+#define IL_INVALID_CONVERSION 0x0510
+#define IL_BAD_DIMENSIONS 0x0511
+#define IL_FILE_READ_ERROR 0x0512 // 05/12/2002: Addition by Sam.
+#define IL_FILE_WRITE_ERROR 0x0512
+
+#define IL_LIB_GIF_ERROR 0x05E1
+#define IL_LIB_JPEG_ERROR 0x05E2
+#define IL_LIB_PNG_ERROR 0x05E3
+#define IL_LIB_TIFF_ERROR 0x05E4
+#define IL_LIB_MNG_ERROR 0x05E5
+#define IL_LIB_JP2_ERROR 0x05E6
+#define IL_LIB_EXR_ERROR 0x05E7
+#define IL_UNKNOWN_ERROR 0x05FF
+
+
+// Origin Definitions
+#define IL_ORIGIN_SET 0x0600
+#define IL_ORIGIN_LOWER_LEFT 0x0601
+#define IL_ORIGIN_UPPER_LEFT 0x0602
+#define IL_ORIGIN_MODE 0x0603
+
+
+// Format and Type Mode Definitions
+#define IL_FORMAT_SET 0x0610
+#define IL_FORMAT_MODE 0x0611
+#define IL_TYPE_SET 0x0612
+#define IL_TYPE_MODE 0x0613
+
+
+// File definitions
+#define IL_FILE_OVERWRITE 0x0620
+#define IL_FILE_MODE 0x0621
+
+
+// Palette definitions
+#define IL_CONV_PAL 0x0630
+
+
+// Load fail definitions
+#define IL_DEFAULT_ON_FAIL 0x0632
+
+
+// Key colour and alpha definitions
+#define IL_USE_KEY_COLOUR 0x0635
+#define IL_USE_KEY_COLOR 0x0635
+#define IL_BLIT_BLEND 0x0636
+
+
+// Interlace definitions
+#define IL_SAVE_INTERLACED 0x0639
+#define IL_INTERLACE_MODE 0x063A
+
+
+// Quantization definitions
+#define IL_QUANTIZATION_MODE 0x0640
+#define IL_WU_QUANT 0x0641
+#define IL_NEU_QUANT 0x0642
+#define IL_NEU_QUANT_SAMPLE 0x0643
+#define IL_MAX_QUANT_INDEXS 0x0644 //XIX : ILint : Maximum number of colors to reduce to, default of 256. and has a range of 2-256
+#define IL_MAX_QUANT_INDICES 0x0644 // Redefined, since the above #define is misspelled
+
+
+// Hints
+#define IL_FASTEST 0x0660
+#define IL_LESS_MEM 0x0661
+#define IL_DONT_CARE 0x0662
+#define IL_MEM_SPEED_HINT 0x0665
+#define IL_USE_COMPRESSION 0x0666
+#define IL_NO_COMPRESSION 0x0667
+#define IL_COMPRESSION_HINT 0x0668
+
+
+// Compression
+#define IL_NVIDIA_COMPRESS 0x0670
+#define IL_SQUISH_COMPRESS 0x0671
+
+
+// Subimage types
+#define IL_SUB_NEXT 0x0680
+#define IL_SUB_MIPMAP 0x0681
+#define IL_SUB_LAYER 0x0682
+
+
+// Compression definitions
+#define IL_COMPRESS_MODE 0x0700
+#define IL_COMPRESS_NONE 0x0701
+#define IL_COMPRESS_RLE 0x0702
+#define IL_COMPRESS_LZO 0x0703
+#define IL_COMPRESS_ZLIB 0x0704
+
+
+// File format-specific values
+#define IL_TGA_CREATE_STAMP 0x0710
+#define IL_JPG_QUALITY 0x0711
+#define IL_PNG_INTERLACE 0x0712
+#define IL_TGA_RLE 0x0713
+#define IL_BMP_RLE 0x0714
+#define IL_SGI_RLE 0x0715
+#define IL_TGA_ID_STRING 0x0717
+#define IL_TGA_AUTHNAME_STRING 0x0718
+#define IL_TGA_AUTHCOMMENT_STRING 0x0719
+#define IL_PNG_AUTHNAME_STRING 0x071A
+#define IL_PNG_TITLE_STRING 0x071B
+#define IL_PNG_DESCRIPTION_STRING 0x071C
+#define IL_TIF_DESCRIPTION_STRING 0x071D
+#define IL_TIF_HOSTCOMPUTER_STRING 0x071E
+#define IL_TIF_DOCUMENTNAME_STRING 0x071F
+#define IL_TIF_AUTHNAME_STRING 0x0720
+#define IL_JPG_SAVE_FORMAT 0x0721
+#define IL_CHEAD_HEADER_STRING 0x0722
+#define IL_PCD_PICNUM 0x0723
+#define IL_PNG_ALPHA_INDEX 0x0724 //XIX : ILint : the color in the palette at this index value (0-255) is considered transparent, -1 for no trasparent color
+#define IL_JPG_PROGRESSIVE 0x0725
+#define IL_VTF_COMP 0x0726
+
+
+// DXTC definitions
+#define IL_DXTC_FORMAT 0x0705
+#define IL_DXT1 0x0706
+#define IL_DXT2 0x0707
+#define IL_DXT3 0x0708
+#define IL_DXT4 0x0709
+#define IL_DXT5 0x070A
+#define IL_DXT_NO_COMP 0x070B
+#define IL_KEEP_DXTC_DATA 0x070C
+#define IL_DXTC_DATA_FORMAT 0x070D
+#define IL_3DC 0x070E
+#define IL_RXGB 0x070F
+#define IL_ATI1N 0x0710
+#define IL_DXT1A 0x0711 // Normally the same as IL_DXT1, except for nVidia Texture Tools.
+
+// Environment map definitions
+#define IL_CUBEMAP_POSITIVEX 0x00000400
+#define IL_CUBEMAP_NEGATIVEX 0x00000800
+#define IL_CUBEMAP_POSITIVEY 0x00001000
+#define IL_CUBEMAP_NEGATIVEY 0x00002000
+#define IL_CUBEMAP_POSITIVEZ 0x00004000
+#define IL_CUBEMAP_NEGATIVEZ 0x00008000
+#define IL_SPHEREMAP 0x00010000
+
+
+// Values
+#define IL_VERSION_NUM 0x0DE2
+#define IL_IMAGE_WIDTH 0x0DE4
+#define IL_IMAGE_HEIGHT 0x0DE5
+#define IL_IMAGE_DEPTH 0x0DE6
+#define IL_IMAGE_SIZE_OF_DATA 0x0DE7
+#define IL_IMAGE_BPP 0x0DE8
+#define IL_IMAGE_BYTES_PER_PIXEL 0x0DE8
+#define IL_IMAGE_BPP 0x0DE8
+#define IL_IMAGE_BITS_PER_PIXEL 0x0DE9
+#define IL_IMAGE_FORMAT 0x0DEA
+#define IL_IMAGE_TYPE 0x0DEB
+#define IL_PALETTE_TYPE 0x0DEC
+#define IL_PALETTE_SIZE 0x0DED
+#define IL_PALETTE_BPP 0x0DEE
+#define IL_PALETTE_NUM_COLS 0x0DEF
+#define IL_PALETTE_BASE_TYPE 0x0DF0
+#define IL_NUM_FACES 0x0DE1
+#define IL_NUM_IMAGES 0x0DF1
+#define IL_NUM_MIPMAPS 0x0DF2
+#define IL_NUM_LAYERS 0x0DF3
+#define IL_ACTIVE_IMAGE 0x0DF4
+#define IL_ACTIVE_MIPMAP 0x0DF5
+#define IL_ACTIVE_LAYER 0x0DF6
+#define IL_ACTIVE_FACE 0x0E00
+#define IL_CUR_IMAGE 0x0DF7
+#define IL_IMAGE_DURATION 0x0DF8
+#define IL_IMAGE_PLANESIZE 0x0DF9
+#define IL_IMAGE_BPC 0x0DFA
+#define IL_IMAGE_OFFX 0x0DFB
+#define IL_IMAGE_OFFY 0x0DFC
+#define IL_IMAGE_CUBEFLAGS 0x0DFD
+#define IL_IMAGE_ORIGIN 0x0DFE
+#define IL_IMAGE_CHANNELS 0x0DFF
+
+# if defined __GNUC__ && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0))
+// __attribute__((deprecated)) is supported by GCC 3.1 and later.
+# define DEPRECATED(D) D __attribute__((deprecated))
+# elif defined _MSC_VER && _MSC_VER >= 1300
+// __declspec(deprecated) is supported by MSVC 7.0 and later.
+# define DEPRECATED(D) __declspec(deprecated) D
+# else
+# define DEPRECATED (D) D
+# endif
+
+//
+// Section shamelessly modified from the glut header.
+//
+
+// This is from Win32's
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__)
+ #define ILAPIENTRY __stdcall
+ #define IL_PACKSTRUCT
+//#elif defined(linux) || defined(MACOSX) || defined(__CYGWIN__) //fix bug 840364
+#elif defined( __GNUC__ )
+ // this should work for any of the above commented platforms
+ // plus any platform using GCC
+ #ifdef __MINGW32__
+ #define ILAPIENTRY __stdcall
+ #else
+ #define ILAPIENTRY
+ #endif
+ #define IL_PACKSTRUCT __attribute__ ((packed))
+#else
+ #define ILAPIENTRY
+ #define IL_PACKSTRUCT
+#endif
+
+// This is from Win32's and
+#if defined(__LCC__)
+ #define ILAPI __stdcall
+#elif defined(_WIN32) //changed 20031221 to fix bug 840421
+ #ifdef IL_STATIC_LIB
+ #define ILAPI
+ #else
+ #ifdef _IL_BUILD_LIBRARY
+ #define ILAPI __declspec(dllexport)
+ #else
+ #define ILAPI __declspec(dllimport)
+ #endif
+ #endif
+#elif __APPLE__
+ #define ILAPI extern
+#else
+ #define ILAPI
+#endif
+
+
+#define IL_SEEK_SET 0
+#define IL_SEEK_CUR 1
+#define IL_SEEK_END 2
+#define IL_EOF -1
+
+
+// Callback functions for file reading
+typedef void* ILHANDLE;
+typedef void (ILAPIENTRY *fCloseRProc)(ILHANDLE);
+typedef ILboolean (ILAPIENTRY *fEofProc) (ILHANDLE);
+typedef ILint (ILAPIENTRY *fGetcProc) (ILHANDLE);
+typedef ILHANDLE (ILAPIENTRY *fOpenRProc) (ILconst_string);
+typedef ILint (ILAPIENTRY *fReadProc) (void*, ILuint, ILuint, ILHANDLE);
+typedef ILint (ILAPIENTRY *fSeekRProc) (ILHANDLE, ILint, ILint);
+typedef ILint (ILAPIENTRY *fTellRProc) (ILHANDLE);
+
+// Callback functions for file writing
+typedef void (ILAPIENTRY *fCloseWProc)(ILHANDLE);
+typedef ILHANDLE (ILAPIENTRY *fOpenWProc) (ILconst_string);
+typedef ILint (ILAPIENTRY *fPutcProc) (ILubyte, ILHANDLE);
+typedef ILint (ILAPIENTRY *fSeekWProc) (ILHANDLE, ILint, ILint);
+typedef ILint (ILAPIENTRY *fTellWProc) (ILHANDLE);
+typedef ILint (ILAPIENTRY *fWriteProc) (const void*, ILuint, ILuint, ILHANDLE);
+
+// Callback functions for allocation and deallocation
+typedef void* (ILAPIENTRY *mAlloc)(const ILsizei);
+typedef void (ILAPIENTRY *mFree) (const void* CONST_RESTRICT);
+
+// Registered format procedures
+typedef ILenum (ILAPIENTRY *IL_LOADPROC)(ILconst_string);
+typedef ILenum (ILAPIENTRY *IL_SAVEPROC)(ILconst_string);
+
+
+// ImageLib Functions
+ILAPI ILboolean ILAPIENTRY ilActiveFace(ILuint Number);
+ILAPI ILboolean ILAPIENTRY ilActiveImage(ILuint Number);
+ILAPI ILboolean ILAPIENTRY ilActiveLayer(ILuint Number);
+ILAPI ILboolean ILAPIENTRY ilActiveMipmap(ILuint Number);
+ILAPI ILboolean ILAPIENTRY ilApplyPal(ILconst_string FileName);
+ILAPI ILboolean ILAPIENTRY ilApplyProfile(ILstring InProfile, ILstring OutProfile);
+ILAPI void ILAPIENTRY ilBindImage(ILuint Image);
+ILAPI ILboolean ILAPIENTRY ilBlit(ILuint Source, ILint DestX, ILint DestY, ILint DestZ, ILuint SrcX, ILuint SrcY, ILuint SrcZ, ILuint Width, ILuint Height, ILuint Depth);
+ILAPI ILboolean ILAPIENTRY ilClampNTSC(void);
+ILAPI void ILAPIENTRY ilClearColour(ILclampf Red, ILclampf Green, ILclampf Blue, ILclampf Alpha);
+ILAPI ILboolean ILAPIENTRY ilClearImage(void);
+ILAPI ILuint ILAPIENTRY ilCloneCurImage(void);
+ILAPI ILubyte* ILAPIENTRY ilCompressDXT(ILubyte *Data, ILuint Width, ILuint Height, ILuint Depth, ILenum DXTCFormat, ILuint *DXTCSize);
+ILAPI ILboolean ILAPIENTRY ilCompressFunc(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilConvertImage(ILenum DestFormat, ILenum DestType);
+ILAPI ILboolean ILAPIENTRY ilConvertPal(ILenum DestFormat);
+ILAPI ILboolean ILAPIENTRY ilCopyImage(ILuint Src);
+ILAPI ILuint ILAPIENTRY ilCopyPixels(ILuint XOff, ILuint YOff, ILuint ZOff, ILuint Width, ILuint Height, ILuint Depth, ILenum Format, ILenum Type, void *Data);
+ILAPI ILuint ILAPIENTRY ilCreateSubImage(ILenum Type, ILuint Num);
+ILAPI ILboolean ILAPIENTRY ilDefaultImage(void);
+ILAPI void ILAPIENTRY ilDeleteImage(const ILuint Num);
+ILAPI void ILAPIENTRY ilDeleteImages(ILsizei Num, const ILuint *Images);
+ILAPI ILenum ILAPIENTRY ilDetermineType(ILconst_string FileName);
+ILAPI ILenum ILAPIENTRY ilDetermineTypeF(ILHANDLE File);
+ILAPI ILenum ILAPIENTRY ilDetermineTypeL(const void *Lump, ILuint Size);
+ILAPI ILboolean ILAPIENTRY ilDisable(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilDxtcDataToImage(void);
+ILAPI ILboolean ILAPIENTRY ilDxtcDataToSurface(void);
+ILAPI ILboolean ILAPIENTRY ilEnable(ILenum Mode);
+ILAPI void ILAPIENTRY ilFlipSurfaceDxtcData(void);
+ILAPI ILboolean ILAPIENTRY ilFormatFunc(ILenum Mode);
+ILAPI void ILAPIENTRY ilGenImages(ILsizei Num, ILuint *Images);
+ILAPI ILuint ILAPIENTRY ilGenImage(void);
+ILAPI ILubyte* ILAPIENTRY ilGetAlpha(ILenum Type);
+ILAPI ILboolean ILAPIENTRY ilGetBoolean(ILenum Mode);
+ILAPI void ILAPIENTRY ilGetBooleanv(ILenum Mode, ILboolean *Param);
+ILAPI ILubyte* ILAPIENTRY ilGetData(void);
+ILAPI ILuint ILAPIENTRY ilGetDXTCData(void *Buffer, ILuint BufferSize, ILenum DXTCFormat);
+ILAPI ILenum ILAPIENTRY ilGetError(void);
+ILAPI ILint ILAPIENTRY ilGetInteger(ILenum Mode);
+ILAPI void ILAPIENTRY ilGetIntegerv(ILenum Mode, ILint *Param);
+ILAPI ILuint ILAPIENTRY ilGetLumpPos(void);
+ILAPI ILubyte* ILAPIENTRY ilGetPalette(void);
+ILAPI ILconst_string ILAPIENTRY ilGetString(ILenum StringName);
+ILAPI void ILAPIENTRY ilHint(ILenum Target, ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilInvertSurfaceDxtcDataAlpha(void);
+ILAPI void ILAPIENTRY ilInit(void);
+ILAPI ILboolean ILAPIENTRY ilImageToDxtcData(ILenum Format);
+ILAPI ILboolean ILAPIENTRY ilIsDisabled(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilIsEnabled(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilIsImage(ILuint Image);
+ILAPI ILboolean ILAPIENTRY ilIsValid(ILenum Type, ILconst_string FileName);
+ILAPI ILboolean ILAPIENTRY ilIsValidF(ILenum Type, ILHANDLE File);
+ILAPI ILboolean ILAPIENTRY ilIsValidL(ILenum Type, void *Lump, ILuint Size);
+ILAPI void ILAPIENTRY ilKeyColour(ILclampf Red, ILclampf Green, ILclampf Blue, ILclampf Alpha);
+ILAPI ILboolean ILAPIENTRY ilLoad(ILenum Type, ILconst_string FileName);
+ILAPI ILboolean ILAPIENTRY ilLoadF(ILenum Type, ILHANDLE File);
+ILAPI ILboolean ILAPIENTRY ilLoadImage(ILconst_string FileName);
+ILAPI ILboolean ILAPIENTRY ilLoadL(ILenum Type, const void *Lump, ILuint Size);
+ILAPI ILboolean ILAPIENTRY ilLoadPal(ILconst_string FileName);
+ILAPI void ILAPIENTRY ilModAlpha(ILdouble AlphaValue);
+ILAPI ILboolean ILAPIENTRY ilOriginFunc(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilOverlayImage(ILuint Source, ILint XCoord, ILint YCoord, ILint ZCoord);
+ILAPI void ILAPIENTRY ilPopAttrib(void);
+ILAPI void ILAPIENTRY ilPushAttrib(ILuint Bits);
+ILAPI void ILAPIENTRY ilRegisterFormat(ILenum Format);
+ILAPI ILboolean ILAPIENTRY ilRegisterLoad(ILconst_string Ext, IL_LOADPROC Load);
+ILAPI ILboolean ILAPIENTRY ilRegisterMipNum(ILuint Num);
+ILAPI ILboolean ILAPIENTRY ilRegisterNumFaces(ILuint Num);
+ILAPI ILboolean ILAPIENTRY ilRegisterNumImages(ILuint Num);
+ILAPI void ILAPIENTRY ilRegisterOrigin(ILenum Origin);
+ILAPI void ILAPIENTRY ilRegisterPal(void *Pal, ILuint Size, ILenum Type);
+ILAPI ILboolean ILAPIENTRY ilRegisterSave(ILconst_string Ext, IL_SAVEPROC Save);
+ILAPI void ILAPIENTRY ilRegisterType(ILenum Type);
+ILAPI ILboolean ILAPIENTRY ilRemoveLoad(ILconst_string Ext);
+ILAPI ILboolean ILAPIENTRY ilRemoveSave(ILconst_string Ext);
+ILAPI void ILAPIENTRY ilResetMemory(void); // Deprecated
+ILAPI void ILAPIENTRY ilResetRead(void);
+ILAPI void ILAPIENTRY ilResetWrite(void);
+ILAPI ILboolean ILAPIENTRY ilSave(ILenum Type, ILconst_string FileName);
+ILAPI ILuint ILAPIENTRY ilSaveF(ILenum Type, ILHANDLE File);
+ILAPI ILboolean ILAPIENTRY ilSaveImage(ILconst_string FileName);
+ILAPI ILuint ILAPIENTRY ilSaveL(ILenum Type, void *Lump, ILuint Size);
+ILAPI ILboolean ILAPIENTRY ilSavePal(ILconst_string FileName);
+ILAPI ILboolean ILAPIENTRY ilSetAlpha(ILdouble AlphaValue);
+ILAPI ILboolean ILAPIENTRY ilSetData(void *Data);
+ILAPI ILboolean ILAPIENTRY ilSetDuration(ILuint Duration);
+ILAPI void ILAPIENTRY ilSetInteger(ILenum Mode, ILint Param);
+ILAPI void ILAPIENTRY ilSetMemory(mAlloc, mFree);
+ILAPI void ILAPIENTRY ilSetPixels(ILint XOff, ILint YOff, ILint ZOff, ILuint Width, ILuint Height, ILuint Depth, ILenum Format, ILenum Type, void *Data);
+ILAPI void ILAPIENTRY ilSetRead(fOpenRProc, fCloseRProc, fEofProc, fGetcProc, fReadProc, fSeekRProc, fTellRProc);
+ILAPI void ILAPIENTRY ilSetString(ILenum Mode, const char *String);
+ILAPI void ILAPIENTRY ilSetWrite(fOpenWProc, fCloseWProc, fPutcProc, fSeekWProc, fTellWProc, fWriteProc);
+ILAPI void ILAPIENTRY ilShutDown(void);
+ILAPI ILboolean ILAPIENTRY ilSurfaceToDxtcData(ILenum Format);
+ILAPI ILboolean ILAPIENTRY ilTexImage(ILuint Width, ILuint Height, ILuint Depth, ILubyte NumChannels, ILenum Format, ILenum Type, void *Data);
+ILAPI ILboolean ILAPIENTRY ilTexImageDxtc(ILint w, ILint h, ILint d, ILenum DxtFormat, const ILubyte* data);
+ILAPI ILenum ILAPIENTRY ilTypeFromExt(ILconst_string FileName);
+ILAPI ILboolean ILAPIENTRY ilTypeFunc(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilLoadData(ILconst_string FileName, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp);
+ILAPI ILboolean ILAPIENTRY ilLoadDataF(ILHANDLE File, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp);
+ILAPI ILboolean ILAPIENTRY ilLoadDataL(void *Lump, ILuint Size, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp);
+ILAPI ILboolean ILAPIENTRY ilSaveData(ILconst_string FileName);
+
+// For all those weirdos that spell "colour" without the 'u'.
+#define ilClearColor ilClearColour
+#define ilKeyColor ilKeyColour
+
+#define imemclear(x,y) memset(x,0,y);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __IL_H__
+#endif // __il_h__
diff --git a/mcclone/external/devil178/include/IL/il_wrap.h b/mcclone/external/devil178/include/IL/il_wrap.h
new file mode 100644
index 0000000..5cf9b0e
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/il_wrap.h
@@ -0,0 +1,205 @@
+#ifndef WRAPPER_H
+#define WRAPPER_H
+
+/*#include
+#include */
+#include // Probably only have to #include this one
+
+#ifdef _MSC_VER
+ #ifndef _IL_WRAP_BUILD_LIB
+ #pragma comment(lib, "il_wrap.lib")
+ #endif
+#endif
+
+class ilImage
+{
+public:
+ ilImage();
+ ilImage(char *);
+ ilImage(const ilImage &);
+ virtual ~ilImage();
+
+ ILboolean Load(char *);
+ ILboolean Load(char *, ILenum);
+ ILboolean Save(char *);
+ ILboolean Save(char *, ILenum);
+
+
+ // ImageLib functions
+ ILboolean ActiveImage(ILuint);
+ ILboolean ActiveLayer(ILuint);
+ ILboolean ActiveMipmap(ILuint);
+ ILboolean Clear(void);
+ ILvoid ClearColour(ILclampf, ILclampf, ILclampf, ILclampf);
+ ILboolean Convert(ILenum);
+ ILboolean Copy(ILuint);
+ ILboolean Default(void);
+ ILboolean Flip(void);
+ ILboolean SwapColours(void);
+ ILboolean Resize(ILuint, ILuint, ILuint);
+ ILboolean TexImage(ILuint, ILuint, ILuint, ILubyte, ILenum, ILenum, ILvoid*);
+
+
+ // Image handling
+ ILvoid Bind(void) const;
+ ILvoid Bind(ILuint);
+ ILvoid Close(void) { this->Delete(); }
+ ILvoid Delete(void);
+ ILvoid iGenBind();
+ ILenum PaletteAlphaIndex();
+
+ // Image characteristics
+ ILuint Width(void);
+ ILuint Height(void);
+ ILuint Depth(void);
+ ILubyte Bpp(void);
+ ILubyte Bitpp(void);
+ ILenum PaletteType(void);
+ ILenum Format(void);
+ ILenum Type(void);
+ ILuint NumImages(void);
+ ILuint NumMipmaps(void);
+ ILuint GetId(void) const;
+ ILenum GetOrigin(void);
+ ILubyte *GetData(void);
+ ILubyte *GetPalette(void);
+
+
+ // Rendering
+ ILuint BindImage(void);
+ ILuint BindImage(ILenum);
+
+
+ // Operators
+ ilImage& operator = (ILuint);
+ ilImage& operator = (const ilImage &);
+
+
+protected:
+ ILuint Id;
+
+private:
+ ILvoid iStartUp();
+
+
+};
+
+
+class ilFilters
+{
+public:
+ static ILboolean Alienify(ilImage &);
+ static ILboolean BlurAvg(ilImage &, ILuint Iter);
+ static ILboolean BlurGaussian(ilImage &, ILuint Iter);
+ static ILboolean Contrast(ilImage &, ILfloat Contrast);
+ static ILboolean EdgeDetectE(ilImage &);
+ static ILboolean EdgeDetectP(ilImage &);
+ static ILboolean EdgeDetectS(ilImage &);
+ static ILboolean Emboss(ilImage &);
+ static ILboolean Gamma(ilImage &, ILfloat Gamma);
+ static ILboolean Negative(ilImage &);
+ static ILboolean Noisify(ilImage &, ILubyte Factor);
+ static ILboolean Pixelize(ilImage &, ILuint PixSize);
+ static ILboolean Saturate(ilImage &, ILfloat Saturation);
+ static ILboolean Saturate(ilImage &, ILfloat r, ILfloat g, ILfloat b, ILfloat Saturation);
+ static ILboolean ScaleColours(ilImage &, ILfloat r, ILfloat g, ILfloat b);
+ static ILboolean Sharpen(ilImage &, ILfloat Factor, ILuint Iter);
+};
+
+
+#ifdef ILUT_USE_OPENGL
+class ilOgl
+{
+public:
+ static ILvoid Init(void);
+ static GLuint BindTex(ilImage &);
+ static ILboolean Upload(ilImage &, ILuint);
+ static GLuint Mipmap(ilImage &);
+ static ILboolean Screen(void);
+ static ILboolean Screenie(void);
+};
+#endif//ILUT_USE_OPENGL
+
+
+#ifdef ILUT_USE_ALLEGRO
+class ilAlleg
+{
+public:
+ static ILvoid Init(void);
+ static BITMAP *Convert(ilImage &);
+};
+#endif//ILUT_USE_ALLEGRO
+
+
+#ifdef ILUT_USE_WIN32
+class ilWin32
+{
+public:
+ static ILvoid Init(void);
+ static HBITMAP Convert(ilImage &);
+ static ILboolean GetClipboard(ilImage &);
+ static ILvoid GetInfo(ilImage &, BITMAPINFO *Info);
+ static ILubyte *GetPadData(ilImage &);
+ static HPALETTE GetPal(ilImage &);
+ static ILboolean GetResource(ilImage &, HINSTANCE hInst, ILint ID, char *ResourceType);
+ static ILboolean GetResource(ilImage &, HINSTANCE hInst, ILint ID, char *ResourceType, ILenum Type);
+ static ILboolean SetClipboard(ilImage &);
+};
+#endif//ILUT_USE_WIN32
+
+
+class ilValidate
+{
+public:
+ static ILboolean Valid(ILenum, char *);
+ static ILboolean Valid(ILenum, FILE *);
+ static ILboolean Valid(ILenum, ILvoid *, ILuint);
+
+protected:
+
+private:
+
+};
+
+
+class ilState
+{
+public:
+ static ILboolean Disable(ILenum);
+ static ILboolean Enable(ILenum);
+ static ILvoid Get(ILenum, ILboolean &);
+ static ILvoid Get(ILenum, ILint &);
+ static ILboolean GetBool(ILenum);
+ static ILint GetInt(ILenum);
+ static const char *GetString(ILenum);
+ static ILboolean IsDisabled(ILenum);
+ static ILboolean IsEnabled(ILenum);
+ static ILboolean Origin(ILenum);
+ static ILvoid Pop(void);
+ static ILvoid Push(ILuint);
+
+
+protected:
+
+private:
+
+};
+
+
+class ilError
+{
+public:
+ static ILvoid Check(ILvoid (*Callback)(const char*));
+ static ILvoid Check(ILvoid (*Callback)(ILenum));
+ static ILenum Get(void);
+ static const char *String(void);
+ static const char *String(ILenum);
+
+protected:
+
+private:
+
+};
+
+
+#endif//WRAPPER_H
diff --git a/mcclone/external/devil178/include/IL/ilu.h b/mcclone/external/devil178/include/IL/ilu.h
new file mode 100644
index 0000000..49871d7
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/ilu.h
@@ -0,0 +1,195 @@
+//-----------------------------------------------------------------------------
+//
+// ImageLib Utility Sources
+// Copyright (C) 2000-2009 by Denton Woods
+// Last modified: 03/07/2009
+//
+// Filename: IL/ilu.h
+//
+// Description: The main include file for ILU
+//
+//-----------------------------------------------------------------------------
+
+// Doxygen comment
+/*! \file ilu.h
+ The main include file for ILU
+*/
+
+#ifndef __ilu_h_
+#ifndef __ILU_H__
+
+#define __ilu_h_
+#define __ILU_H__
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifdef _WIN32
+ #if (defined(IL_USE_PRAGMA_LIBS)) && (!defined(_IL_BUILD_LIBRARY))
+ #if defined(_MSC_VER) || defined(__BORLANDC__)
+ #pragma comment(lib, "ILU.lib")
+ #endif
+ #endif
+#endif
+
+
+#define ILU_VERSION_1_7_8 1
+#define ILU_VERSION 178
+
+
+#define ILU_FILTER 0x2600
+#define ILU_NEAREST 0x2601
+#define ILU_LINEAR 0x2602
+#define ILU_BILINEAR 0x2603
+#define ILU_SCALE_BOX 0x2604
+#define ILU_SCALE_TRIANGLE 0x2605
+#define ILU_SCALE_BELL 0x2606
+#define ILU_SCALE_BSPLINE 0x2607
+#define ILU_SCALE_LANCZOS3 0x2608
+#define ILU_SCALE_MITCHELL 0x2609
+
+
+// Error types
+#define ILU_INVALID_ENUM 0x0501
+#define ILU_OUT_OF_MEMORY 0x0502
+#define ILU_INTERNAL_ERROR 0x0504
+#define ILU_INVALID_VALUE 0x0505
+#define ILU_ILLEGAL_OPERATION 0x0506
+#define ILU_INVALID_PARAM 0x0509
+
+
+// Values
+#define ILU_PLACEMENT 0x0700
+#define ILU_LOWER_LEFT 0x0701
+#define ILU_LOWER_RIGHT 0x0702
+#define ILU_UPPER_LEFT 0x0703
+#define ILU_UPPER_RIGHT 0x0704
+#define ILU_CENTER 0x0705
+#define ILU_CONVOLUTION_MATRIX 0x0710
+
+#define ILU_VERSION_NUM IL_VERSION_NUM
+#define ILU_VENDOR IL_VENDOR
+
+
+// Languages
+#define ILU_ENGLISH 0x0800
+#define ILU_ARABIC 0x0801
+#define ILU_DUTCH 0x0802
+#define ILU_JAPANESE 0x0803
+#define ILU_SPANISH 0x0804
+#define ILU_GERMAN 0x0805
+#define ILU_FRENCH 0x0806
+
+
+// Filters
+/*
+#define ILU_FILTER_BLUR 0x0803
+#define ILU_FILTER_GAUSSIAN_3x3 0x0804
+#define ILU_FILTER_GAUSSIAN_5X5 0x0805
+#define ILU_FILTER_EMBOSS1 0x0807
+#define ILU_FILTER_EMBOSS2 0x0808
+#define ILU_FILTER_LAPLACIAN1 0x080A
+#define ILU_FILTER_LAPLACIAN2 0x080B
+#define ILU_FILTER_LAPLACIAN3 0x080C
+#define ILU_FILTER_LAPLACIAN4 0x080D
+#define ILU_FILTER_SHARPEN1 0x080E
+#define ILU_FILTER_SHARPEN2 0x080F
+#define ILU_FILTER_SHARPEN3 0x0810
+*/
+
+
+typedef struct ILinfo
+{
+ ILuint Id; // the image's id
+ ILubyte *Data; // the image's data
+ ILuint Width; // the image's width
+ ILuint Height; // the image's height
+ ILuint Depth; // the image's depth
+ ILubyte Bpp; // bytes per pixel (not bits) of the image
+ ILuint SizeOfData; // the total size of the data (in bytes)
+ ILenum Format; // image format (in IL enum style)
+ ILenum Type; // image type (in IL enum style)
+ ILenum Origin; // origin of the image
+ ILubyte *Palette; // the image's palette
+ ILenum PalType; // palette type
+ ILuint PalSize; // palette size
+ ILenum CubeFlags; // flags for what cube map sides are present
+ ILuint NumNext; // number of images following
+ ILuint NumMips; // number of mipmaps
+ ILuint NumLayers; // number of layers
+} ILinfo;
+
+
+typedef struct ILpointf {
+ ILfloat x;
+ ILfloat y;
+} ILpointf;
+
+typedef struct ILpointi {
+ ILint x;
+ ILint y;
+} ILpointi;
+
+ILAPI ILboolean ILAPIENTRY iluAlienify(void);
+ILAPI ILboolean ILAPIENTRY iluBlurAvg(ILuint Iter);
+ILAPI ILboolean ILAPIENTRY iluBlurGaussian(ILuint Iter);
+ILAPI ILboolean ILAPIENTRY iluBuildMipmaps(void);
+ILAPI ILuint ILAPIENTRY iluColoursUsed(void);
+ILAPI ILboolean ILAPIENTRY iluCompareImage(ILuint Comp);
+ILAPI ILboolean ILAPIENTRY iluContrast(ILfloat Contrast);
+ILAPI ILboolean ILAPIENTRY iluCrop(ILuint XOff, ILuint YOff, ILuint ZOff, ILuint Width, ILuint Height, ILuint Depth);
+ILAPI void ILAPIENTRY iluDeleteImage(ILuint Id); // Deprecated
+ILAPI ILboolean ILAPIENTRY iluEdgeDetectE(void);
+ILAPI ILboolean ILAPIENTRY iluEdgeDetectP(void);
+ILAPI ILboolean ILAPIENTRY iluEdgeDetectS(void);
+ILAPI ILboolean ILAPIENTRY iluEmboss(void);
+ILAPI ILboolean ILAPIENTRY iluEnlargeCanvas(ILuint Width, ILuint Height, ILuint Depth);
+ILAPI ILboolean ILAPIENTRY iluEnlargeImage(ILfloat XDim, ILfloat YDim, ILfloat ZDim);
+ILAPI ILboolean ILAPIENTRY iluEqualize(void);
+ILAPI ILconst_string ILAPIENTRY iluErrorString(ILenum Error);
+ILAPI ILboolean ILAPIENTRY iluConvolution(ILint *matrix, ILint scale, ILint bias);
+ILAPI ILboolean ILAPIENTRY iluFlipImage(void);
+ILAPI ILboolean ILAPIENTRY iluGammaCorrect(ILfloat Gamma);
+ILAPI ILuint ILAPIENTRY iluGenImage(void); // Deprecated
+ILAPI void ILAPIENTRY iluGetImageInfo(ILinfo *Info);
+ILAPI ILint ILAPIENTRY iluGetInteger(ILenum Mode);
+ILAPI void ILAPIENTRY iluGetIntegerv(ILenum Mode, ILint *Param);
+ILAPI ILstring ILAPIENTRY iluGetString(ILenum StringName);
+ILAPI void ILAPIENTRY iluImageParameter(ILenum PName, ILenum Param);
+ILAPI void ILAPIENTRY iluInit(void);
+ILAPI ILboolean ILAPIENTRY iluInvertAlpha(void);
+ILAPI ILuint ILAPIENTRY iluLoadImage(ILconst_string FileName);
+ILAPI ILboolean ILAPIENTRY iluMirror(void);
+ILAPI ILboolean ILAPIENTRY iluNegative(void);
+ILAPI ILboolean ILAPIENTRY iluNoisify(ILclampf Tolerance);
+ILAPI ILboolean ILAPIENTRY iluPixelize(ILuint PixSize);
+ILAPI void ILAPIENTRY iluRegionfv(ILpointf *Points, ILuint n);
+ILAPI void ILAPIENTRY iluRegioniv(ILpointi *Points, ILuint n);
+ILAPI ILboolean ILAPIENTRY iluReplaceColour(ILubyte Red, ILubyte Green, ILubyte Blue, ILfloat Tolerance);
+ILAPI ILboolean ILAPIENTRY iluRotate(ILfloat Angle);
+ILAPI ILboolean ILAPIENTRY iluRotate3D(ILfloat x, ILfloat y, ILfloat z, ILfloat Angle);
+ILAPI ILboolean ILAPIENTRY iluSaturate1f(ILfloat Saturation);
+ILAPI ILboolean ILAPIENTRY iluSaturate4f(ILfloat r, ILfloat g, ILfloat b, ILfloat Saturation);
+ILAPI ILboolean ILAPIENTRY iluScale(ILuint Width, ILuint Height, ILuint Depth);
+ILAPI ILboolean ILAPIENTRY iluScaleAlpha(ILfloat scale);
+ILAPI ILboolean ILAPIENTRY iluScaleColours(ILfloat r, ILfloat g, ILfloat b);
+ILAPI ILboolean ILAPIENTRY iluSetLanguage(ILenum Language);
+ILAPI ILboolean ILAPIENTRY iluSharpen(ILfloat Factor, ILuint Iter);
+ILAPI ILboolean ILAPIENTRY iluSwapColours(void);
+ILAPI ILboolean ILAPIENTRY iluWave(ILfloat Angle);
+
+#define iluColorsUsed iluColoursUsed
+#define iluSwapColors iluSwapColours
+#define iluReplaceColor iluReplaceColour
+#define iluScaleColor iluScaleColour
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __ILU_H__
+#endif // __ilu_h_
diff --git a/mcclone/external/devil178/include/IL/ilu_region.h b/mcclone/external/devil178/include/IL/ilu_region.h
new file mode 100644
index 0000000..b5b3adc
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/ilu_region.h
@@ -0,0 +1,25 @@
+//-----------------------------------------------------------------------------
+//
+// ImageLib Utility Sources
+// Copyright (C) 2000-2002 by Denton Woods
+// Last modified: 07/09/2002 <--Y2K Compliant! =]
+//
+// Filename: src-ILU/src/ilu_region.h
+//
+// Description: Creates an image region.
+//
+//-----------------------------------------------------------------------------
+
+#ifndef ILU_REGION_H
+#define ILU_REGION_H
+
+typedef struct Edge
+{
+ ILint yUpper;
+ ILfloat xIntersect, dxPerScan;
+ struct Edge *next;
+} Edge;
+
+
+#endif//ILU_REGION_H
+
diff --git a/mcclone/external/devil178/include/IL/ilut.h b/mcclone/external/devil178/include/IL/ilut.h
new file mode 100644
index 0000000..4a84b84
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/ilut.h
@@ -0,0 +1,390 @@
+//-----------------------------------------------------------------------------
+//
+// ImageLib Utility Toolkit Sources
+// Copyright (C) 2000-2009 by Denton Woods
+// Last modified: 03/07/2009
+//
+// Filename: IL/ilut.h
+//
+// Description: The main include file for ILUT
+//
+//-----------------------------------------------------------------------------
+
+// Doxygen comment
+/*! \file ilut.h
+ The main include file for ILUT
+*/
+
+#ifndef __ilut_h_
+#ifndef __ILUT_H__
+
+#define __ilut_h_
+#define __ILUT_H__
+
+#include
+#include
+
+
+//-----------------------------------------------------------------------------
+// Defines
+//-----------------------------------------------------------------------------
+
+#define ILUT_VERSION_1_7_8 1
+#define ILUT_VERSION 178
+
+
+// Attribute Bits
+#define ILUT_OPENGL_BIT 0x00000001
+#define ILUT_D3D_BIT 0x00000002
+#define ILUT_ALL_ATTRIB_BITS 0x000FFFFF
+
+
+// Error Types
+#define ILUT_INVALID_ENUM 0x0501
+#define ILUT_OUT_OF_MEMORY 0x0502
+#define ILUT_INVALID_VALUE 0x0505
+#define ILUT_ILLEGAL_OPERATION 0x0506
+#define ILUT_INVALID_PARAM 0x0509
+#define ILUT_COULD_NOT_OPEN_FILE 0x050A
+#define ILUT_STACK_OVERFLOW 0x050E
+#define ILUT_STACK_UNDERFLOW 0x050F
+#define ILUT_BAD_DIMENSIONS 0x0511
+#define ILUT_NOT_SUPPORTED 0x0550
+
+
+// State Definitions
+#define ILUT_PALETTE_MODE 0x0600
+#define ILUT_OPENGL_CONV 0x0610
+#define ILUT_D3D_MIPLEVELS 0x0620
+#define ILUT_MAXTEX_WIDTH 0x0630
+#define ILUT_MAXTEX_HEIGHT 0x0631
+#define ILUT_MAXTEX_DEPTH 0x0632
+#define ILUT_GL_USE_S3TC 0x0634
+#define ILUT_D3D_USE_DXTC 0x0634
+#define ILUT_GL_GEN_S3TC 0x0635
+#define ILUT_D3D_GEN_DXTC 0x0635
+#define ILUT_S3TC_FORMAT 0x0705
+#define ILUT_DXTC_FORMAT 0x0705
+#define ILUT_D3D_POOL 0x0706
+#define ILUT_D3D_ALPHA_KEY_COLOR 0x0707
+#define ILUT_D3D_ALPHA_KEY_COLOUR 0x0707
+#define ILUT_FORCE_INTEGER_FORMAT 0x0636
+
+//This new state does automatic texture target detection
+//if enabled. Currently, only cubemap detection is supported.
+//if the current image is no cubemap, the 2d texture is chosen.
+#define ILUT_GL_AUTODETECT_TEXTURE_TARGET 0x0807
+
+
+// Values
+#define ILUT_VERSION_NUM IL_VERSION_NUM
+#define ILUT_VENDOR IL_VENDOR
+
+// The different rendering api's...more to be added later?
+#define ILUT_OPENGL 0
+#define ILUT_ALLEGRO 1
+#define ILUT_WIN32 2
+#define ILUT_DIRECT3D8 3
+#define ILUT_DIRECT3D9 4
+#define ILUT_X11 5
+#define ILUT_DIRECT3D10 6
+
+/*
+// Includes specific config
+#ifdef DJGPP
+ #define ILUT_USE_ALLEGRO
+#elif _WIN32_WCE
+ #define ILUT_USE_WIN32
+#elif _WIN32
+ //#ifdef __GNUC__ //__CYGWIN32__ (Cygwin seems to not define this with DevIL builds)
+ #define ILUT_USE_WIN32
+ #include "IL/config.h"
+
+ // Temporary fix for the SDL main() linker bug.
+ //#ifdef ILUT_USE_SDL
+ //#undef ILUT_USE_SDL
+ //#endif//ILUT_USE_SDL
+
+ //#else
+ // #define ILUT_USE_WIN32
+ // #define ILUT_USE_OPENGL
+ // #define ILUT_USE_SDL
+ // #define ILUT_USE_DIRECTX8
+ //#endif
+#elif BEOS // Don't know the #define
+ #define ILUT_USE_BEOS
+ #define ILUT_USE_OPENGL
+#elif MACOSX
+ #define ILUT_USE_OPENGL
+#else
+
+ // We are surely using a *nix so the configure script
+ // may have written the configured config.h header
+ #include "IL/config.h"
+#endif
+*/
+
+#if (defined(_WIN32) || defined(_WIN64))
+ #if (defined(IL_USE_PRAGMA_LIBS)) && (!defined(_IL_BUILD_LIBRARY))
+ #if defined(_MSC_VER) || defined(__BORLANDC__)
+ #pragma comment(lib, "ILUT.lib")
+ #endif
+ #endif
+
+ #include
+#endif
+
+
+
+//this should remain private and hidden
+//#include "IL/config.h"
+
+//////////////
+// OpenGL
+//////////////
+
+#ifdef ILUT_USE_OPENGL
+ #if defined(_MSC_VER) || defined(_WIN32)
+ //#define WIN32_LEAN_AND_MEAN
+ #include
+ #endif//_MSC_VER
+
+ #ifdef __APPLE__
+ #include
+ #include
+ #else
+ #include
+ #include
+ #endif//__APPLE__
+#endif
+
+
+#ifdef ILUT_USE_WIN32
+ //#define WIN32_LEAN_AND_MEAN
+ #ifdef _DEBUG
+ #define _CRTDBG_MAP_ALLOC
+ #include
+ #ifndef _WIN32_WCE
+ #include
+ #endif
+ #endif
+ #include
+#endif
+
+
+//
+// If we can avoid including these in all cases thing tend to break less
+// and we can keep all of them defined as available
+//
+// Kriss
+//
+
+// ImageLib Utility Toolkit's Allegro Functions
+#ifdef ILUT_USE_ALLEGRO
+// #include
+#endif//ILUT_USE_ALLEGRO
+
+#ifdef ILUT_USE_SDL
+// #include
+#endif
+
+#ifdef ILUT_USE_DIRECTX8
+ #include
+#endif//ILUT_USE_DIRECTX9
+
+#ifdef ILUT_USE_DIRECTX9
+ #include
+#endif//ILUT_USE_DIRECTX9
+
+#ifdef ILUT_USE_DIRECTX10
+ #pragma warning(push)
+ #pragma warning(disable : 4201) // Disables 'nonstandard extension used : nameless struct/union' warning
+ #include
+ #include
+ #include
+ #pragma warning(pop)
+#endif//ILUT_USE_DIRECTX10
+
+#ifdef ILUT_USE_X11
+ #include
+ #include
+#ifdef ILUT_USE_XSHM
+ #include
+ #include
+ #include
+#endif//ILUT_USE_XSHM
+#endif//ILUT_USE_X11
+
+
+
+//-----------------------------------------------------------------------------
+// Functions
+//-----------------------------------------------------------------------------
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// ImageLib Utility Toolkit Functions
+ILAPI ILboolean ILAPIENTRY ilutDisable(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilutEnable(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilutGetBoolean(ILenum Mode);
+ILAPI void ILAPIENTRY ilutGetBooleanv(ILenum Mode, ILboolean *Param);
+ILAPI ILint ILAPIENTRY ilutGetInteger(ILenum Mode);
+ILAPI void ILAPIENTRY ilutGetIntegerv(ILenum Mode, ILint *Param);
+ILAPI ILstring ILAPIENTRY ilutGetString(ILenum StringName);
+ILAPI void ILAPIENTRY ilutInit(void);
+ILAPI ILboolean ILAPIENTRY ilutIsDisabled(ILenum Mode);
+ILAPI ILboolean ILAPIENTRY ilutIsEnabled(ILenum Mode);
+ILAPI void ILAPIENTRY ilutPopAttrib(void);
+ILAPI void ILAPIENTRY ilutPushAttrib(ILuint Bits);
+ILAPI void ILAPIENTRY ilutSetInteger(ILenum Mode, ILint Param);
+
+ILAPI ILboolean ILAPIENTRY ilutRenderer(ILenum Renderer);
+
+
+// ImageLib Utility Toolkit's OpenGL Functions
+#ifdef ILUT_USE_OPENGL
+ ILAPI GLuint ILAPIENTRY ilutGLBindTexImage();
+ ILAPI GLuint ILAPIENTRY ilutGLBindMipmaps(void);
+ ILAPI ILboolean ILAPIENTRY ilutGLBuildMipmaps(void);
+ ILAPI GLuint ILAPIENTRY ilutGLLoadImage(ILstring FileName);
+ ILAPI ILboolean ILAPIENTRY ilutGLScreen(void);
+ ILAPI ILboolean ILAPIENTRY ilutGLScreenie(void);
+ ILAPI ILboolean ILAPIENTRY ilutGLSaveImage(ILstring FileName, GLuint TexID);
+ ILAPI ILboolean ILAPIENTRY ilutGLSubTex2D(GLuint TexID, ILuint XOff, ILuint YOff);
+ ILAPI ILboolean ILAPIENTRY ilutGLSubTex3D(GLuint TexID, ILuint XOff, ILuint YOff, ILuint ZOff);
+ ILAPI ILboolean ILAPIENTRY ilutGLSetTex2D(GLuint TexID);
+ ILAPI ILboolean ILAPIENTRY ilutGLSetTex3D(GLuint TexID);
+ ILAPI ILboolean ILAPIENTRY ilutGLTexImage(GLuint Level);
+ ILAPI ILboolean ILAPIENTRY ilutGLSubTex(GLuint TexID, ILuint XOff, ILuint YOff);
+
+ ILAPI ILboolean ILAPIENTRY ilutGLSetTex(GLuint TexID); // Deprecated - use ilutGLSetTex2D.
+ ILAPI ILboolean ILAPIENTRY ilutGLSubTex(GLuint TexID, ILuint XOff, ILuint YOff); // Use ilutGLSubTex2D.
+#endif//ILUT_USE_OPENGL
+
+
+// ImageLib Utility Toolkit's Allegro Functions
+#ifdef ILUT_USE_ALLEGRO
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ #include
+ #ifdef __cplusplus
+ }
+ #endif
+
+ ILAPI BITMAP* ILAPIENTRY ilutAllegLoadImage(ILstring FileName);
+ ILAPI BITMAP* ILAPIENTRY ilutConvertToAlleg(PALETTE Pal);
+#endif//ILUT_USE_ALLEGRO
+
+
+// ImageLib Utility Toolkit's SDL Functions
+#ifdef ILUT_USE_SDL
+ ILAPI struct SDL_Surface* ILAPIENTRY ilutConvertToSDLSurface(unsigned int flags);
+ ILAPI struct SDL_Surface* ILAPIENTRY ilutSDLSurfaceLoadImage(ILstring FileName);
+ ILAPI ILboolean ILAPIENTRY ilutSDLSurfaceFromBitmap(struct SDL_Surface *Bitmap);
+#endif//ILUT_USE_SDL
+
+
+// ImageLib Utility Toolkit's BeOS Functions
+#ifdef ILUT_USE_BEOS
+ ILAPI BBitmap ILAPIENTRY ilutConvertToBBitmap(void);
+#endif//ILUT_USE_BEOS
+
+
+// ImageLib Utility Toolkit's Win32 GDI Functions
+#ifdef ILUT_USE_WIN32
+ ILAPI HBITMAP ILAPIENTRY ilutConvertToHBitmap(HDC hDC);
+ ILAPI HBITMAP ILAPIENTRY ilutConvertSliceToHBitmap(HDC hDC, ILuint slice);
+ ILAPI void ILAPIENTRY ilutFreePaddedData(ILubyte *Data);
+ ILAPI void ILAPIENTRY ilutGetBmpInfo(BITMAPINFO *Info);
+ ILAPI HPALETTE ILAPIENTRY ilutGetHPal(void);
+ ILAPI ILubyte* ILAPIENTRY ilutGetPaddedData(void);
+ ILAPI ILboolean ILAPIENTRY ilutGetWinClipboard(void);
+ ILAPI ILboolean ILAPIENTRY ilutLoadResource(HINSTANCE hInst, ILint ID, ILstring ResourceType, ILenum Type);
+ ILAPI ILboolean ILAPIENTRY ilutSetHBitmap(HBITMAP Bitmap);
+ ILAPI ILboolean ILAPIENTRY ilutSetHPal(HPALETTE Pal);
+ ILAPI ILboolean ILAPIENTRY ilutSetWinClipboard(void);
+ ILAPI HBITMAP ILAPIENTRY ilutWinLoadImage(ILstring FileName, HDC hDC);
+ ILAPI ILboolean ILAPIENTRY ilutWinLoadUrl(ILstring Url);
+ ILAPI ILboolean ILAPIENTRY ilutWinPrint(ILuint XPos, ILuint YPos, ILuint Width, ILuint Height, HDC hDC);
+ ILAPI ILboolean ILAPIENTRY ilutWinSaveImage(ILstring FileName, HBITMAP Bitmap);
+#endif//ILUT_USE_WIN32
+
+// ImageLib Utility Toolkit's DirectX 8 Functions
+#ifdef ILUT_USE_DIRECTX8
+// ILAPI void ILAPIENTRY ilutD3D8MipFunc(ILuint NumLevels);
+ ILAPI struct IDirect3DTexture8* ILAPIENTRY ilutD3D8Texture(struct IDirect3DDevice8 *Device);
+ ILAPI struct IDirect3DVolumeTexture8* ILAPIENTRY ilutD3D8VolumeTexture(struct IDirect3DDevice8 *Device);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromFile(struct IDirect3DDevice8 *Device, char *FileName, struct IDirect3DTexture8 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromFile(struct IDirect3DDevice8 *Device, char *FileName, struct IDirect3DVolumeTexture8 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromFileInMemory(struct IDirect3DDevice8 *Device, void *Lump, ILuint Size, struct IDirect3DTexture8 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromFileInMemory(struct IDirect3DDevice8 *Device, void *Lump, ILuint Size, struct IDirect3DVolumeTexture8 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromFileHandle(struct IDirect3DDevice8 *Device, ILHANDLE File, struct IDirect3DTexture8 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromFileHandle(struct IDirect3DDevice8 *Device, ILHANDLE File, struct IDirect3DVolumeTexture8 **Texture);
+ // These two are not tested yet.
+ ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromResource(struct IDirect3DDevice8 *Device, HMODULE SrcModule, char *SrcResource, struct IDirect3DTexture8 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromResource(struct IDirect3DDevice8 *Device, HMODULE SrcModule, char *SrcResource, struct IDirect3DVolumeTexture8 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D8LoadSurface(struct IDirect3DDevice8 *Device, struct IDirect3DSurface8 *Surface);
+#endif//ILUT_USE_DIRECTX8
+
+#ifdef ILUT_USE_DIRECTX9
+ #pragma warning(push)
+ #pragma warning(disable : 4115) // Disables 'named type definition in parentheses' warning
+// ILAPI void ILAPIENTRY ilutD3D9MipFunc(ILuint NumLevels);
+ ILAPI struct IDirect3DTexture9* ILAPIENTRY ilutD3D9Texture (struct IDirect3DDevice9* Device);
+ ILAPI struct IDirect3DVolumeTexture9* ILAPIENTRY ilutD3D9VolumeTexture (struct IDirect3DDevice9* Device);
+ ILAPI struct IDirect3DCubeTexture9* ILAPIENTRY ilutD3D9CubeTexture (struct IDirect3DDevice9* Device);
+
+ ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromFile(struct IDirect3DDevice9 *Device, ILconst_string FileName, struct IDirect3DCubeTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromFileInMemory(struct IDirect3DDevice9 *Device, void *Lump, ILuint Size, struct IDirect3DCubeTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromFileHandle(struct IDirect3DDevice9 *Device, ILHANDLE File, struct IDirect3DCubeTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromResource(struct IDirect3DDevice9 *Device, HMODULE SrcModule, ILconst_string SrcResource, struct IDirect3DCubeTexture9 **Texture);
+
+ ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromFile(struct IDirect3DDevice9 *Device, ILconst_string FileName, struct IDirect3DTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromFile(struct IDirect3DDevice9 *Device, ILconst_string FileName, struct IDirect3DVolumeTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromFileInMemory(struct IDirect3DDevice9 *Device, void *Lump, ILuint Size, struct IDirect3DTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromFileInMemory(struct IDirect3DDevice9 *Device, void *Lump, ILuint Size, struct IDirect3DVolumeTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromFileHandle(struct IDirect3DDevice9 *Device, ILHANDLE File, struct IDirect3DTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromFileHandle(struct IDirect3DDevice9 *Device, ILHANDLE File, struct IDirect3DVolumeTexture9 **Texture);
+
+ // These three are not tested yet.
+ ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromResource(struct IDirect3DDevice9 *Device, HMODULE SrcModule, ILconst_string SrcResource, struct IDirect3DTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromResource(struct IDirect3DDevice9 *Device, HMODULE SrcModule, ILconst_string SrcResource, struct IDirect3DVolumeTexture9 **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D9LoadSurface(struct IDirect3DDevice9 *Device, struct IDirect3DSurface9 *Surface);
+ #pragma warning(pop)
+#endif//ILUT_USE_DIRECTX9
+
+#ifdef ILUT_USE_DIRECTX10
+ ILAPI ID3D10Texture2D* ILAPIENTRY ilutD3D10Texture(ID3D10Device *Device);
+ ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromFile(ID3D10Device *Device, ILconst_string FileName, ID3D10Texture2D **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromFileInMemory(ID3D10Device *Device, void *Lump, ILuint Size, ID3D10Texture2D **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromResource(ID3D10Device *Device, HMODULE SrcModule, ILconst_string SrcResource, ID3D10Texture2D **Texture);
+ ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromFileHandle(ID3D10Device *Device, ILHANDLE File, ID3D10Texture2D **Texture);
+#endif//ILUT_USE_DIRECTX10
+
+
+
+#ifdef ILUT_USE_X11
+ ILAPI XImage * ILAPIENTRY ilutXCreateImage( Display* );
+ ILAPI Pixmap ILAPIENTRY ilutXCreatePixmap( Display*,Drawable );
+ ILAPI XImage * ILAPIENTRY ilutXLoadImage( Display*,char* );
+ ILAPI Pixmap ILAPIENTRY ilutXLoadPixmap( Display*,Drawable,char* );
+#ifdef ILUT_USE_XSHM
+ ILAPI XImage * ILAPIENTRY ilutXShmCreateImage( Display*,XShmSegmentInfo* );
+ ILAPI void ILAPIENTRY ilutXShmDestroyImage( Display*,XImage*,XShmSegmentInfo* );
+ ILAPI Pixmap ILAPIENTRY ilutXShmCreatePixmap( Display*,Drawable,XShmSegmentInfo* );
+ ILAPI void ILAPIENTRY ilutXShmFreePixmap( Display*,Pixmap,XShmSegmentInfo* );
+ ILAPI XImage * ILAPIENTRY ilutXShmLoadImage( Display*,char*,XShmSegmentInfo* );
+ ILAPI Pixmap ILAPIENTRY ilutXShmLoadPixmap( Display*,Drawable,char*,XShmSegmentInfo* );
+#endif//ILUT_USE_XSHM
+#endif//ILUT_USE_X11
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __ILUT_H__
+#endif // __ilut_h_
diff --git a/mcclone/external/devil178/include/IL/ilut_config.h b/mcclone/external/devil178/include/IL/ilut_config.h
new file mode 100644
index 0000000..2b3625b
--- /dev/null
+++ b/mcclone/external/devil178/include/IL/ilut_config.h
@@ -0,0 +1,26 @@
+#ifndef __ILUT_CONFIG_H__
+#define __ILUT_CONFIG_H__
+
+#define IL_USE_PRAGMA_LIBS
+
+// Supported APIs (ILUT)
+
+//
+// sorry just
+// cant get this one to work under windows
+// have disabled for the now
+//
+// will look at it some more later
+//
+// Kriss
+//
+#undef ILUT_USE_ALLEGRO
+
+#undef ILUT_USE_DIRECTX8
+//#define ILUT_USE_DIRECTX9
+//#define ILUT_USE_DIRECTX10
+#define ILUT_USE_OPENGL
+//#define ILUT_USE_SDL
+#define ILUT_USE_WIN32
+
+#endif//__ILUT_CONFIG_H__
diff --git a/mcclone/external/devil178/lib/DevIL.dll b/mcclone/external/devil178/lib/DevIL.dll
new file mode 100644
index 0000000000000000000000000000000000000000..b7a4c0906a33c7cd4a2f0c29d4863b5a048ed055
GIT binary patch
literal 764416
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 |