From 18b7ce6bc9116432f58d649267ddc93638b135a8 Mon Sep 17 00:00:00 2001 From: rna88 Date: Sat, 10 Mar 2018 20:07:10 -0800 Subject: [PATCH] Initial commit. --- .gitmodules | 6 + README.md | 27 + enet | 1 + examples/Example1/Makefile | 28 + examples/Example1/main.cpp | 252 ++++++++ examples/Example2/Makefile | 28 + examples/Example2/main.cpp | 230 +++++++ examples/Tutorial/Makefile | 28 + examples/Tutorial/main.cpp | 177 +++++ examples/bin/Example1 | Bin 0 -> 299712 bytes examples/bin/Example2 | Bin 0 -> 316136 bytes examples/bin/Tutorial | Bin 0 -> 297608 bytes examples/linux_compile_all.sh | 15 + include/CEncryption.h | 411 ++++++++++++ include/CNetManager.h | 120 ++++ include/INetManager.h | 242 +++++++ include/NoIrrlicht/IrrCompileConfig.h | 351 ++++++++++ include/NoIrrlicht/NoIrrlicht.h | 9 + include/NoIrrlicht/heapsort.h | 71 ++ include/NoIrrlicht/irrAllocator.h | 116 ++++ include/NoIrrlicht/irrArray.h | 515 +++++++++++++++ include/NoIrrlicht/irrMath.h | 456 +++++++++++++ include/NoIrrlicht/irrString.h | 891 ++++++++++++++++++++++++++ include/NoIrrlicht/irrTypes.h | 159 +++++ include/NoIrrlicht/vector3d.h | 287 +++++++++ include/SPacket.h | 166 +++++ include/irrNet.h | 28 + lib/libirrnet.a | Bin 0 -> 263420 bytes source/CMakeLists.txt | 57 ++ source/CNetManager.cpp | 463 +++++++++++++ source/CNetManager.d | 10 + source/CNetManager.o | Bin 0 -> 33232 bytes source/Makefile | 56 ++ source/ReadMe.txt | 51 ++ source/SPacket.cpp | 477 ++++++++++++++ source/SPacket.d | 6 + source/SPacket.o | Bin 0 -> 41304 bytes zlib | 1 + 38 files changed, 5735 insertions(+) create mode 100644 .gitmodules create mode 100644 README.md create mode 160000 enet create mode 100644 examples/Example1/Makefile create mode 100644 examples/Example1/main.cpp create mode 100644 examples/Example2/Makefile create mode 100644 examples/Example2/main.cpp create mode 100644 examples/Tutorial/Makefile create mode 100644 examples/Tutorial/main.cpp create mode 100755 examples/bin/Example1 create mode 100755 examples/bin/Example2 create mode 100755 examples/bin/Tutorial create mode 100755 examples/linux_compile_all.sh create mode 100644 include/CEncryption.h create mode 100644 include/CNetManager.h create mode 100644 include/INetManager.h create mode 100644 include/NoIrrlicht/IrrCompileConfig.h create mode 100644 include/NoIrrlicht/NoIrrlicht.h create mode 100644 include/NoIrrlicht/heapsort.h create mode 100644 include/NoIrrlicht/irrAllocator.h create mode 100644 include/NoIrrlicht/irrArray.h create mode 100644 include/NoIrrlicht/irrMath.h create mode 100644 include/NoIrrlicht/irrString.h create mode 100644 include/NoIrrlicht/irrTypes.h create mode 100644 include/NoIrrlicht/vector3d.h create mode 100644 include/SPacket.h create mode 100644 include/irrNet.h create mode 100644 lib/libirrnet.a create mode 100644 source/CMakeLists.txt create mode 100644 source/CNetManager.cpp create mode 100644 source/CNetManager.d create mode 100644 source/CNetManager.o create mode 100644 source/Makefile create mode 100644 source/ReadMe.txt create mode 100644 source/SPacket.cpp create mode 100644 source/SPacket.d create mode 100644 source/SPacket.o create mode 160000 zlib diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..60894cf --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "zlib"] + path = zlib + url = https://github.com/madler/zlib +[submodule "enet"] + path = enet + url = https://github.com/rna88/enet diff --git a/README.md b/README.md new file mode 100644 index 0000000..93a58fc --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +## Irrnet + +An updated version of the (irrNetLite)[http://irrlicht.sourceforge.net/forum/viewtopic.php?f=6&t=22658] networking library compiled against recent versions of (enet)[https://github.com/lsalzman/enet] and (zlib)[https://github.com/madler/zlib]. + +## Compiling for Linux + +When cloning use the `--recurse-submodules` flag to retrieve the enet and zlib libraries needed by the project: + +`git clone --recurse-submodules https://github.com/rna88/irrnet.git` + +Then run `make` in the `source/` directory to build the library. + +## Building examples + +Navigate to `examples/` and run: + +`./linux_buildAllExamples.sh` + +or to build them with optimizations: + +`./linux_buildAllExamples.sh release` + +The compiled binaries will be found in `examples/bin/` + + + +Original code by Ahmed Hilali. diff --git a/enet b/enet new file mode 160000 index 0000000..7900e72 --- /dev/null +++ b/enet @@ -0,0 +1 @@ +Subproject commit 7900e72b709798ac285431bf1860014c6e1caf91 diff --git a/examples/Example1/Makefile b/examples/Example1/Makefile new file mode 100644 index 0000000..f5c46fc --- /dev/null +++ b/examples/Example1/Makefile @@ -0,0 +1,28 @@ +CXX = g++ +Target := Example1 +TargetPath := ../bin/ +Sources := main.cpp + +CXXINCS = -I../../include/ + +#ifndef NDEBUG +CXXFLAGS_D = -g -Wall +#else +CXXFLAGS_R = -fexpensive-optimizations -O3 +#endif + +LDIR =../../lib/ +LIBS = -L$(LDIR) -lirrnet + +debug: main.cpp + $(CXX) $(CXXFLAGS_D) $(CXXINCS) -o $(Target) $(Sources) $(LIBS) + mv $(Target) $(TargetPath) + +release: main.cpp + $(CXX) $(CXXFLAGS_R) $(CXXINCS) -o $(Target) $(Sources) $(LIBS) + mv $(Target) $(TargetPath) + +clean: + rm -f *.o $(TargetPath)$(Target) + +.PHONY: clean debug release diff --git a/examples/Example1/main.cpp b/examples/Example1/main.cpp new file mode 100644 index 0000000..bfbc8ce --- /dev/null +++ b/examples/Example1/main.cpp @@ -0,0 +1,252 @@ +/* +Example 1: Packet Identification. + +In this example I will expain the basics of packet identification. +For a more basic introduction please refer to Tutorial.cpp first. +(Recommended) +*/ + +// Do the usual things here. +#include +#include + +using namespace irr; + +#pragma comment(lib, "irrNetLite.lib") +#pragma comment(lib, "ws2_32.lib") + +// Now, in this example, I will teach you the basics of packet +// identification. What is packet identification? For instance, +// lets say the client sends 3 floating point values to the server, +// how will the server now if these represent a position, a rotation, +// or something completely different? How will it even know these +// are floating point values and not integers, or maybe a 12-byte +// string? Obviously, we need some kind of mechanism to define this. +// So in this example, we are going to define a few basic packet +// types, that let us differentiate between the different kinds of +// information coming into our client/server. + +// I will start off by creating an enum that holds a simple id +// for each of our packet types. (Note, you don't have to +// explicitly set the values like I do, I am just doing that +// for clarity.) +enum E_PACKET_TYPE +{ + EPT_ROTATION = 1, + EPT_POWER = 2, + EPT_MESSAGE = 3 +}; + +// In this example we will create 2 different callback classes, one +// for the clients and one for the server. We will have an imaginary +// cannon on the server, and the clients can send messages to change +// it's angle and power. + +// The server callback. +class ServerNetCallback : public net::INetCallback +{ + // We will store a pointer to the net manager. + net::INetManager* netManager; + + // Here we will store the cannon's power and angle. + // Remember that f32 is just a typedef for float. + f32 cannonPower; + f32 cannonAngle; +public: + ServerNetCallback(net::INetManager* netManagerIn) : netManager(netManagerIn) {} + + + // Our handlePacket function. + virtual void handlePacket(net::SInPacket& packet) + { + // The packets will use a single char to store + // the packet identifier, remember to use the + // smallest possible datatype for storing your + // packet identifiers. c8 is a typedef for char. + c8 packetid; + packet >> packetid; + + // Here we will switch based on the packet id. + switch((E_PACKET_TYPE)packetid) + { + case EPT_ROTATION: + // We obtain the cannon angle from the packet. + packet >> cannonAngle; + std::cout << "The cannon angle is now " << cannonAngle << std::endl; + break; + case EPT_POWER: + // Same here. + packet >> cannonPower; + std::cout << "The cannon power is now " << cannonPower << std::endl; + break; + case EPT_MESSAGE: + // Now this is a special case (Pun intended, or is it even a pun?... nevermind), + // The client has sent us a message as a string, so we will just print that + // to the console. + core::stringc message; + packet >> message; + + // We can obtain a unique "player id" from a packet identifying the client that + // sent it. More details about the player id in a later example, for now we will + // just print it out with the message so we know whos saying what. + std::cout << "Client " << packet.getPlayerId() << " says: " << message.c_str(); + std::cout << std::endl; + break; + } + + // After handling a packet, we will send an updated status of the cannon to all clients. + net::SOutPacket rotationPacket; + + // The packet id is the first thing that goes in a packet. Note that I am casting it to a char, + // because that is what we want to store it as, to save space. Be careful to use the same types + // when sending and receiving, don't send as a char and receive as an int, it will cause trouble. + rotationPacket << (c8)EPT_ROTATION; + rotationPacket << cannonAngle; + + // Send the packet to all connected clients. + netManager->sendOutPacket(rotationPacket); + + // Send a power update too. + net::SOutPacket powerPacket; + powerPacket << (c8)EPT_POWER; + powerPacket << cannonPower; + netManager->sendOutPacket(powerPacket); + } +}; + +// The client callback. +class ClientNetCallback : public net::INetCallback +{ +public: + // Our handlePacket function. + virtual void handlePacket(net::SInPacket& packet) + { + // Just like the server, we obtain the packet id and print + // the information based on the packet we received. I hope the + // rest of this function is self-explanatory. + c8 packetid; + packet >> packetid; + + switch((E_PACKET_TYPE)packetid) + { + case EPT_ROTATION: + f32 cannonAngle; + packet >> cannonAngle; + std::cout << "Server says that the cannon angle is now " << cannonAngle << std::endl; + break; + case EPT_POWER: + f32 cannonPower; + packet >> cannonPower; + std::cout << "Server says that the cannon power is now " << cannonPower << std::endl; + break; + default: + // We don't care about any other types, so we catch them here and break. + break; + } + } +}; + +int main() +{ + // Ask the user whether they want to be the server or a client. + std::cout << "Client (c) or Server (s)?"; + char i; + std::cin >> i; + + // If they typed 's' they are the server else they are the client. + if(i == 's') + { + // Create an irrNetLite server. + net::INetManager* netManager = net::createIrrNetServer(0); + + // Pass in a server specific net callback. + ServerNetCallback* serverCallback = new ServerNetCallback(netManager); + netManager->setNetCallback(serverCallback); + // Here we update like usual, most of the logic is in the callback. + while(netManager->getConnectionStatus() != net::EICS_FAILED) + netManager->update(1000); + + // Delete everything. + delete netManager; + delete serverCallback; + } + else + { + // Create a client and pass in the client callback. + // You may want to change the ip address to a remote one and experiment + // with connecting to a remote host. + ClientNetCallback* clientCallback = new ClientNetCallback(); + net::INetManager* netManager = net::createIrrNetClient(clientCallback, "127.0.0.1"); + + // Print a simple menu. + std::cout << "Example 1. What would you like to do?" << std::endl + << "1. Change the cannon rotation." << std::endl + << "2. Change the cannon power." << std::endl + << "3. Send a message." << std::endl; + + // Take the input. + char i = 0; + std::cin >> i; + + // Switch based on input. + switch(i) + { + case '1': + { + // Here we create a rotation packet and send it to the server. + net::SOutPacket rotationPacket; + rotationPacket << (c8)EPT_ROTATION; // Remember to cast to the correct type. + + // Ask for the rotation. + f32 rotation; + std::cout << "Please enter a rotation: "; + std::cin >> rotation; + rotationPacket << rotation; + netManager->sendOutPacket(rotationPacket); + break; + } + case '2': + { + // And here we create a power packet and send it to the server. + net::SOutPacket powerPacket; + powerPacket << (c8)EPT_POWER; // Remember to cast to the correct type. + // Ask for the power. + f32 power; + std::cout << "Please enter the power: "; + std::cin >> power; + powerPacket << power; + netManager->sendOutPacket(powerPacket); + break; + } + case '3': + { + // We'll also send the server a message in the form of a string. + net::SOutPacket messagePacket; + messagePacket << (c8)EPT_MESSAGE; // Remember to cast to the correct type. + // Ask for the message. + char message[512] = {}; + std::cout << "Please enter a message:" << std::endl; + std::cin >> message; + messagePacket << message; + netManager->sendOutPacket(messagePacket); + break; + } + default: + break; + } + + // Here is the update loop, we will exit if there is a connection problem. + while(netManager->getConnectionStatus() != net::EICS_FAILED) + { + // Here we update. + netManager->update(1000); + } + + // Clean up. + delete netManager; + delete clientCallback; + } + + // And we're done, return 0 and make like a banana. + return 0; +} diff --git a/examples/Example2/Makefile b/examples/Example2/Makefile new file mode 100644 index 0000000..b8c38ed --- /dev/null +++ b/examples/Example2/Makefile @@ -0,0 +1,28 @@ +CXX = g++ +Target := Example2 +TargetPath := ../bin/ +Sources := main.cpp + +CXXINCS = -I../../include/ + +#ifndef NDEBUG +CXXFLAGS_D = -g -Wall +#else +CXXFLAGS_R = -fexpensive-optimizations -O3 +#endif + +LDIR =../../lib/ +LIBS = -L$(LDIR) -lirrnet + +debug: main.cpp + $(CXX) $(CXXFLAGS_D) $(CXXINCS) -o $(Target) $(Sources) $(LIBS) + mv $(Target) $(TargetPath) + +release: main.cpp + $(CXX) $(CXXFLAGS_R) $(CXXINCS) -o $(Target) $(Sources) $(LIBS) + mv $(Target) $(TargetPath) + +clean: + rm -f *.o $(TargetPath)$(Target) + +.PHONY: clean debug release diff --git a/examples/Example2/main.cpp b/examples/Example2/main.cpp new file mode 100644 index 0000000..5fcc50e --- /dev/null +++ b/examples/Example2/main.cpp @@ -0,0 +1,230 @@ +/* +Example 2: Client management. + +In this example I will demonstrate client management. +For a more basic introduction please refer to Tutorial.cpp first. +(Recommended) +*/ + +// Do the usual things here. +#include +#include + +using namespace irr; + +#pragma comment(lib, "irrNetLite.lib") +#pragma comment(lib, "ws2_32.lib") + +// In this tutorial, I will show you how to kick/ban clients, +// set a limit on how many clients can join a server, and +// respond when a client connects/disconnects. + +// Our server callback will be doing a little more than just +// handling packets this time. We will override 2 more virtual +// methods, onConnect and onDisconnect, that will notify us +// with the player id of the client that has just connected or +// disconnected. What is a player id? A player id is a unique +// number that irrNetLite assigns to a client when they connect +// to the server. The ids will start at 1 and grow until there +// are no available slots left. Ids are not specific to a +// computer or ip address, and are re-used when freed, +// so if the client with played id 1 disconnects, and +// a different one connects, he will take over that player id. +// You may be thinking, "But how do I know which player is +// connecting?" or, "How can I ban a player with a specific +// ip address using this system?". These questions will be +// answered in this tutorial, so pay close attention. +class ServerNetCallback : public net::INetCallback +{ +public: + ServerNetCallback(net::INetManager* netManagerIn) : netManager(netManagerIn) {} + + // Override the "onConnect" function, don't forget to get the method + // signature correct. Whenever a fresh client connects, their brand + // spanking new player id will be passed to this function. A "u16" + // is a typedef for an unsigned short, incase you were wondering. + virtual void onConnect(const u16 playerId) + { + // When a client connects we inform all other connected + // clients that a client with that player id has connected. + + // But first, lets say that we have already banned a few + // clients from this server, and that we are keeping a list + // of all the banned ip addresses. We can simply use + // "getClientAddress()", to obtain the 32-bit representation + // of the ip address and check it against the list. + bool playerIsBanned = false; + for(int i = 0;i < banList.size();++i) + { + if(netManager->getClientAddress(playerId) == banList[i]) + { + playerIsBanned = true; + break; + } + } + + // If the player is banned, send a message to all connected + // clients that a player that is banned tried to connect + // and then kick the naughty player. + if(playerIsBanned) + { + net::SOutPacket packet; + packet << "A player that is banned tried to connect, " \ + "so I kicked them."; + netManager->sendOutPacket(packet); + + // Kick the client by passing the player id. + netManager->kickClient(playerId); + } + else // Else we tell everyone who connected. + { + // I am using a core::stringc here, it is very + // similar to a std::string. You can use a std::string + // if you want. + net::SOutPacket packet; + core::stringc message; + message = "Client number "; + message += playerId; + message += " has just connected."; + packet << message; + netManager->sendOutPacket(packet); + } + } + + // Similar to the onConnect function, except it happens when a + // player disconnects. When this happens we will just report + // which player has disconnected. + virtual void onDisconnect(const u16 playerId) + { + net::SOutPacket packet; + core::stringc message; + message = "Client number "; + message += playerId; + message += " has just left the building."; + packet << message; + netManager->sendOutPacket(packet); + } + + // Handle the packets, as usual. + virtual void handlePacket(net::SInPacket& packet) + { + // Now, we need a good reason to ban players. + // Lets say I don't like people who talk alot, + // so lets ban anyone who sends a greeting message + // that is longer than 20 characters, else just + // print the welcome message. + core::stringc message; + packet >> message; + + // We can grab the unique player id of the player + // that sent the packet from the packet itself. + u16 playerId = packet.getPlayerId(); + + + if(message.size() > 20) + { + // Kick and ban the player by adding their address to our list. + netManager->kickClient(playerId); + u32 address = netManager->getClientAddress(playerId); + banList.push_back(address); + std::cout << "Player from " << address << " banned." << std::endl; + } + else + { + // Print the message. + std::cout << "Client " << playerId << " said " << message.c_str() << std::endl; + } + } + +private: + // An array of "u32", a typedef for unsigned int. This core::array is a + // custom implementation of a dynamic array, very similar to std::vector. + core::array banList; + + // A pointer to the INetManager. + net::INetManager* netManager; +}; + +// The client callback. +class ClientNetCallback : public net::INetCallback +{ +public: + // Our handlePacket function. + virtual void handlePacket(net::SInPacket& packet) + { + // Very simple callback, just echo what the server says. + core::stringc message; + packet >> message; + std::cout << "Server says: " << message.c_str() << std::endl; + } +}; + +int main() +{ + // Ask the user whether they want to be the server or a client. + std::cout << "Client (c) or Server (s)?"; + char i; + std::cin >> i; + + // If they typed 's' they are the server else they are the client. + if(i == 's') + { + // Create an irrNetLite server. + net::INetManager* netManager = net::createIrrNetServer(0); + + // Pass in a server specific net callback. + ServerNetCallback* serverCallback = new ServerNetCallback(netManager); + netManager->setNetCallback(serverCallback); + + // Here we update like usual, most of the logic is in the callback. + while(netManager->getConnectionStatus() != net::EICS_FAILED) + netManager->update(1000); + + // Delete everything. + delete netManager; + delete serverCallback; + } + else + { + // Create a client and pass in the client callback. + // You may want to change the ip address to a remote one and experiment + // with connecting to a remote host, especially for this example as, + // if you run all the clients from the same pc and ban one, you + // won't be able to create anymore clients unless you restart the server. + ClientNetCallback* clientCallback = new ClientNetCallback(); + net::INetManager* netManager = net::createIrrNetClient(clientCallback, "127.0.0.1"); + + // The clients in this example will simply send a custom greeting message + // when they connect and then wait and poll for events. + + // If there wasn't a problem connecting we will send a greeting message. + if(netManager->getConnectionStatus() != net::EICS_FAILED) + { + // Print a simple menu. + std::cout << "Example 2. Please enter a greeting message:" << std::endl; + + // Take the input. + std::string message; + std::cin >> message; + + // Send a packet with the message entered. + net::SOutPacket packet; + packet << message; + netManager->sendOutPacket(packet); + } + + // Here is the update loop, we will exit if there is a connection problem. + while(netManager->getConnectionStatus() != net::EICS_FAILED) + { + // Here we update. + netManager->update(1000); + } + + // Clean up. + delete netManager; + delete clientCallback; + } + + // And we're done, return 0 and make like an egg. + return 0; +} diff --git a/examples/Tutorial/Makefile b/examples/Tutorial/Makefile new file mode 100644 index 0000000..90cc69a --- /dev/null +++ b/examples/Tutorial/Makefile @@ -0,0 +1,28 @@ +CXX = g++ +Target := Tutorial +TargetPath := ../bin/ +Sources := main.cpp + +CXXINCS = -I../../include/ + +#ifndef NDEBUG +CXXFLAGS_D = -g -Wall +#else +CXXFLAGS_R = -fexpensive-optimizations -O3 +#endif + +LDIR =../../lib/ +LIBS = -L$(LDIR) -lirrnet + +debug: main.cpp + $(CXX) $(CXXFLAGS_D) $(CXXINCS) -o $(Target) $(Sources) $(LIBS) + mv $(Target) $(TargetPath) + +release: main.cpp + $(CXX) $(CXXFLAGS_R) $(CXXINCS) -o $(Target) $(Sources) $(LIBS) + mv $(Target) $(TargetPath) + +clean: + rm -f *.o $(TargetPath)$(Target) + +.PHONY: clean debug release diff --git a/examples/Tutorial/main.cpp b/examples/Tutorial/main.cpp new file mode 100644 index 0000000..6effa23 --- /dev/null +++ b/examples/Tutorial/main.cpp @@ -0,0 +1,177 @@ +/* +Welcome to the simple, introductory tutorial for irrNetLite. This will show you the +very basics of setting up a client and server, and sending and receiving packets. +Because irrNetLite is so easy to use, I think you will not find many actual lines of +code in this example, rather most of it is documentation. + +For much more sophisticated use of irrNetLite, I recommend taking a look in the +examples subdirectory. +*/ + +// Include the main irrNet.h header for irrNetLite. +#include +#include + +// irrNetLite resides within the irr::net:: namespace, therefore, +// we use "using namespace irr" here to simplify things. +// Alternatively you can add "using namespace net" after +// this so that net:: doesn't have to be used either. +using namespace irr; + +// These pragmas are for MSVC users, they ease the linking of librarys. +// "ws2_32.lib" is part of the Windows Platform SDK and must be linked +// in when compiling on windows. On linux/mac machines, these pragmas +// will simply be ignored, and the linking to irrNetLite static lib +// should be performed by a makefile. +#pragma comment(lib, "irrNetLite.lib") +#pragma comment(lib, "ws2_32.lib") + +// You must derive a class from INetCallback and override the +// "handlePacket" method. When a packet is received it will be +// passed to this function, and you may dissect it as you wish. +// If this is the server you may retrieve the player ID using +// packet.getPlayerId(). +class MyNetCallback : public net::INetCallback +{ +public: + virtual void handlePacket(net::SInPacket& packet) + { + // irrNetLite encryption is very easy to use! Just pass + // a 16-byte (128-bit) string to encryptPacket/decryptPacket + // to encrypt/decrypt a packet respectively. Do not try to + // decrypt an un-encrypted packet or read from an encrypted + // packet without decrypting it first or bad things will happen! + packet.decryptPacket("hushthisissecret"); + + // irrNetLite compression is even easier! The ZLib library is used + // here, just call compressPacket/decompressPacket to + // compress/decompress a packet. Again, do not try to decompress + // an un-compressed packet or read from a compressed packet without + // decompressing it! Another thing to keep in mind is that you should + // decompress and decrypt in the correct order. If you compressed a file + // and then encrypted it when it was sent, you must decrypt it first + // before trying to decompress it, same goes for the other order. + packet.deCompressPacket(); + + // Extracting info from a received packet is simple. You can treat + // the packet as an input stream, the >> operator is overloaded + // and works for most built in types. The string class in irrNetLite + // is a custom implementation not unlike the std::string. You can + // also send and receive strings as "char*". Note that the "char*" + // and stringc are interchangeable, you can send a stringc and + // receive a char*, or vice-versa. + core::stringc str; + packet >> str; + + // Support for a simple 3-dimensional vector class is there too. Both + // vector3df and core::stringc are borrowed from Irrlicht and included + // here for convenience. + core::vector3df vec; + packet >> vec; + + // Here we are obtaining the last value from the packet. f32 is just a + // typedef for float. + f32 height; + packet >> height; + + // Print the values to the console. + std::cout << "Message: " << str.c_str(); + std::cout << " Position: " << vec.X << " " << vec.Y << " " << vec.Z; + std::cout << " Height: " << height << " ft"; + std::cout << std::endl; + } +}; + +// Ok, lets go from the start, int main() +int main() +{ + // Ask the user whether they want to be the server or a client. + std::cout << "Client (c) or Server (s)?"; + char i; + std::cin >> i; + + // If they typed 's' they are the server else they are the client. + if(i == 's') + { + // Create a server and pass in a new instance of our callback class. The default + // port that clients can connect to is set to 45000. + MyNetCallback* netCallback = new MyNetCallback(); + net::INetManager* netManager = net::createIrrNetServer(netCallback); + + // Setting verbose to true makes irrNetLite spit out debug information to the console. + netManager->setVerbose(true); + + // While the connection is active (Not failed), we update the netManager. + // Note that since this is a server the connection will pretty much always + // be flagged as active, unless some error occured whilst creating the server. + // A value of 1000 is passed to update to make it hang for a second and wait for + // packets to arrive. (Recommended for servers, so you don't busy-loop). + while(netManager->getConnectionStatus() != net::EICS_FAILED) + netManager->update(1000); + + // Don't forget to clean up! + delete netManager; + delete netCallback; + } + else + { + // Create an irrNet client, in this example we will just connect to the localhost + // address ("127.0.0.1"), which basically means we are connecting to the same + // computer the client is on. Note that we just pass a value of 0 as our + // INetCallback, because the client in this example does no need to handle any + // packets. You can safely pass a value of 0 if this is the case. + net::INetManager* netManager = net::createIrrNetClient(0, "127.0.0.1"); + + // Enable debug messages. + netManager->setVerbose(true); + + // Here comes the fun part, while the client is connected we update the netManager + // and ask it to wait 1 second (1000 milliseconds) for new packets to arrive before + // returning. Since the client in this example doesn't actually receive any packets, + // the only purpose of the update call is to leave a 1 second interval between each + // packet we send. + + int i = 0; + // To send a packet, first you create an SOutPacket object. + net::SOutPacket packet; + + while(netManager->getConnectionStatus() != net::EICS_FAILED && i < 10 ) + { + + // To send a packet, first you create an SOutPacket object. + //net::SOutPacket packet; + + // Then you can use the streaming operator << to add new data to it. + packet << "Help I am stuck on a mountain!"; + + // You can even chain the << operators like so, just like with ostream. + packet << core::vector3df(50.0f, 30.0f, 20.0f) << 50.0f; + + // Compress the packet, not much to be said. + packet.compressPacket(); + + // Encrypt the packet. Note that here we are just using a simple key + // that is shared among the client and the server. In more sophisticated + // implementations you may want to generate a random key on the server for + // each client and send that using a shared key, then use the new key for + // further communication. Remember that the key should be 16 characters + // long, and obviously the client and server must share the same key. + packet.encryptPacket("hushthisissecret"); + + // A simple call to "sendOutPacket" will send the packet to the server. + netManager->sendOutPacket(packet); + + netManager->update(1000); + packet.clearData(); + i++; + } + + // When the connection disconnects (Or fails), the loop will terminate. + // Remember to delete the netManager so that all the low level networking + // stuff is cleaned up properly. + delete netManager; + } + + // And we're done, return 0 and make like a tree. + return 0; +} diff --git a/examples/bin/Example1 b/examples/bin/Example1 new file mode 100755 index 0000000000000000000000000000000000000000..46b28756ecf1ae247a61a844e21bdd68eeb4738e GIT binary patch literal 299712 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 _AO2A>6#25kUY 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�{kA01*7dwXgdIo>7arM%8d`-^~ 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[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%0A)noJsk)*+^CzhzcmfBd3yu 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 E2Mm&M_5c6? literal 0 HcmV?d00001 diff --git a/examples/linux_compile_all.sh b/examples/linux_compile_all.sh new file mode 100755 index 0000000..47a9caa --- /dev/null +++ b/examples/linux_compile_all.sh @@ -0,0 +1,15 @@ +#! /bin/bash +[ -z $1 ] || TARGET=$1 +[ -z $TARGET ] && TARGET=debug +for i in Tutorial Example* ; do + echo "Building $i"; + pushd $i && make clean $TARGET; + popd; +done + + + + +#g++ Tutorial.cpp -I../irrnet -L../lib -lirrnet -o Tutorial +#g++ Example1.cpp -I../irrnet -L../lib -lirrnet -o Example1 +#g++ Example2.cpp -I../irrnet -L../lib -lirrnet -o Example2 diff --git a/include/CEncryption.h b/include/CEncryption.h new file mode 100644 index 0000000..b0a144f --- /dev/null +++ b/include/CEncryption.h @@ -0,0 +1,411 @@ +// AES encryption class, based on work by Karl Malbrain, malbrain@yahoo.com, +// original license shown here: + +/* +This work, including the source code, documentation +and related data, is placed into the public domain. + +The orginal author is Karl Malbrain. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +typedef unsigned char uchar; +#include +#include + +// AES only supports Nb=4 +#define Nb 4 // number of columns in the state & expanded key + +#define Nk 4 // number of columns in a key +#define Nr 10 // number of rounds in encryption + +static const uchar Sbox[256] = { // forward s-box +0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, +0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, +0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, +0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, +0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, +0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, +0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, +0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, +0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, +0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, +0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, +0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, +0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, +0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, +0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, +0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16}; + +static const uchar InvSbox[256] = { // inverse s-box +0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, +0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, +0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, +0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, +0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, +0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, +0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, +0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, +0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, +0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, +0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, +0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, +0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, +0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, +0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, +0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d}; + +// combined Xtimes2[Sbox[]] +static const uchar Xtime2Sbox[256] = { +0xc6, 0xf8, 0xee, 0xf6, 0xff, 0xd6, 0xde, 0x91, 0x60, 0x02, 0xce, 0x56, 0xe7, 0xb5, 0x4d, 0xec, +0x8f, 0x1f, 0x89, 0xfa, 0xef, 0xb2, 0x8e, 0xfb, 0x41, 0xb3, 0x5f, 0x45, 0x23, 0x53, 0xe4, 0x9b, +0x75, 0xe1, 0x3d, 0x4c, 0x6c, 0x7e, 0xf5, 0x83, 0x68, 0x51, 0xd1, 0xf9, 0xe2, 0xab, 0x62, 0x2a, +0x08, 0x95, 0x46, 0x9d, 0x30, 0x37, 0x0a, 0x2f, 0x0e, 0x24, 0x1b, 0xdf, 0xcd, 0x4e, 0x7f, 0xea, +0x12, 0x1d, 0x58, 0x34, 0x36, 0xdc, 0xb4, 0x5b, 0xa4, 0x76, 0xb7, 0x7d, 0x52, 0xdd, 0x5e, 0x13, +0xa6, 0xb9, 0x00, 0xc1, 0x40, 0xe3, 0x79, 0xb6, 0xd4, 0x8d, 0x67, 0x72, 0x94, 0x98, 0xb0, 0x85, +0xbb, 0xc5, 0x4f, 0xed, 0x86, 0x9a, 0x66, 0x11, 0x8a, 0xe9, 0x04, 0xfe, 0xa0, 0x78, 0x25, 0x4b, +0xa2, 0x5d, 0x80, 0x05, 0x3f, 0x21, 0x70, 0xf1, 0x63, 0x77, 0xaf, 0x42, 0x20, 0xe5, 0xfd, 0xbf, +0x81, 0x18, 0x26, 0xc3, 0xbe, 0x35, 0x88, 0x2e, 0x93, 0x55, 0xfc, 0x7a, 0xc8, 0xba, 0x32, 0xe6, +0xc0, 0x19, 0x9e, 0xa3, 0x44, 0x54, 0x3b, 0x0b, 0x8c, 0xc7, 0x6b, 0x28, 0xa7, 0xbc, 0x16, 0xad, +0xdb, 0x64, 0x74, 0x14, 0x92, 0x0c, 0x48, 0xb8, 0x9f, 0xbd, 0x43, 0xc4, 0x39, 0x31, 0xd3, 0xf2, +0xd5, 0x8b, 0x6e, 0xda, 0x01, 0xb1, 0x9c, 0x49, 0xd8, 0xac, 0xf3, 0xcf, 0xca, 0xf4, 0x47, 0x10, +0x6f, 0xf0, 0x4a, 0x5c, 0x38, 0x57, 0x73, 0x97, 0xcb, 0xa1, 0xe8, 0x3e, 0x96, 0x61, 0x0d, 0x0f, +0xe0, 0x7c, 0x71, 0xcc, 0x90, 0x06, 0xf7, 0x1c, 0xc2, 0x6a, 0xae, 0x69, 0x17, 0x99, 0x3a, 0x27, +0xd9, 0xeb, 0x2b, 0x22, 0xd2, 0xa9, 0x07, 0x33, 0x2d, 0x3c, 0x15, 0xc9, 0x87, 0xaa, 0x50, 0xa5, +0x03, 0x59, 0x09, 0x1a, 0x65, 0xd7, 0x84, 0xd0, 0x82, 0x29, 0x5a, 0x1e, 0x7b, 0xa8, 0x6d, 0x2c +}; + +// combined Xtimes3[Sbox[]] +static const uchar Xtime3Sbox[256] = { +0xa5, 0x84, 0x99, 0x8d, 0x0d, 0xbd, 0xb1, 0x54, 0x50, 0x03, 0xa9, 0x7d, 0x19, 0x62, 0xe6, 0x9a, +0x45, 0x9d, 0x40, 0x87, 0x15, 0xeb, 0xc9, 0x0b, 0xec, 0x67, 0xfd, 0xea, 0xbf, 0xf7, 0x96, 0x5b, +0xc2, 0x1c, 0xae, 0x6a, 0x5a, 0x41, 0x02, 0x4f, 0x5c, 0xf4, 0x34, 0x08, 0x93, 0x73, 0x53, 0x3f, +0x0c, 0x52, 0x65, 0x5e, 0x28, 0xa1, 0x0f, 0xb5, 0x09, 0x36, 0x9b, 0x3d, 0x26, 0x69, 0xcd, 0x9f, +0x1b, 0x9e, 0x74, 0x2e, 0x2d, 0xb2, 0xee, 0xfb, 0xf6, 0x4d, 0x61, 0xce, 0x7b, 0x3e, 0x71, 0x97, +0xf5, 0x68, 0x00, 0x2c, 0x60, 0x1f, 0xc8, 0xed, 0xbe, 0x46, 0xd9, 0x4b, 0xde, 0xd4, 0xe8, 0x4a, +0x6b, 0x2a, 0xe5, 0x16, 0xc5, 0xd7, 0x55, 0x94, 0xcf, 0x10, 0x06, 0x81, 0xf0, 0x44, 0xba, 0xe3, +0xf3, 0xfe, 0xc0, 0x8a, 0xad, 0xbc, 0x48, 0x04, 0xdf, 0xc1, 0x75, 0x63, 0x30, 0x1a, 0x0e, 0x6d, +0x4c, 0x14, 0x35, 0x2f, 0xe1, 0xa2, 0xcc, 0x39, 0x57, 0xf2, 0x82, 0x47, 0xac, 0xe7, 0x2b, 0x95, +0xa0, 0x98, 0xd1, 0x7f, 0x66, 0x7e, 0xab, 0x83, 0xca, 0x29, 0xd3, 0x3c, 0x79, 0xe2, 0x1d, 0x76, +0x3b, 0x56, 0x4e, 0x1e, 0xdb, 0x0a, 0x6c, 0xe4, 0x5d, 0x6e, 0xef, 0xa6, 0xa8, 0xa4, 0x37, 0x8b, +0x32, 0x43, 0x59, 0xb7, 0x8c, 0x64, 0xd2, 0xe0, 0xb4, 0xfa, 0x07, 0x25, 0xaf, 0x8e, 0xe9, 0x18, +0xd5, 0x88, 0x6f, 0x72, 0x24, 0xf1, 0xc7, 0x51, 0x23, 0x7c, 0x9c, 0x21, 0xdd, 0xdc, 0x86, 0x85, +0x90, 0x42, 0xc4, 0xaa, 0xd8, 0x05, 0x01, 0x12, 0xa3, 0x5f, 0xf9, 0xd0, 0x91, 0x58, 0x27, 0xb9, +0x38, 0x13, 0xb3, 0x33, 0xbb, 0x70, 0x89, 0xa7, 0xb6, 0x22, 0x92, 0x20, 0x49, 0xff, 0x78, 0x7a, +0x8f, 0xf8, 0x80, 0x17, 0xda, 0x31, 0xc6, 0xb8, 0xc3, 0xb0, 0x77, 0x11, 0xcb, 0xfc, 0xd6, 0x3a +}; + +// modular multiplication tables +// based on: + +// Xtime2[x] = (x & 0x80 ? 0x1b : 0) ^ (x + x) +// Xtime3[x] = x^Xtime2[x]; + +static const uchar Xtime2[256] = { +0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, +0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, +0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, +0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, +0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, +0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, +0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, +0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, +0x1b, 0x19, 0x1f, 0x1d, 0x13, 0x11, 0x17, 0x15, 0x0b, 0x09, 0x0f, 0x0d, 0x03, 0x01, 0x07, 0x05, +0x3b, 0x39, 0x3f, 0x3d, 0x33, 0x31, 0x37, 0x35, 0x2b, 0x29, 0x2f, 0x2d, 0x23, 0x21, 0x27, 0x25, +0x5b, 0x59, 0x5f, 0x5d, 0x53, 0x51, 0x57, 0x55, 0x4b, 0x49, 0x4f, 0x4d, 0x43, 0x41, 0x47, 0x45, +0x7b, 0x79, 0x7f, 0x7d, 0x73, 0x71, 0x77, 0x75, 0x6b, 0x69, 0x6f, 0x6d, 0x63, 0x61, 0x67, 0x65, +0x9b, 0x99, 0x9f, 0x9d, 0x93, 0x91, 0x97, 0x95, 0x8b, 0x89, 0x8f, 0x8d, 0x83, 0x81, 0x87, 0x85, +0xbb, 0xb9, 0xbf, 0xbd, 0xb3, 0xb1, 0xb7, 0xb5, 0xab, 0xa9, 0xaf, 0xad, 0xa3, 0xa1, 0xa7, 0xa5, +0xdb, 0xd9, 0xdf, 0xdd, 0xd3, 0xd1, 0xd7, 0xd5, 0xcb, 0xc9, 0xcf, 0xcd, 0xc3, 0xc1, 0xc7, 0xc5, +0xfb, 0xf9, 0xff, 0xfd, 0xf3, 0xf1, 0xf7, 0xf5, 0xeb, 0xe9, 0xef, 0xed, 0xe3, 0xe1, 0xe7, 0xe5}; + +static const uchar Xtime9[256] = { +0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, +0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, +0x3b, 0x32, 0x29, 0x20, 0x1f, 0x16, 0x0d, 0x04, 0x73, 0x7a, 0x61, 0x68, 0x57, 0x5e, 0x45, 0x4c, +0xab, 0xa2, 0xb9, 0xb0, 0x8f, 0x86, 0x9d, 0x94, 0xe3, 0xea, 0xf1, 0xf8, 0xc7, 0xce, 0xd5, 0xdc, +0x76, 0x7f, 0x64, 0x6d, 0x52, 0x5b, 0x40, 0x49, 0x3e, 0x37, 0x2c, 0x25, 0x1a, 0x13, 0x08, 0x01, +0xe6, 0xef, 0xf4, 0xfd, 0xc2, 0xcb, 0xd0, 0xd9, 0xae, 0xa7, 0xbc, 0xb5, 0x8a, 0x83, 0x98, 0x91, +0x4d, 0x44, 0x5f, 0x56, 0x69, 0x60, 0x7b, 0x72, 0x05, 0x0c, 0x17, 0x1e, 0x21, 0x28, 0x33, 0x3a, +0xdd, 0xd4, 0xcf, 0xc6, 0xf9, 0xf0, 0xeb, 0xe2, 0x95, 0x9c, 0x87, 0x8e, 0xb1, 0xb8, 0xa3, 0xaa, +0xec, 0xe5, 0xfe, 0xf7, 0xc8, 0xc1, 0xda, 0xd3, 0xa4, 0xad, 0xb6, 0xbf, 0x80, 0x89, 0x92, 0x9b, +0x7c, 0x75, 0x6e, 0x67, 0x58, 0x51, 0x4a, 0x43, 0x34, 0x3d, 0x26, 0x2f, 0x10, 0x19, 0x02, 0x0b, +0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, +0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0x0f, 0x06, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, +0x9a, 0x93, 0x88, 0x81, 0xbe, 0xb7, 0xac, 0xa5, 0xd2, 0xdb, 0xc0, 0xc9, 0xf6, 0xff, 0xe4, 0xed, +0x0a, 0x03, 0x18, 0x11, 0x2e, 0x27, 0x3c, 0x35, 0x42, 0x4b, 0x50, 0x59, 0x66, 0x6f, 0x74, 0x7d, +0xa1, 0xa8, 0xb3, 0xba, 0x85, 0x8c, 0x97, 0x9e, 0xe9, 0xe0, 0xfb, 0xf2, 0xcd, 0xc4, 0xdf, 0xd6, +0x31, 0x38, 0x23, 0x2a, 0x15, 0x1c, 0x07, 0x0e, 0x79, 0x70, 0x6b, 0x62, 0x5d, 0x54, 0x4f, 0x46}; + +static const uchar XtimeB[256] = { +0x00, 0x0b, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, +0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, +0x7b, 0x70, 0x6d, 0x66, 0x57, 0x5c, 0x41, 0x4a, 0x23, 0x28, 0x35, 0x3e, 0x0f, 0x04, 0x19, 0x12, +0xcb, 0xc0, 0xdd, 0xd6, 0xe7, 0xec, 0xf1, 0xfa, 0x93, 0x98, 0x85, 0x8e, 0xbf, 0xb4, 0xa9, 0xa2, +0xf6, 0xfd, 0xe0, 0xeb, 0xda, 0xd1, 0xcc, 0xc7, 0xae, 0xa5, 0xb8, 0xb3, 0x82, 0x89, 0x94, 0x9f, +0x46, 0x4d, 0x50, 0x5b, 0x6a, 0x61, 0x7c, 0x77, 0x1e, 0x15, 0x08, 0x03, 0x32, 0x39, 0x24, 0x2f, +0x8d, 0x86, 0x9b, 0x90, 0xa1, 0xaa, 0xb7, 0xbc, 0xd5, 0xde, 0xc3, 0xc8, 0xf9, 0xf2, 0xef, 0xe4, +0x3d, 0x36, 0x2b, 0x20, 0x11, 0x1a, 0x07, 0x0c, 0x65, 0x6e, 0x73, 0x78, 0x49, 0x42, 0x5f, 0x54, +0xf7, 0xfc, 0xe1, 0xea, 0xdb, 0xd0, 0xcd, 0xc6, 0xaf, 0xa4, 0xb9, 0xb2, 0x83, 0x88, 0x95, 0x9e, +0x47, 0x4c, 0x51, 0x5a, 0x6b, 0x60, 0x7d, 0x76, 0x1f, 0x14, 0x09, 0x02, 0x33, 0x38, 0x25, 0x2e, +0x8c, 0x87, 0x9a, 0x91, 0xa0, 0xab, 0xb6, 0xbd, 0xd4, 0xdf, 0xc2, 0xc9, 0xf8, 0xf3, 0xee, 0xe5, +0x3c, 0x37, 0x2a, 0x21, 0x10, 0x1b, 0x06, 0x0d, 0x64, 0x6f, 0x72, 0x79, 0x48, 0x43, 0x5e, 0x55, +0x01, 0x0a, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, +0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, +0x7a, 0x71, 0x6c, 0x67, 0x56, 0x5d, 0x40, 0x4b, 0x22, 0x29, 0x34, 0x3f, 0x0e, 0x05, 0x18, 0x13, +0xca, 0xc1, 0xdc, 0xd7, 0xe6, 0xed, 0xf0, 0xfb, 0x92, 0x99, 0x84, 0x8f, 0xbe, 0xb5, 0xa8, 0xa3}; + +static const uchar XtimeD[256] = { +0x00, 0x0d, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, +0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, +0xbb, 0xb6, 0xa1, 0xac, 0x8f, 0x82, 0x95, 0x98, 0xd3, 0xde, 0xc9, 0xc4, 0xe7, 0xea, 0xfd, 0xf0, +0x6b, 0x66, 0x71, 0x7c, 0x5f, 0x52, 0x45, 0x48, 0x03, 0x0e, 0x19, 0x14, 0x37, 0x3a, 0x2d, 0x20, +0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x05, 0x08, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, +0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, +0xd6, 0xdb, 0xcc, 0xc1, 0xe2, 0xef, 0xf8, 0xf5, 0xbe, 0xb3, 0xa4, 0xa9, 0x8a, 0x87, 0x90, 0x9d, +0x06, 0x0b, 0x1c, 0x11, 0x32, 0x3f, 0x28, 0x25, 0x6e, 0x63, 0x74, 0x79, 0x5a, 0x57, 0x40, 0x4d, +0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, +0x0a, 0x07, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, +0x61, 0x6c, 0x7b, 0x76, 0x55, 0x58, 0x4f, 0x42, 0x09, 0x04, 0x13, 0x1e, 0x3d, 0x30, 0x27, 0x2a, +0xb1, 0xbc, 0xab, 0xa6, 0x85, 0x88, 0x9f, 0x92, 0xd9, 0xd4, 0xc3, 0xce, 0xed, 0xe0, 0xf7, 0xfa, +0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, +0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0x0f, 0x02, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, +0x0c, 0x01, 0x16, 0x1b, 0x38, 0x35, 0x22, 0x2f, 0x64, 0x69, 0x7e, 0x73, 0x50, 0x5d, 0x4a, 0x47, +0xdc, 0xd1, 0xc6, 0xcb, 0xe8, 0xe5, 0xf2, 0xff, 0xb4, 0xb9, 0xae, 0xa3, 0x80, 0x8d, 0x9a, 0x97}; + +static const uchar XtimeE[256] = { +0x00, 0x0e, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, +0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, +0xdb, 0xd5, 0xc7, 0xc9, 0xe3, 0xed, 0xff, 0xf1, 0xab, 0xa5, 0xb7, 0xb9, 0x93, 0x9d, 0x8f, 0x81, +0x3b, 0x35, 0x27, 0x29, 0x03, 0x0d, 0x1f, 0x11, 0x4b, 0x45, 0x57, 0x59, 0x73, 0x7d, 0x6f, 0x61, +0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, +0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, 0x3d, 0x33, 0x21, 0x2f, 0x05, 0x0b, 0x19, 0x17, +0x76, 0x78, 0x6a, 0x64, 0x4e, 0x40, 0x52, 0x5c, 0x06, 0x08, 0x1a, 0x14, 0x3e, 0x30, 0x22, 0x2c, +0x96, 0x98, 0x8a, 0x84, 0xae, 0xa0, 0xb2, 0xbc, 0xe6, 0xe8, 0xfa, 0xf4, 0xde, 0xd0, 0xc2, 0xcc, +0x41, 0x4f, 0x5d, 0x53, 0x79, 0x77, 0x65, 0x6b, 0x31, 0x3f, 0x2d, 0x23, 0x09, 0x07, 0x15, 0x1b, +0xa1, 0xaf, 0xbd, 0xb3, 0x99, 0x97, 0x85, 0x8b, 0xd1, 0xdf, 0xcd, 0xc3, 0xe9, 0xe7, 0xf5, 0xfb, +0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, +0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0x0a, 0x04, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, +0xec, 0xe2, 0xf0, 0xfe, 0xd4, 0xda, 0xc8, 0xc6, 0x9c, 0x92, 0x80, 0x8e, 0xa4, 0xaa, 0xb8, 0xb6, +0x0c, 0x02, 0x10, 0x1e, 0x34, 0x3a, 0x28, 0x26, 0x7c, 0x72, 0x60, 0x6e, 0x44, 0x4a, 0x58, 0x56, +0x37, 0x39, 0x2b, 0x25, 0x0f, 0x01, 0x13, 0x1d, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, +0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d}; + +// exchanges columns in each of 4 rows +// row0 - unchanged, row1- shifted left 1, +// row2 - shifted left 2 and row3 - shifted left 3 +static void ShiftRows (uchar *state) +{ + uchar tmp; + + // just substitute row 0 + state[0] = Sbox[state[0]], state[4] = Sbox[state[4]]; + state[8] = Sbox[state[8]], state[12] = Sbox[state[12]]; + + // rotate row 1 + tmp = Sbox[state[1]], state[1] = Sbox[state[5]]; + state[5] = Sbox[state[9]], state[9] = Sbox[state[13]], state[13] = tmp; + + // rotate row 2 + tmp = Sbox[state[2]], state[2] = Sbox[state[10]], state[10] = tmp; + tmp = Sbox[state[6]], state[6] = Sbox[state[14]], state[14] = tmp; + + // rotate row 3 + tmp = Sbox[state[15]], state[15] = Sbox[state[11]]; + state[11] = Sbox[state[7]], state[7] = Sbox[state[3]], state[3] = tmp; +} + +// restores columns in each of 4 rows +// row0 - unchanged, row1- shifted right 1, +// row2 - shifted right 2 and row3 - shifted right 3 +static void InvShiftRows (uchar *state) +{ + uchar tmp; + + // restore row 0 + state[0] = InvSbox[state[0]], state[4] = InvSbox[state[4]]; + state[8] = InvSbox[state[8]], state[12] = InvSbox[state[12]]; + + // restore row 1 + tmp = InvSbox[state[13]], state[13] = InvSbox[state[9]]; + state[9] = InvSbox[state[5]], state[5] = InvSbox[state[1]], state[1] = tmp; + + // restore row 2 + tmp = InvSbox[state[2]], state[2] = InvSbox[state[10]], state[10] = tmp; + tmp = InvSbox[state[6]], state[6] = InvSbox[state[14]], state[14] = tmp; + + // restore row 3 + tmp = InvSbox[state[3]], state[3] = InvSbox[state[7]]; + state[7] = InvSbox[state[11]], state[11] = InvSbox[state[15]], state[15] = tmp; +} + +// recombine and mix each row in a column +static void MixSubColumns (uchar *state) +{ + uchar tmp[4 * Nb]; + + // mixing column 0 + tmp[0] = Xtime2Sbox[state[0]] ^ Xtime3Sbox[state[5]] ^ Sbox[state[10]] ^ Sbox[state[15]]; + tmp[1] = Sbox[state[0]] ^ Xtime2Sbox[state[5]] ^ Xtime3Sbox[state[10]] ^ Sbox[state[15]]; + tmp[2] = Sbox[state[0]] ^ Sbox[state[5]] ^ Xtime2Sbox[state[10]] ^ Xtime3Sbox[state[15]]; + tmp[3] = Xtime3Sbox[state[0]] ^ Sbox[state[5]] ^ Sbox[state[10]] ^ Xtime2Sbox[state[15]]; + + // mixing column 1 + tmp[4] = Xtime2Sbox[state[4]] ^ Xtime3Sbox[state[9]] ^ Sbox[state[14]] ^ Sbox[state[3]]; + tmp[5] = Sbox[state[4]] ^ Xtime2Sbox[state[9]] ^ Xtime3Sbox[state[14]] ^ Sbox[state[3]]; + tmp[6] = Sbox[state[4]] ^ Sbox[state[9]] ^ Xtime2Sbox[state[14]] ^ Xtime3Sbox[state[3]]; + tmp[7] = Xtime3Sbox[state[4]] ^ Sbox[state[9]] ^ Sbox[state[14]] ^ Xtime2Sbox[state[3]]; + + // mixing column 2 + tmp[8] = Xtime2Sbox[state[8]] ^ Xtime3Sbox[state[13]] ^ Sbox[state[2]] ^ Sbox[state[7]]; + tmp[9] = Sbox[state[8]] ^ Xtime2Sbox[state[13]] ^ Xtime3Sbox[state[2]] ^ Sbox[state[7]]; + tmp[10] = Sbox[state[8]] ^ Sbox[state[13]] ^ Xtime2Sbox[state[2]] ^ Xtime3Sbox[state[7]]; + tmp[11] = Xtime3Sbox[state[8]] ^ Sbox[state[13]] ^ Sbox[state[2]] ^ Xtime2Sbox[state[7]]; + + // mixing column 3 + tmp[12] = Xtime2Sbox[state[12]] ^ Xtime3Sbox[state[1]] ^ Sbox[state[6]] ^ Sbox[state[11]]; + tmp[13] = Sbox[state[12]] ^ Xtime2Sbox[state[1]] ^ Xtime3Sbox[state[6]] ^ Sbox[state[11]]; + tmp[14] = Sbox[state[12]] ^ Sbox[state[1]] ^ Xtime2Sbox[state[6]] ^ Xtime3Sbox[state[11]]; + tmp[15] = Xtime3Sbox[state[12]] ^ Sbox[state[1]] ^ Sbox[state[6]] ^ Xtime2Sbox[state[11]]; + + memcpy (state, tmp, sizeof(tmp)); +} + +// restore and un-mix each row in a column +static void InvMixSubColumns (uchar *state) +{ + uchar tmp[4 * Nb]; + int i; + + // restore column 0 + tmp[0] = XtimeE[state[0]] ^ XtimeB[state[1]] ^ XtimeD[state[2]] ^ Xtime9[state[3]]; + tmp[5] = Xtime9[state[0]] ^ XtimeE[state[1]] ^ XtimeB[state[2]] ^ XtimeD[state[3]]; + tmp[10] = XtimeD[state[0]] ^ Xtime9[state[1]] ^ XtimeE[state[2]] ^ XtimeB[state[3]]; + tmp[15] = XtimeB[state[0]] ^ XtimeD[state[1]] ^ Xtime9[state[2]] ^ XtimeE[state[3]]; + + // restore column 1 + tmp[4] = XtimeE[state[4]] ^ XtimeB[state[5]] ^ XtimeD[state[6]] ^ Xtime9[state[7]]; + tmp[9] = Xtime9[state[4]] ^ XtimeE[state[5]] ^ XtimeB[state[6]] ^ XtimeD[state[7]]; + tmp[14] = XtimeD[state[4]] ^ Xtime9[state[5]] ^ XtimeE[state[6]] ^ XtimeB[state[7]]; + tmp[3] = XtimeB[state[4]] ^ XtimeD[state[5]] ^ Xtime9[state[6]] ^ XtimeE[state[7]]; + + // restore column 2 + tmp[8] = XtimeE[state[8]] ^ XtimeB[state[9]] ^ XtimeD[state[10]] ^ Xtime9[state[11]]; + tmp[13] = Xtime9[state[8]] ^ XtimeE[state[9]] ^ XtimeB[state[10]] ^ XtimeD[state[11]]; + tmp[2] = XtimeD[state[8]] ^ Xtime9[state[9]] ^ XtimeE[state[10]] ^ XtimeB[state[11]]; + tmp[7] = XtimeB[state[8]] ^ XtimeD[state[9]] ^ Xtime9[state[10]] ^ XtimeE[state[11]]; + + // restore column 3 + tmp[12] = XtimeE[state[12]] ^ XtimeB[state[13]] ^ XtimeD[state[14]] ^ Xtime9[state[15]]; + tmp[1] = Xtime9[state[12]] ^ XtimeE[state[13]] ^ XtimeB[state[14]] ^ XtimeD[state[15]]; + tmp[6] = XtimeD[state[12]] ^ Xtime9[state[13]] ^ XtimeE[state[14]] ^ XtimeB[state[15]]; + tmp[11] = XtimeB[state[12]] ^ XtimeD[state[13]] ^ Xtime9[state[14]] ^ XtimeE[state[15]]; + + for( i=0; i < 4 * Nb; i++ ) + state[i] = InvSbox[tmp[i]]; +} + +// encrypt/decrypt columns of the key +// n.b. you can replace this with +// byte-wise xor if you wish. + +static void AddRoundKey (unsigned *state, unsigned *key) +{ + int idx; + + for( idx = 0; idx < 4; idx++ ) + state[idx] ^= key[idx]; +} + +static const uchar Rcon[11] = { +0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36}; + +class CEncryption +{ +public: + // produce Nb bytes for each round + static void SetEncryptionKey(uchar* key) + { + uchar* expkey = &expKey[0]; + uchar tmp0, tmp1, tmp2, tmp3, tmp4; + unsigned idx; + + memcpy (expkey, key, Nk * 4); + + for( idx = Nk; idx < Nb * (Nr + 1); idx++ ) { + tmp0 = expkey[4*idx - 4]; + tmp1 = expkey[4*idx - 3]; + tmp2 = expkey[4*idx - 2]; + tmp3 = expkey[4*idx - 1]; + if( !(idx % Nk) ) { + tmp4 = tmp3; + tmp3 = Sbox[tmp0]; + tmp0 = Sbox[tmp1] ^ Rcon[idx/Nk]; + tmp1 = Sbox[tmp2]; + tmp2 = Sbox[tmp4]; + } else if( Nk > 6 && idx % Nk == 4 ) { + tmp0 = Sbox[tmp0]; + tmp1 = Sbox[tmp1]; + tmp2 = Sbox[tmp2]; + tmp3 = Sbox[tmp3]; + } + + expkey[4*idx+0] = expkey[4*idx - 4*Nk + 0] ^ tmp0; + expkey[4*idx+1] = expkey[4*idx - 4*Nk + 1] ^ tmp1; + expkey[4*idx+2] = expkey[4*idx - 4*Nk + 2] ^ tmp2; + expkey[4*idx+3] = expkey[4*idx - 4*Nk + 3] ^ tmp3; + } + } + + // encrypt one 128 bit block + static void Encrypt(uchar* in, uchar* out) + { + uchar* expkey = &expKey[0]; + uchar state[Nb * 4]; + unsigned round; + + memcpy (state, in, Nb * 4); + AddRoundKey ((unsigned *)state, (unsigned *)expkey); + + for( round = 1; round < Nr + 1; round++ ) { + if( round < Nr ) + MixSubColumns (state); + else + ShiftRows (state); + + AddRoundKey ((unsigned *)state, (unsigned *)expkey + round * Nb); + } + + memcpy (out, state, sizeof(state)); + } + + static void Decrypt(uchar* in, uchar* out) + { + uchar* expkey = &expKey[0]; + uchar state[Nb * 4]; + unsigned round; + + memcpy (state, in, sizeof(state)); + + AddRoundKey ((unsigned *)state, (unsigned *)expkey + Nr * Nb); + InvShiftRows(state); + + for( round = Nr; round--; ) + { + AddRoundKey ((unsigned *)state, (unsigned *)expkey + round * Nb); + if( round ) + InvMixSubColumns (state); + } + + memcpy (out, state, sizeof(state)); + } + +private: + static uchar expKey[4 * Nb * (Nr + 1)]; +}; diff --git a/include/CNetManager.h b/include/CNetManager.h new file mode 100644 index 0000000..245d3c3 --- /dev/null +++ b/include/CNetManager.h @@ -0,0 +1,120 @@ +#ifndef IRRNET_CNM_H +#define IRRNET_CNM_H + +#include +#include +#include +#include + +#include "INetManager.h" +#include "SPacket.h" +#include "enet/enet.h" + +using namespace irr; +using namespace core; + +namespace irr +{ + namespace net + { + + class CNetManager : public INetManager + { + public: + /// This constructor sets up a server, as it only takes a port as a parameter to bind the host to. + CNetManager(INetCallback* handler, u32 const port = 45000, const SNetParams& params = SNetParams()); + + /// This constructor sets up a client, as it takes an address and a port to connect to. Connecting + /// will commence immediately after the INetManager is initialised. + CNetManager(INetCallback* handler, const c8* addressc, const u32 port = 45000, const SNetParams& params = SNetParams()); + + /// Destructor + ~CNetManager(); + + virtual void update(const u32 timeOut = 0); + virtual void setVerbose(bool isverbose); + virtual void setNetIterations(u16 iterations) {netIterations = iterations;} + virtual void setNetCallback(INetCallback* netCallback) {pHandler = netCallback;} + virtual void setGlobalPacketRelay(bool relay); + virtual void sendOutPacket(SOutPacket& outpacket); + virtual void sendOutPacket(SOutPacket& outpacket, const u16 playerId); + virtual void sendOutPacketUnreliable(SOutPacket& outpacket); + virtual void sendOutPacketUnreliable(SOutPacket& outpacket, const u16 playerId); + virtual void kickClient(const u16 playerId, bool hardKick); + + virtual const u32 getPeerCount(); + virtual const u32 getPing(); + virtual const u32 getClientAddress(const u16 playerId); + + virtual const u16 getPlayerNumber(); + + virtual E_IRRNET_CONNECTION_STATUS getConnectionStatus(); + + enum E_NET_MODE + { + ENM_SERVER, + ENM_CLIENT, + + ENM_COUNT + }; + + struct SPeerData + { + SPeerData(u16 pID, ENetPeer* enetPeerIn) : playerID(pID), enetPeer(enetPeerIn) {}; + + u16 playerID; + ENetPeer* enetPeer; + }; + + private: + ENetHost* host; + ENetPeer* peer; + ENetAddress address; + + u16 playerID; + + INetCallback* pHandler; + u32 netIterations; + SNetParams netParams; + + std::vector players; + bool verbose; + bool globPacketRelay; + + E_IRRNET_CONNECTION_STATUS connectionStatus; + E_NET_MODE mode; + + bool setUpClient(const c8* addressc, u32 port); + bool setUpServer(u32 port); + + ENetPeer* getPlayerById(u16 id); + ENetPeer* getPeer(); + ENetHost* getHost(); + }; + + } // Close Net Namespace +} // Close Irr namespace + +#endif + +// Copyright(C) Ahmed Hilali 2007 + +/* License: + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be clearly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + */ diff --git a/include/INetManager.h b/include/INetManager.h new file mode 100644 index 0000000..b7eec88 --- /dev/null +++ b/include/INetManager.h @@ -0,0 +1,242 @@ +#ifndef IRRNET_INM_H +#define IRRNET_INM_H + +#include "SPacket.h" + +/** \mainpage + +Welcome to irrNetLite. + +*/ + +namespace irr +{ +namespace net +{ + +/** +E_IRRNET_CONNECTION_STATUS: + +EICS_PENDING +------------ +The connection is still in progress. + +EICS_ESTABLISHED +------------ +The connection has been successfully established. + +EICS_FAILED +------------ +The connection has failed. The current INetManager is invalid. To retry, you must create a new NetManager. +*/ +enum E_IRRNET_CONNECTION_STATUS +{ + EICS_PENDING, + EICS_ESTABLISHED, + EICS_FAILED, + + EICS_COUNT +}; + +/** +Optional settings for the creation of the INetManager. + +downBandwidth +------------- +The down (incoming) bandwidth of the current internet connection. You may set this value for +more accurate packet throttling. In kbps. + +upBandwidth +----------- +The up (outgoing) bandwidth of the current internet connection. You may set this value for +more accurate packet throttling. In kbps. + +maxClients +---------- +The maximum number of clients allowed for a server. Any clients that attempt to join +after this number has been reached will be rejected. (For servers only.) + +connectionTimeout +----------------- +The maximum connection timeout allowed when connecting to a server. In milliseconds. (For +clients only.) +*/ +struct SNetParams +{ + SNetParams() : downBandwidth(128000), upBandwidth(56000), maxClients(100), connectionTimeout(5000) {}; + + u32 downBandwidth; + u32 upBandwidth; + u32 maxClients; + u32 connectionTimeout; +}; + +/** +You must create a derived class of INetCallback and override the "handlePacket" method to perform +your own packet handling functions. Everytime a packet is recieved over the network, an SInPacket +is passed to this method. When initialising a INetManager, a pointer to an instance of the +derived class must be passed. Please see SInPacket regarding information on handling InPackets. +*/ +class INetCallback +{ +public: + virtual void handlePacket(SInPacket& packet) = 0; + virtual void onConnect(const u16 playerId) {}; + virtual void onDisconnect(const u16 playerId) {}; + + virtual ~INetCallback() {}; +}; + +/** +INetManager class. +*/ +class INetManager +{ +public: + /** + This function updates the state of the NetManager and handles the sending/receiving of packets. + Make sure to stick this in your run loop, or at the very least update it very often. If this + function is not updated pending packets will not be sent and received packets will not be handled. + Optionally a timeout may be specified if you want this function to block and wait for packets + to a arrive for a specified interval of time (In MilliSeconds). + */ + virtual void update(const u32 timeOut = 0) = 0; + + /// Virtual destructor + virtual ~INetManager() {}; + + /** + If set to true INetManager will output debug info to console. Output resembles: + + "irrNetLite: A packet of length 50 was recieved."; + + or + + "irrNetLite: Player number 23 disconnected."; + + It may be useful for debugging purposes. + */ + virtual void setVerbose(bool isverbose) = 0; + + /// Sets a new INetCallback as the net callback. + virtual void setNetCallback(INetCallback* netCallback) = 0; + + /** + This function sends an SOutPacket. Out packets provide an easy interface for sending data across a network. + Conversions etc are all taken care of by irrNet. All you have to do is create some kind of variable then add it, + then read the data from the SInPacket on the recieving end. Here is an example of adding data to an SOutPacket: + + \code + SOutPacket MyOutPacket; + // We add data using the "<<" operator, similar to iostreams. + float myValue = 0.238723f; + MyOutPacket << myValue; + MyOutPacket << vector3df(23,354,35); + MyOutPacket << 43988434; + + // And now to send. + NetManager->sendOutPacket(MyOutPacket); + \endcode + + This sends the packet to all connected clients if you are the server, or directly to the server if you + are a client. To send to a specific client use "sendOutPacket(SOutPacket& outpacket, const u16 playerId)". + Please refer to SOutPacket for more information on what types of variables an SOutPacket can handle + automatically. + */ + virtual void sendOutPacket(SOutPacket& outpacket) = 0; + + /** + This sends an SOutPacket to a specific player denoted by the player number. Players are numbered + automatically as they connect to the server. IMPORTANT: This feature is only valid if you are the server. + This is because clients can only send packets to the server, making this function unusable. + Please refer to sendOutPacket(const SOutPacket& outpacket) for more info. + */ + virtual void sendOutPacket(SOutPacket& outpacket, const u16 playerId) = 0; + + /** + This sends the SOutPacket specified unreliably. This is not recommended for critical information. + Please refer to sendOutPacket(const SOutPacket& outpacket) for more info. + */ + virtual void sendOutPacketUnreliable(SOutPacket& outpacket) = 0; + + /** + This sends an SOutPacket unreliably to a specific player denoted by the player number. + Players are numbered automatically as they connect to the server. IMPORTANT: This feature + is only valid if you are the server. This is because clients can only send packets to the server, + making this function unusable. This is not recommended for critical information. + Please refer to sendOutPacket(const SOutPacket& outpacket) for more info. + */ + virtual void sendOutPacketUnreliable(SOutPacket& outpacket, const u16 playerId) = 0; + + /// This gets the number of players connected. This is only valid for servers. + virtual const u32 getPeerCount() = 0; + + /// This returns the playerID for this machine. Only valid for Clients. + virtual const u16 getPlayerNumber() = 0; + + /// Returns the client ip address with the specified player ID. This is only valid for servers. + /// The address is in 32-bit integer format. + virtual const u32 getClientAddress(const u16 playerId) = 0; + + /// Kicks the client with the specified player Id. + /// You may set the hardKick option to true to forcifully disconnect them immediately. + /// Note that if a "hardKick" is performed, no disconnect event will be generated. + virtual void kickClient(const u16 playerId, bool hardKick = false) = 0; + + /** + This returns a value of type E_IRRNET_CONNECTION_STATUS. This can either be EICS_PENDING, which indicates the + connection is still in process, EICS_ESTABLISHED, which indicates the connection has been successfully established, + or EICS_FAILED, which indicates the connection was not successful or has since disconnected. This is generally only + useful for clients, but the information is provided for servers incase there is a fault with the server setup. + */ + virtual E_IRRNET_CONNECTION_STATUS getConnectionStatus() = 0; + + /// This returns the ping. Useful for clients as it returns the ping to the server. For servers it returns + /// the ping to the first connected player. + virtual const u32 getPing() = 0; + + /// Sets the number of packet processing iterations per update. You may want to increase this number if + /// you are not updating frequently enough for all the packets to get processed. (Default: 10000) + virtual void setNetIterations(u16 iterations) = 0; + + /** + Enables or disables global packet relay, this is when the server relays all the packets it recieves to all + connected clients, this makes it easy to send information to all clients, but may not be suitable for + large-scale applications. Instead, a custom entity management and packet handling system should be designed. + Although for applications with less than 10 peers global packet relay should do just fine. (Default: false) + */ + virtual void setGlobalPacketRelay(bool relay) = 0; +}; + +/// Creates an irrNetLite client. +INetManager* createIrrNetClient(INetCallback* callback, const c8* addressc, const u32 port = 45000, const SNetParams& params = SNetParams()); + +/// Creates an irrNetLite server. +INetManager* createIrrNetServer(INetCallback* callback, const u32 port = 45000, const SNetParams& params = SNetParams()); + +} // Close Net Namespace +} // Close Irr namespace + +#endif + +// Copyright(C) Ahmed Hilali 2008 + +/* + License: + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be clearly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + diff --git a/include/NoIrrlicht/IrrCompileConfig.h b/include/NoIrrlicht/IrrCompileConfig.h new file mode 100644 index 0000000..873453d --- /dev/null +++ b/include/NoIrrlicht/IrrCompileConfig.h @@ -0,0 +1,351 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#ifndef __IRR_COMPILE_CONFIG_H_INCLUDED__ +#define __IRR_COMPILE_CONFIG_H_INCLUDED__ + +//! Irrlicht SDK Version +#define IRRLICHT_SDK_VERSION "1.4" + +//! The defines for different operating system are: +//! _IRR_XBOX_PLATFORM_ for XBox +//! _IRR_WINDOWS_ for all irrlicht supported Windows versions +//! _IRR_WINDOWS_API_ for Windows or XBox +//! _IRR_LINUX_PLATFORM_ for Linux (it is defined here if no other os is defined) +//! _IRR_SOLARIS_PLATFORM_ for Solaris +//! _IRR_OSX_PLATFORM_ for Apple systems running OSX +//! _IRR_POSIX_API_ for Posix compatible systems +//! _IRR_USE_SDL_DEVICE_ for platform independent SDL framework +//! _IRR_USE_WINDOWS_DEVICE_ for Windows API based device +//! _IRR_USE_WINDOWS_CE_DEVICE_ for Windows CE API based device +//! _IRR_USE_LINUX_DEVICE_ for X11 based device +//! _IRR_USE_OSX_DEVICE_ for Cocoa native windowing on OSX +//! Note: PLATFORM defines the OS specific layer, API can groups several platforms +//! DEVICE is the windowing system used, several PLATFORMs support more than one DEVICE +//! Moreover, the DEVICE defined here is not directly related to the Irrlicht devices created in the app (but may depend on each other). + +//#define _IRR_USE_SDL_DEVICE_ 1 + +//! WIN32 for Windows32 +//! WIN64 for Windows64 +// The windows platform and API support SDL and WINDOW device +#if defined(_WIN32) || defined(_WIN64) || defined(WIN32) || defined(WIN64) || defined(_WIN32_WCE) +#define _IRR_WINDOWS_ +#define _IRR_WINDOWS_API_ +#ifndef _IRR_USE_SDL_DEVICE_ +#define _IRR_USE_WINDOWS_DEVICE_ +#endif +#endif + +// XBox only suppots the native Window stuff +#if defined(_XBOX) +#define _IRR_XBOX_PLATFORM_ +#define _IRR_WINDOWS_API_ +#define _IRR_USE_WINDOWS_DEVICE_ +#endif + +#if defined(__APPLE__) || defined(MACOSX) +#if !defined(MACOSX) +#define MACOSX // legacy support +#endif +#define _IRR_OSX_PLATFORM_ +#if !defined(_IRR_USE_LINUX_DEVICE_) // for X11 windowing declare this +#define _IRR_USE_OSX_DEVICE_ +#endif +#endif + +#if !defined(_IRR_WINDOWS_API_) && !defined(_IRR_OSX_PLATFORM_) +#if defined(__sparc__) || defined(__sun__) +#define __BIG_ENDIAN__ +#define _IRR_SOLARIS_PLATFORM_ +#else +#define _IRR_LINUX_PLATFORM_ +#endif +#define _IRR_POSIX_API_ + +#ifndef _IRR_USE_SDL_DEVICE_ +#define _IRR_USE_LINUX_DEVICE_ +#endif +#endif + +#include // TODO: Although included elsewhere this is required at least for mingw + +//! Define _IRR_COMPILE_WITH_DIRECT3D_8_ and _IRR_COMPILE_WITH_DIRECT3D_9_ to +//! compile the Irrlicht engine with Direct3D8 and/or DIRECT3D9. +/** If you only want to use the software device or opengl this can be useful. +This switch is mostly disabled because people do not get the g++ compiler compile +directX header files, and directX is only available on windows platforms. If you +are using Dev-Cpp, and want to compile this using a DX dev pack, you can define +_IRR_COMPILE_WITH_DX9_DEV_PACK_. So you simply need to add something like this +to the compiler settings: -DIRR_COMPILE_WITH_DX9_DEV_PACK +and this to the linker settings: -ld3dx9 -ld3dx8 **/ +#if defined(_IRR_WINDOWS_API_) && (!defined(__GNUC__) || defined(IRR_COMPILE_WITH_DX9_DEV_PACK)) + +//#define _IRR_COMPILE_WITH_DIRECT3D_8_ +//#define _IRR_COMPILE_WITH_DIRECT3D_9_ + +#endif + +#define _IRR_COMPILE_WITH_BLINDRT_ + +//! Define _IRR_COMPILE_WITH_OPENGL_ to compile the Irrlicht engine with OpenGL. +/** If you do not wish the engine to be compiled with OpengGL, comment this +define out. */ +//#define _IRR_COMPILE_WITH_OPENGL_ + +//! Define _IRR_COMPILE_WITH_SOFTWARE_ to compile the Irrlicht engine with software driver +/** If you do not need the software driver, or want to use Burning's Video instead, +comment this define out */ +//#define _IRR_COMPILE_WITH_SOFTWARE_ + +//! Define _IRR_COMPILE_WITH_BURNINGSVIDEO_ to compile the Irrlicht engine with Burning's video driver +/** If you do not need this software driver, you can comment this define out. */ +#define _IRR_COMPILE_WITH_BURNINGSVIDEO_ + +//! Define _IRR_COMPILE_WITH_X11_ to compile the Irrlicht engine with X11 support. +/** If you do not wish the engine to be compiled with X11, comment this +define out. */ +// Only used in LinuxDevice. +#define _IRR_COMPILE_WITH_X11_ + +//! Define _IRR_OPENGL_USE_EXTPOINTER_ if the OpenGL renderer should use OpenGL extensions via function pointers. +/** On some systems there is no support for the dynamic extension of OpenGL + via function pointers such that this has to be undef'ed. */ +#if !defined(_IRR_OSX_PLATFORM_) && !defined(_IRR_SOLARIS_PLATFORM_) +#define _IRR_OPENGL_USE_EXTPOINTER_ +#endif + +//! On some Linux systems the XF86 vidmode extension or X11 RandR are missing. Use these flags +//! to remove the dependencies such that Irrlicht will compile on those systems, too. +#if defined(_IRR_LINUX_PLATFORM_) +#define _IRR_LINUX_X11_VIDMODE_ +//#define _IRR_LINUX_X11_RANDR_ +#endif + +//! Define _IRR_COMPILE_WITH_GUI_ to compile the engine with the built-in GUI +/** Disable this if you are using an external library to draw the GUI. If you disable this then +you will not be able to use anything provided by the GUI Environment, including loading fonts. */ +#define _IRR_COMPILE_WITH_GUI_ + +//! Define _IRR_COMPILE_WITH_ZLIB_ to enable compiling the engine using zlib. +/** This enables the engine to read from compressed .zip archives. If you +disable this feature, the engine can still read archives, but only uncompressed +ones. */ +#define _IRR_COMPILE_WITH_ZLIB_ + +//! Define _IRR_USE_NON_SYSTEM_ZLIB_ to let irrlicht use the zlib which comes with irrlicht. +/** If this is commented out, Irrlicht will try to compile using the zlib installed in the system. + This is only used when _IRR_COMPILE_WITH_ZLIB_ is defined. */ +#define _IRR_USE_NON_SYSTEM_ZLIB_ + + +//! Define _IRR_COMPILE_WITH_JPEGLIB_ to enable compiling the engine using libjpeg. +/** This enables the engine to read jpeg images. If you comment this out, +the engine will no longer read .jpeg images. */ +#define _IRR_COMPILE_WITH_LIBJPEG_ + +//! Define _IRR_USE_NON_SYSTEM_JPEG_LIB_ to let irrlicht use the jpeglib which comes with irrlicht. +/** If this is commented out, Irrlicht will try to compile using the jpeg lib installed in the system. + This is only used when _IRR_COMPILE_WITH_LIBJPEG_ is defined. */ +#define _IRR_USE_NON_SYSTEM_JPEG_LIB_ + + +//! Define _IRR_COMPILE_WITH_LIBPNG_ to enable compiling the engine using libpng. +/** This enables the engine to read png images. If you comment this out, +the engine will no longer read .png images. */ +#define _IRR_COMPILE_WITH_LIBPNG_ + +//! Define _IRR_USE_NON_SYSTEM_LIBPNG_ to let irrlicht use the libpng which comes with irrlicht. +/** If this is commented out, Irrlicht will try to compile using the libpng installed in the system. + This is only used when _IRR_COMPILE_WITH_LIBPNG_ is defined. */ +#define _IRR_USE_NON_SYSTEM_LIB_PNG_ + + +//! Define _IRR_D3D_NO_SHADER_DEBUGGING to disable shader debugging in D3D9 +/** If _IRR_D3D_NO_SHADER_DEBUGGING is undefined in IrrCompileConfig.h, +it is possible to debug all D3D9 shaders in VisualStudio. All shaders +(which have been generated in memory or read from archives for example) will be emitted +into a temporary file at runtime for this purpose. To debug your shaders, choose +Debug->Direct3D->StartWithDirect3DDebugging in Visual Studio, and for every shader a +file named 'irr_dbg_shader_%%.vsh' or 'irr_dbg_shader_%%.psh' will be created. Drag'n'drop +the file you want to debug into visual studio. That's it. You can now set breakpoints and +watch registers, variables etc. This works with ASM, HLSL, and both with pixel and vertex shaders. +Note that the engine will run in D3D REF for this, which is a lot slower than HAL. */ +#define _IRR_D3D_NO_SHADER_DEBUGGING + + +#ifdef _IRR_WINDOWS_API_ + +#ifndef _IRR_STATIC_LIB_ +#ifdef IRRLICHT_EXPORTS +#define IRRLICHT_API __declspec(dllexport) +#else +#define IRRLICHT_API __declspec(dllimport) +#endif // IRRLICHT_EXPORT +#else +#define IRRLICHT_API +#endif // _IRR_STATIC_LIB_ + +// Declare the calling convention. +#if defined(_STDCALL_SUPPORTED) +#define IRRCALLCONV __stdcall +#else +#define IRRCALLCONV __cdecl +#endif // STDCALL_SUPPORTED + +#else +#define IRRLICHT_API +#define IRRCALLCONV +#endif // _IRR_WINDOWS_API_ + +// We need to disable DIRECT3D9 support for Visual Studio 6.0 because +// those $%&$!! disabled support for it since Dec. 2004 and users are complaining +// about linker errors. Comment this out only if you are knowing what you are +// doing. (Which means you have an old DX9 SDK and VisualStudio6). +#ifdef _MSC_VER +#if (_MSC_VER < 1300 && !defined(__GNUC__)) +#undef _IRR_COMPILE_WITH_DIRECT3D_9_ +#pragma message("Compiling Irrlicht with Visual Studio 6.0, support for DX9 is disabled.") +#endif +#endif + +//! Define one of the three setting for Burning's Video Software Rasterizer +/** So if we were marketing guys we could say Irrlicht has 4 Software-Rasterizers. + In a Nutshell: + All Burnings Rasterizers use 32 Bit Backbuffer, 32Bit Texture & 32 Bit Z or WBuffer, + 16 Bit/32 Bit can be adjusted on a global flag. + + BURNINGVIDEO_RENDERER_BEAUTIFUL + 32 Bit + Vertexcolor + Lighting + Per Pixel Perspective Correct + SubPixel/SubTexel Correct + + Bilinear Texturefiltering + WBuffer + + BURNINGVIDEO_RENDERER_FAST + 32 Bit + Per Pixel Perspective Correct + SubPixel/SubTexel Correct + WBuffer + + Bilinear Dithering TextureFiltering + WBuffer + + BURNINGVIDEO_RENDERER_ULTRA_FAST + 16Bit + SubPixel/SubTexel Correct + ZBuffer +*/ + +#define BURNINGVIDEO_RENDERER_BEAUTIFUL +//#define BURNINGVIDEO_RENDERER_FAST +//#define BURNINGVIDEO_RENDERER_ULTRA_FAST + + +//! Define _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_ if you want to use bone based +/** animated meshes. If you compile without this, you will be unable to load +B3D, MS3D or X meshes */ +#define _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_ + +#ifdef _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_ +//! Define _IRR_COMPILE_WITH_B3D_LOADER_ if you want to use Blitz3D files +#define _IRR_COMPILE_WITH_B3D_LOADER_ +//! Define _IRR_COMPILE_WITH_B3D_LOADER_ if you want to Milkshape files +#define _IRR_COMPILE_WITH_MS3D_LOADER_ +//! Define _IRR_COMPILE_WITH_X_LOADER_ if you want to use Microsoft X files +#define _IRR_COMPILE_WITH_X_LOADER_ +#endif + +//! Define _IRR_COMPILE_WITH_IRR_MESH_LOADER_ if you want to load Irrlicht Engine .irrmesh files +#define _IRR_COMPILE_WITH_IRR_MESH_LOADER_ + +//! Define _IRR_COMPILE_WITH_MD2_LOADER_ if you want to load Quake 2 animated files +#define _IRR_COMPILE_WITH_MD2_LOADER_ +//! Define _IRR_COMPILE_WITH_MD3_LOADER_ if you want to load Quake 3 animated files +#define _IRR_COMPILE_WITH_MD3_LOADER_ + +//! Define _IRR_COMPILE_WITH_3DS_LOADER_ if you want to load 3D Studio Max files +#define _IRR_COMPILE_WITH_3DS_LOADER_ +//! Define _IRR_COMPILE_WITH_COLLADA_LOADER_ if you want to load Collada files +#define _IRR_COMPILE_WITH_COLLADA_LOADER_ +//! Define _IRR_COMPILE_WITH_CSM_LOADER_ if you want to load Cartography Shop files +#define _IRR_COMPILE_WITH_CSM_LOADER_ +//! Define _IRR_COMPILE_WITH_BSP_LOADER_ if you want to load Quake 3 BSP files +#define _IRR_COMPILE_WITH_BSP_LOADER_ +//! Define _IRR_COMPILE_WITH_DMF_LOADER_ if you want to load DeleD files +#define _IRR_COMPILE_WITH_DMF_LOADER_ +//! Define _IRR_COMPILE_WITH_LMTS_LOADER_ if you want to load LMTools files +#define _IRR_COMPILE_WITH_LMTS_LOADER_ +//! Define _IRR_COMPILE_WITH_MY3D_LOADER_ if you want to load MY3D files +#define _IRR_COMPILE_WITH_MY3D_LOADER_ +//! Define _IRR_COMPILE_WITH_OBJ_LOADER_ if you want to load Wavefront OBJ files +#define _IRR_COMPILE_WITH_OBJ_LOADER_ +//! Define _IRR_COMPILE_WITH_OCT_LOADER_ if you want to load FSRad OCT files +#define _IRR_COMPILE_WITH_OCT_LOADER_ +//! Define _IRR_COMPILE_WITH_OGRE_LOADER_ if you want to load Ogre 3D files +#define _IRR_COMPILE_WITH_OGRE_LOADER_ +//! Define _IRR_COMPILE_WITH_LWO_LOADER_ if you want to load Lightwave3D files +#define _IRR_COMPILE_WITH_LWO_LOADER_ +//! Define _IRR_COMPILE_WITH_STL_LOADER_ if you want to load .stl files +#define _IRR_COMPILE_WITH_STL_LOADER_ + +//! Define _IRR_COMPILE_WITH_IRR_WRITER_ if you want to write static .irr files +#define _IRR_COMPILE_WITH_IRR_WRITER_ +//! Define _IRR_COMPILE_WITH_COLLADA_WRITER_ if you want to write Collada files +#define _IRR_COMPILE_WITH_COLLADA_WRITER_ +//! Define _IRR_COMPILE_WITH_STL_WRITER_ if you want to write .stl files +#define _IRR_COMPILE_WITH_STL_WRITER_ + +//! Define _IRR_COMPILE_WITH_BMP_LOADER_ if you want to load .bmp files +//! Disabling this loader will also disable the built-in font +#define _IRR_COMPILE_WITH_BMP_LOADER_ +//! Define _IRR_COMPILE_WITH_JPG_LOADER_ if you want to load .jpg files +#define _IRR_COMPILE_WITH_JPG_LOADER_ +//! Define _IRR_COMPILE_WITH_PCX_LOADER_ if you want to load .pcx files +#define _IRR_COMPILE_WITH_PCX_LOADER_ +//! Define _IRR_COMPILE_WITH_PNG_LOADER_ if you want to load .png files +#define _IRR_COMPILE_WITH_PNG_LOADER_ +//! Define _IRR_COMPILE_WITH_PPM_LOADER_ if you want to load .ppm/.pgm/.pbm files +#define _IRR_COMPILE_WITH_PPM_LOADER_ +//! Define _IRR_COMPILE_WITH_PSD_LOADER_ if you want to load .psd files +#define _IRR_COMPILE_WITH_PSD_LOADER_ +//! Define _IRR_COMPILE_WITH_TGA_LOADER_ if you want to load .tga files +#define _IRR_COMPILE_WITH_TGA_LOADER_ +//! Define _IRR_COMPILE_WITH_WAL_LOADER_ if you want to load .wal files +#define _IRR_COMPILE_WITH_WAL_LOADER_ + +//! Define _IRR_COMPILE_WITH_BMP_WRITER_ if you want to write .bmp files +#define _IRR_COMPILE_WITH_BMP_WRITER_ +//! Define _IRR_COMPILE_WITH_JPG_WRITER_ if you want to write .jpg files +#define _IRR_COMPILE_WITH_JPG_WRITER_ +//! Define _IRR_COMPILE_WITH_PCX_WRITER_ if you want to write .pcx files +#define _IRR_COMPILE_WITH_PCX_WRITER_ +//! Define _IRR_COMPILE_WITH_PNG_WRITER_ if you want to write .png files +#define _IRR_COMPILE_WITH_PNG_WRITER_ +//! Define _IRR_COMPILE_WITH_PPM_WRITER_ if you want to write .ppm files +#define _IRR_COMPILE_WITH_PPM_WRITER_ +//! Define _IRR_COMPILE_WITH_PSD_WRITER_ if you want to write .psd files +#define _IRR_COMPILE_WITH_PSD_WRITER_ +//! Define _IRR_COMPILE_WITH_TGA_WRITER_ if you want to write .tga files +#define _IRR_COMPILE_WITH_TGA_WRITER_ + +//! Set FPU settings +/** Irrlicht should use approximate float and integer fpu techniques +precision will be lower but speed higher. currently X86 only +*/ +#if !defined(_IRR_OSX_PLATFORM_) && !defined(_IRR_SOLARIS_PLATFORM_) + //#define IRRLICHT_FAST_MATH +#endif + +// Some cleanup +// XBox does not have OpenGL or DirectX9 +#if defined(_IRR_XBOX_PLATFORM_) +#undef _IRR_COMPILE_WITH_OPENGL_ +#undef _IRR_COMPILE_WITH_DIRECT3D_9_ +#endif + +// WinCE does not have OpenGL or DirectX9 +#if defined(_WIN32_WCE) + #undef _IRR_COMPILE_WITH_OPENGL_ + #undef _IRR_COMPILE_WITH_DIRECT3D_8_ + #undef _IRR_COMPILE_WITH_DIRECT3D_9_ + #undef _IRR_COMPILE_WITH_SOFTWARE_ + #undef BURNINGVIDEO_RENDERER_BEAUTIFUL + #undef _IRR_USE_WINDOWS_DEVICE_ + #define _IRR_USE_WINDOWS_CE_DEVICE_ + #define BURNINGVIDEO_RENDERER_CE +#endif + +#endif // __IRR_COMPILE_CONFIG_H_INCLUDED__ + diff --git a/include/NoIrrlicht/NoIrrlicht.h b/include/NoIrrlicht/NoIrrlicht.h new file mode 100644 index 0000000..1d5441b --- /dev/null +++ b/include/NoIrrlicht/NoIrrlicht.h @@ -0,0 +1,9 @@ +#ifndef IRRNET_INO_IRRLICHT_H +#define IRRNET_INO_IRRLICHT_H + +#include "irrTypes.h" +#include "irrArray.h" +#include "irrString.h" +#include "vector3d.h" + +#endif \ No newline at end of file diff --git a/include/NoIrrlicht/heapsort.h b/include/NoIrrlicht/heapsort.h new file mode 100644 index 0000000..b346364 --- /dev/null +++ b/include/NoIrrlicht/heapsort.h @@ -0,0 +1,71 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#ifndef __IRR_HEAPSORT_H_INCLUDED__ +#define __IRR_HEAPSORT_H_INCLUDED__ + +#include "irrTypes.h" + +namespace irr +{ +namespace core +{ + +//! Sinks an element into the heap. +template +inline void heapsink(T*array, s32 element, s32 max) +{ + while ((element<<1) < max) // there is a left child + { + s32 j = (element<<1); + + if (j+1 < max && array[j] < array[j+1]) + j = j+1; // take right child + + if (array[element] < array[j]) + { + T t = array[j]; // swap elements + array[j] = array[element]; + array[element] = t; + element = j; + } + else + return; + } +} + + +//! Sorts an array with size 'size' using heapsort. +template +inline void heapsort(T* array_, s32 size) +{ + // for heapsink we pretent this is not c++, where + // arrays start with index 0. So we decrease the array pointer, + // the maximum always +2 and the element always +1 + + T* virtualArray = array_ - 1; + s32 virtualSize = size + 2; + s32 i; + + // build heap + + for (i=((size-1)/2); i>=0; --i) + heapsink(virtualArray, i+1, virtualSize-1); + + // sort array + + for (i=size-1; i>=0; --i) + { + T t = array_[0]; + array_[0] = array_[i]; + array_[i] = t; + heapsink(virtualArray, 1, i + 1); + } +} + +} // end namespace core +} // end namespace irr + +#endif + diff --git a/include/NoIrrlicht/irrAllocator.h b/include/NoIrrlicht/irrAllocator.h new file mode 100644 index 0000000..91e0d1a --- /dev/null +++ b/include/NoIrrlicht/irrAllocator.h @@ -0,0 +1,116 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine" and the "irrXML" project. +// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h + +#ifndef __IRR_ALLOCATOR_H_INCLUDED__ +#define __IRR_ALLOCATOR_H_INCLUDED__ + +#include "irrTypes.h" +#include +#include + +namespace irr +{ +namespace core +{ + +#ifdef DEBUG_CLIENTBLOCK +#undef DEBUG_CLIENTBLOCK +#define DEBUG_CLIENTBLOCK new +#endif + +//! Very simple allocator implementation, containers using it can +//! be used across dll boundaries +template +class irrAllocator +{ +public: + + //! destructor + virtual ~irrAllocator() {} + + //! allocate memory for an array of objects + T* allocate(size_t cnt) + { + return (T*)internal_new(cnt* sizeof(T)); + } + + //! deallocate memory for an array of objects + void deallocate(T* ptr) + { + internal_delete(ptr); + } + + //! construct an element + void construct(T* ptr, const T&e) + { + new ((void*)ptr) T(e); + } + + //! destruct an element + void destruct(T* ptr) + { + ptr->~T(); + } + +protected: + + virtual void* internal_new(size_t cnt) + { + return operator new(cnt); + } + + virtual void internal_delete(void* ptr) + { + operator delete(ptr); + } + +}; + + +//! fast allocator, only to be used in containers inside the same memory heap. +/** Containers using it are NOT able to be used it across dll boundaries. Use this +when using in an internal class or function or when compiled into a static lib */ +template +class irrAllocatorFast +{ +public: + + //! allocate memory for an array of objects + T* allocate(size_t cnt) + { + return (T*)operator new(cnt* sizeof(T)); + } + + //! deallocate memory for an array of objects + void deallocate(T* ptr) + { + operator delete(ptr); + } + + //! construct an element + void construct(T* ptr, const T&e) + { + new ((void*)ptr) T(e); + } + + //! destruct an element + void destruct(T* ptr) + { + ptr->~T(); + } +}; + + + +#ifdef DEBUG_CLIENTBLOCK +#undef DEBUG_CLIENTBLOCK +#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__) +#endif + + +} // end namespace core +} // end namespace irr + +#endif + diff --git a/include/NoIrrlicht/irrArray.h b/include/NoIrrlicht/irrArray.h new file mode 100644 index 0000000..e11d896 --- /dev/null +++ b/include/NoIrrlicht/irrArray.h @@ -0,0 +1,515 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine" and the "irrXML" project. +// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h + +#ifndef __IRR_ARRAY_H_INCLUDED__ +#define __IRR_ARRAY_H_INCLUDED__ + +#include "irrTypes.h" +#include "heapsort.h" +#include "irrAllocator.h" + +namespace irr +{ +namespace core +{ + +//! Self reallocating template array (like stl vector) with additional features. +/** Some features are: Heap sorting, binary search methods, easier debugging. +*/ +template > +class array +{ + +public: + + array() + : data(0), allocated(0), used(0), + free_when_destroyed(true), is_sorted(true) + { + } + + //! Constructs a array and allocates an initial chunk of memory. + //! \param start_count: Amount of elements to allocate. + array(u32 start_count) + : data(0), allocated(0), used(0), + free_when_destroyed(true), is_sorted(true) + { + reallocate(start_count); + } + + + //! Copy constructor + array(const array& other) + : data(0) + { + *this = other; + } + + + + //! Destructor. Frees allocated memory, if set_free_when_destroyed + //! was not set to false by the user before. + ~array() + { + if (free_when_destroyed) + { + for (u32 i=0; i allocated) + { + // reallocate(used * 2 +1); + // this doesn't work if the element is in the same array. So + // we'll copy the element first to be sure we'll get no data + // corruption + + T e(element); + reallocate(used * 2 +1); // increase data block + + allocator.construct(&data[used++], e); // data[used++] = e; // push_back + } + else + { + //data[used++] = element; + // instead of using this here, we copy it the safe way: + allocator.construct(&data[used++], element); + } + + is_sorted = false; + } + + + //! Adds an element at the front of the array. If the array is to small to + //! add this new element, the array is made bigger. Please note that this + //! is slow, because the whole array needs to be copied for this. + //! \param element: Element to add at the back of the array. + void push_front(const T& element) + { + insert(element); + } + + + //! Insert item into array at specified position. Please use this + //! only if you know what you are doing (possible performance loss). + //! The preferred method of adding elements should be push_back(). + //! \param element: Element to be inserted + //! \param index: Where position to insert the new element. + void insert(const T& element, u32 index=0) + { + _IRR_DEBUG_BREAK_IF(index>used) // access violation + + if (used + 1 > allocated) + reallocate(used +1); + + for (u32 i=used; i>index; --i) + { + if (i index) + allocator.destruct(&data[index]); + allocator.construct(&data[index], element); // data[index] = element; + is_sorted = false; + ++used; + } + + + + + //! Clears the array and deletes all allocated memory. + void clear() + { + for (u32 i=0; i& other) + { + if (data) + { + for (u32 i=0; i& other) const + { + if (used != other.used) + return false; + + for (u32 i=0; i& other) const + { + return !(*this==other); + } + + //! Direct access operator + T& operator [](u32 index) + { + _IRR_DEBUG_BREAK_IF(index>=used) // access violation + + return data[index]; + } + + + + //! Direct access operator + const T& operator [](u32 index) const + { + _IRR_DEBUG_BREAK_IF(index>=used) // access violation + + return data[index]; + } + + //! Gets last frame + T& getLast() + { + _IRR_DEBUG_BREAK_IF(!used) // access violation + + return data[used-1]; + } + + + //! Gets last frame + const T& getLast() const + { + _IRR_DEBUG_BREAK_IF(!used) // access violation + + return data[used-1]; + } + + //! Returns a pointer to the array. + //! \return Pointer to the array. + T* pointer() + { + return data; + } + + + + //! Returns a const pointer to the array. + //! \return Pointer to the array. + const T* const_pointer() const + { + return data; + } + + + + //! Returns size of used array. + //! \return Size of elements in the array. + u32 size() const + { + return used; + } + + + + //! Returns amount memory allocated. + //! \return Returns amount of memory allocated. The amount of bytes + //! allocated would be allocated_size() * sizeof(ElementsUsed); + u32 allocated_size() const + { + return allocated; + } + + + + //! Returns true if array is empty + //! \return True if the array is empty, false if not. + bool empty() const + { + return used == 0; + } + + + + //! Sorts the array using heapsort. There is no additional memory waste and + //! the algorithm performs O(n*log n) in worst case. + void sort() + { + if (is_sorted || used<2) + return; + + heapsort(data, used); + is_sorted = true; + } + + + + //! Performs a binary search for an element, returns -1 if not found. + //! The array will be sorted before the binary search if it is not + //! already sorted. + //! \param element: Element to search for. + //! \return Returns position of the searched element if it was found, + //! otherwise -1 is returned. + s32 binary_search(const T& element) + { + sort(); + return binary_search(element, 0, used-1); + } + + //! Performs a binary search for an element, returns -1 if not found. + //! The array must be sorted prior + //! \param element: Element to search for. + //! \return Returns position of the searched element if it was found, + //! otherwise -1 is returned. + s32 binary_search_const(const T& element) const + { + return binary_search(element, 0, used-1); + } + + + + //! Performs a binary search for an element, returns -1 if not found. + //! \param element: Element to search for. + //! \param left: First left index + //! \param right: Last right index. + //! \return Returns position of the searched element if it was found, + //! otherwise -1 is returned. + s32 binary_search(const T& element, s32 left, s32 right) const + { + if (!used) + return -1; + + s32 m; + + do + { + m = (left+right)>>1; + + if (element < data[m]) + right = m - 1; + else + left = m + 1; + + } while((element < data[m] || data[m] < element) && left<=right); + // this last line equals to: + // " while((element != array[m]) && left<=right);" + // but we only want to use the '<' operator. + // the same in next line, it is "(element == array[m])" + + + if (!(element < data[m]) && !(data[m] < element)) + return m; + + return -1; + } + + + //! Finds an element in linear time, which is very slow. Use + //! binary_search for faster finding. Only works if ==operator is implemented. + //! \param element: Element to search for. + //! \return Returns position of the searched element if it was found, + //! otherwise -1 is returned. + s32 linear_search(const T& element) const + { + for (u32 i=0; i=0; --i) + if (data[i] == element) + return i; + + return -1; + } + + + + //! Erases an element from the array. May be slow, because all elements + //! following after the erased element have to be copied. + //! \param index: Index of element to be erased. + void erase(u32 index) + { + _IRR_DEBUG_BREAK_IF(index>=used) // access violation + + for (u32 i=index+1; i=used || count<1 || index+count>used) // access violation + + u32 i; + for (i=index; i index+count) + allocator.destruct(&data[i-count]); + + allocator.construct(&data[i-count], data[i]); // data[i-count] = data[i]; + + if (i >= used-count) + allocator.destruct(&data[i]); + } + + used-= count; + } + + + //! Sets if the array is sorted + void set_sorted(bool _is_sorted) + { + is_sorted = _is_sorted; + } + + + private: + + T* data; + u32 allocated; + u32 used; + bool free_when_destroyed; + bool is_sorted; + TAlloc allocator; +}; + + +} // end namespace core +} // end namespace irr + + +#endif + diff --git a/include/NoIrrlicht/irrMath.h b/include/NoIrrlicht/irrMath.h new file mode 100644 index 0000000..b13e42d --- /dev/null +++ b/include/NoIrrlicht/irrMath.h @@ -0,0 +1,456 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#ifndef __IRR_MATH_H_INCLUDED__ +#define __IRR_MATH_H_INCLUDED__ + +#include "IrrCompileConfig.h" +#include "irrTypes.h" +#include + +#if defined(_IRR_SOLARIS_PLATFORM_) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__) || defined (_WIN32_WCE) + #define sqrtf(X) (f32)sqrt((f64)(X)) + #define sinf(X) (f32)sin((f64)(X)) + #define cosf(X) (f32)cos((f64)(X)) + #define asinf(X) (f32)asin((f64)(X)) + #define acosf(X) (f32)acos((f64)(X)) + #define atan2f(X,Y) (f32)atan2((f64)(X),(f64)(Y)) + #define ceilf(X) (f32)ceil((f64)(X)) + #define floorf(X) (f32)floor((f64)(X)) + #define powf(X,Y) (f32)pow((f64)(X),(f64)(Y)) + #define fmodf(X,Y) (f32)fmod((f64)(X),(f64)(Y)) + #define fabsf(X) (f32)fabs((f64)(X)) +#endif + +namespace irr +{ +namespace core +{ + + //! Rounding error constant often used when comparing f32 values. + +#ifdef IRRLICHT_FAST_MATH + const f32 ROUNDING_ERROR_32 = 0.00005f; + const f64 ROUNDING_ERROR_64 = 0.000005f; +#else + const f32 ROUNDING_ERROR_32 = 0.000001f; + const f64 ROUNDING_ERROR_64 = 0.00000001f; +#endif + +#ifdef PI // make sure we don't collide with a define +#undef PI +#endif + //! Constant for PI. + const f32 PI = 3.14159265359f; + + //! Constant for reciprocal of PI. + const f32 RECIPROCAL_PI = 1.0f/PI; + + //! Constant for half of PI. + const f32 HALF_PI = PI/2.0f; + +#ifdef PI64 // make sure we don't collide with a define +#undef PI64 +#endif + //! Constant for 64bit PI. + const f64 PI64 = 3.1415926535897932384626433832795028841971693993751; + + //! Constant for 64bit reciprocal of PI. + const f64 RECIPROCAL_PI64 = 1.0/PI64; + + //! 32bit Constant for converting from degrees to radians + const f32 DEGTORAD = PI / 180.0f; + + //! 32bit constant for converting from radians to degrees (formally known as GRAD_PI) + const f32 RADTODEG = 180.0f / PI; + + //! 64bit constant for converting from degrees to radians (formally known as GRAD_PI2) + const f64 DEGTORAD64 = PI64 / 180.0; + + //! 64bit constant for converting from radians to degrees + const f64 RADTODEG64 = 180.0 / PI64; + + //! returns minimum of two values. Own implementation to get rid of the STL (VS6 problems) + template + inline const T& min_(const T& a, const T& b) + { + return a < b ? a : b; + } + + //! returns minimum of three values. Own implementation to get rid of the STL (VS6 problems) + template + inline const T& min_(const T& a, const T& b, const T& c) + { + return a < b ? min_(a, c) : min_(b, c); + } + + //! returns maximum of two values. Own implementation to get rid of the STL (VS6 problems) + template + inline const T& max_(const T& a, const T& b) + { + return a < b ? b : a; + } + + //! returns maximum of three values. Own implementation to get rid of the STL (VS6 problems) + template + inline const T& max_(const T& a, const T& b, const T& c) + { + return a < b ? max_(b, c) : max_(a, c); + } + + //! returns abs of two values. Own implementation to get rid of STL (VS6 problems) + template + inline T abs_(const T& a) + { + return a < (T)0 ? -a : a; + } + + //! returns linear interpolation of a and b with ratio t + //! \return: a if t==0, b if t==1, and the linear interpolation else + template + inline T lerp(const T& a, const T& b, const f32 t) + { + return (T)(a*(1.f-t)) + (b*t); + } + + //! clamps a value between low and high + template + inline const T clamp (const T& value, const T& low, const T& high) + { + return min_ (max_(value,low), high); + } + + //! returns if a equals b, taking possible rounding errors into account + inline bool equals(const f32 a, const f32 b, const f32 tolerance = ROUNDING_ERROR_32) + { + return (a + tolerance >= b) && (a - tolerance <= b); + } + + //! returns if a equals b, taking possible rounding errors into account + inline bool equals(const s32 a, const s32 b, const s32 tolerance = 0) + { + return (a + tolerance >= b) && (a - tolerance <= b); + } + + //! returns if a equals b, taking possible rounding errors into account + inline bool equals(const u32 a, const u32 b, const u32 tolerance = 0) + { + return (a + tolerance >= b) && (a - tolerance <= b); + } + + //! returns if a equals zero, taking rounding errors into account + inline bool iszero(const f32 a, const f32 tolerance = ROUNDING_ERROR_32) + { + return fabsf ( a ) <= tolerance; + } + + //! returns if a equals zero, taking rounding errors into account + inline bool iszero(const s32 a, const s32 tolerance = 0) + { + return ( a & 0x7ffffff ) <= tolerance; + } + + //! returns if a equals zero, taking rounding errors into account + inline bool iszero(const u32 a, const u32 tolerance = 0) + { + return a <= tolerance; + } + + inline s32 s32_min ( s32 a, s32 b) + { + s32 mask = (a - b) >> 31; + return (a & mask) | (b & ~mask); + } + + inline s32 s32_max ( s32 a, s32 b) + { + s32 mask = (a - b) >> 31; + return (b & mask) | (a & ~mask); + } + + inline s32 s32_clamp (s32 value, s32 low, s32 high) + { + return s32_min (s32_max(value,low), high); + } + + /* + + float IEEE-754 bit represenation + + 0 0x00000000 + 1.0 0x3f800000 + 0.5 0x3f000000 + 3 0x40400000 + +inf 0x7f800000 + -inf 0xff800000 + +NaN 0x7fc00000 or 0x7ff00000 + in general: number = (sign ? -1:1) * 2^(exponent) * 1.(mantissa bits) + */ + + #define F32_AS_S32(f) (*((s32 *) &(f))) + #define F32_AS_U32(f) (*((u32 *) &(f))) + #define F32_AS_U32_POINTER(f) ( ((u32 *) &(f))) + + #define F32_VALUE_0 0x00000000 + #define F32_VALUE_1 0x3f800000 + #define F32_SIGN_BIT 0x80000000U + #define F32_EXPON_MANTISSA 0x7FFFFFFFU + + //! code is taken from IceFPU + //! Integer representation of a floating-point value. + #define IR(x) ((u32&)(x)) + + //! Absolute integer representation of a floating-point value + #define AIR(x) (IR(x)&0x7fffffff) + + //! Floating-point representation of an integer value. + #define FR(x) ((f32&)(x)) + + #define IEEE_1_0 0x3f800000 //!< integer representation of 1.0 + #define IEEE_255_0 0x437f0000 //!< integer representation of 255.0 + +#ifdef IRRLICHT_FAST_MATH + #define F32_LOWER_0(f) (F32_AS_U32(f) > F32_SIGN_BIT) + #define F32_LOWER_EQUAL_0(f) (F32_AS_S32(f) <= F32_VALUE_0) + #define F32_GREATER_0(f) (F32_AS_S32(f) > F32_VALUE_0) + #define F32_GREATER_EQUAL_0(f) (F32_AS_U32(f) <= F32_SIGN_BIT) + #define F32_EQUAL_1(f) (F32_AS_U32(f) == F32_VALUE_1) + #define F32_EQUAL_0(f) ( (F32_AS_U32(f) & F32_EXPON_MANTISSA ) == F32_VALUE_0) + + // only same sign + #define F32_A_GREATER_B(a,b) (F32_AS_S32((a)) > F32_AS_S32((b))) + +#else + + #define F32_LOWER_0(n) ((n) < 0.0f) + #define F32_LOWER_EQUAL_0(n) ((n) <= 0.0f) + #define F32_GREATER_0(n) ((n) > 0.0f) + #define F32_GREATER_EQUAL_0(n) ((n) >= 0.0f) + #define F32_EQUAL_1(n) ((n) == 1.0f) + #define F32_EQUAL_0(n) ((n) == 0.0f) + #define F32_A_GREATER_B(a,b) ((a) > (b)) +#endif + + +#ifndef REALINLINE + #ifdef _MSC_VER + #define REALINLINE __forceinline + #else + #define REALINLINE inline + #endif +#endif + + + //! conditional set based on mask and arithmetic shift + REALINLINE u32 if_c_a_else_b ( const s32 condition, const u32 a, const u32 b ) + { + return ( ( -condition >> 31 ) & ( a ^ b ) ) ^ b; + } + + //! conditional set based on mask and arithmetic shift + REALINLINE u32 if_c_a_else_0 ( const s32 condition, const u32 a ) + { + return ( -condition >> 31 ) & a; + } + + /* + if (condition) state |= m; else state &= ~m; + */ + REALINLINE void setbit_cond ( u32 &state, s32 condition, u32 mask ) + { + // 0, or any postive to mask + //s32 conmask = -condition >> 31; + state ^= ( ( -condition >> 31 ) ^ state ) & mask; + } + + + + inline f32 round_( f32 x ) + { + return floorf( x + 0.5f ); + } + + REALINLINE void clearFPUException () + { +#ifdef IRRLICHT_FAST_MATH +#ifdef feclearexcept + feclearexcept(FE_ALL_EXCEPT); +#elif defined(_MSC_VER) + __asm fnclex; +#elif defined(__GNUC__) && defined(__x86__) + __asm__ __volatile__ ("fclex \n\t"); +#else +# warn clearFPUException not supported. +#endif +#endif + } + + REALINLINE f32 reciprocal_squareroot(const f32 x) + { +#ifdef IRRLICHT_FAST_MATH + // comes from Nvidia +#if 1 + u32 tmp = (u32(IEEE_1_0 << 1) + IEEE_1_0 - *(u32*)&x) >> 1; + f32 y = *(f32*)&tmp; + return y * (1.47f - 0.47f * x * y * y); +#elif defined(_MSC_VER) + // an sse2 version + __asm + { + movss xmm0, x + rsqrtss xmm0, xmm0 + movss x, xmm0 + } + return x; +#endif +#else // no fast math + return 1.f / sqrtf ( x ); +#endif + } + + + + REALINLINE f32 reciprocal ( const f32 f ) + { +#ifdef IRRLICHT_FAST_MATH + //! i do not divide through 0.. (fpu expection) + // instead set f to a high value to get a return value near zero.. + // -1000000000000.f.. is use minus to stay negative.. + // must test's here (plane.normal dot anything ) checks on <= 0.f + return 1.f / f; + //u32 x = (-(AIR(f) != 0 ) >> 31 ) & ( IR(f) ^ 0xd368d4a5 ) ^ 0xd368d4a5; + //return 1.f / FR ( x ); +#else // no fast math + return 1.f / f; +#endif + } + + + REALINLINE f32 reciprocal_approxim ( const f32 p ) + { +#ifdef IRRLICHT_FAST_MATH + register u32 x = 0x7F000000 - IR ( p ); + const f32 r = FR ( x ); + return r * (2.0f - p * r); +#else // no fast math + return 1.f / p; +#endif + } + + + REALINLINE s32 floor32(f32 x) + { +#ifdef IRRLICHT_FAST_MATH + const f32 h = 0.5f; + + s32 t; + +#if defined(_MSC_VER) + __asm + { + fld x + fsub h + fistp t + } +#elif defined(__GNUC__) + __asm__ __volatile__ ( + "fsub %2 \n\t" + "fistpl %0" + : "=m" (t) + : "t" (x), "f" (h) + : "st" + ); +#else +# warn IRRLICHT_FAST_MATH not supported. + return (s32) floorf ( x ); +#endif + return t; +#else // no fast math + return (s32) floorf ( x ); +#endif + } + + + REALINLINE s32 ceil32 ( f32 x ) + { +#ifdef IRRLICHT_FAST_MATH + const f32 h = 0.5f; + + s32 t; + +#if defined(_MSC_VER) + __asm + { + fld x + fadd h + fistp t + } +#elif defined(__GNUC__) + __asm__ __volatile__ ( + "fadd %2 \n\t" + "fistpl %0 \n\t" + : "=m"(t) + : "t"(x), "f"(h) + : "st" + ); +#else +# warn IRRLICHT_FAST_MATH not supported. + return (s32) ceilf ( x ); +#endif + return t; +#else // not fast math + return (s32) ceilf ( x ); +#endif + } + + + + REALINLINE s32 round32(f32 x) + { +#if defined(IRRLICHT_FAST_MATH) + s32 t; + +#if defined(_MSC_VER) + __asm + { + fld x + fistp t + } +#elif defined(__GNUC__) + __asm__ __volatile__ ( + "fistpl %0 \n\t" + : "=m"(t) + : "t"(x) + : "st" + ); +#else +# warn IRRLICHT_FAST_MATH not supported. + return (s32) round_(x); +#endif + return t; +#else // no fast math + return (s32) round_(x); +#endif + } + + inline f32 f32_max3(const f32 a, const f32 b, const f32 c) + { + return a > b ? (a > c ? a : c) : (b > c ? b : c); + } + + inline f32 f32_min3(const f32 a, const f32 b, const f32 c) + { + return a < b ? (a < c ? a : c) : (b < c ? b : c); + } + + inline f32 fract ( f32 x ) + { + return x - floorf ( x ); + } + +} // end namespace core +} // end namespace irr + +#endif + diff --git a/include/NoIrrlicht/irrString.h b/include/NoIrrlicht/irrString.h new file mode 100644 index 0000000..261f140 --- /dev/null +++ b/include/NoIrrlicht/irrString.h @@ -0,0 +1,891 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine" and the "irrXML" project. +// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h + +#ifndef __IRR_STRING_H_INCLUDED__ +#define __IRR_STRING_H_INCLUDED__ + +#include "irrTypes.h" +#include "irrAllocator.h" +#include "irrMath.h" +#include +#include +#include + +namespace irr +{ +namespace core +{ + +//! Very simple string class with some useful features. +/** string and string work both with unicode AND ascii, +so you can assign unicode to string and ascii to string +(and the other way round) if your ever would want to. +Note that the conversation between both is not done using an encoding. + +Known bugs: +Special characters like umlauts are ignored in the +methods make_upper, make_lower and equals_ignore_case. +*/ +template > +class string +{ +public: + + //! Default constructor + string() + : array(0), allocated(1), used(1) + { + array = allocator.allocate(1); // new T[1]; + array[0] = 0x0; + } + + + + //! Constructor + string(const string& other) + : array(0), allocated(0), used(0) + { + *this = other; + } + + + + //! Constructs a string from a float + string(const double number) + : array(0), allocated(0), used(0) + { + c8 tmpbuf[255]; + snprintf(tmpbuf, 255, "%0.6f", number); + *this = tmpbuf; + } + + + + //! Constructs a string from an int + string(int number) + : array(0), allocated(0), used(0) + { + // store if negative and make positive + + bool negative = false; + if (number < 0) + { + number *= -1; + negative = true; + } + + // temporary buffer for 16 numbers + + c8 tmpbuf[16]; + tmpbuf[15] = 0; + u32 idx = 15; + + // special case '0' + + if (!number) + { + tmpbuf[14] = '0'; + *this = &tmpbuf[14]; + return; + } + + // add numbers + + while(number && idx) + { + --idx; + tmpbuf[idx] = (c8)('0' + (number % 10)); + number /= 10; + } + + // add sign + + if (negative) + { + --idx; + tmpbuf[idx] = '-'; + } + + *this = &tmpbuf[idx]; + } + + + + //! Constructs a string from an unsigned int + string(unsigned int number) + : array(0), allocated(0), used(0) + { + // temporary buffer for 16 numbers + + c8 tmpbuf[16]; + tmpbuf[15] = 0; + u32 idx = 15; + + // special case '0' + + if (!number) + { + tmpbuf[14] = '0'; + *this = &tmpbuf[14]; + return; + } + + // add numbers + + while(number && idx) + { + --idx; + tmpbuf[idx] = (c8)('0' + (number % 10)); + number /= 10; + } + + *this = &tmpbuf[idx]; + } + + + + //! Constructor for copying a string from a pointer with a given length + template + string(const B* const c, u32 length) + : array(0), allocated(0), used(0) + { + if (!c) + { + // correctly init the string to an empty one + *this=""; + return; + } + + allocated = used = length+1; + array = allocator.allocate(used); // new T[used]; + + for (u32 l = 0; l + string(const B* const c) + : array(0), allocated(0), used(0) + { + *this = c; + } + + + + //! destructor + ~string() + { + allocator.deallocate(array); // delete [] array; + } + + + + //! Assignment operator + string& operator=(const string& other) + { + if (this == &other) + return *this; + + allocator.deallocate(array); // delete [] array; + allocated = used = other.size()+1; + array = allocator.allocate(used); //new T[used]; + + const T* p = other.c_str(); + for (u32 i=0; i + string& operator=(const B* const c) + { + if (!c) + { + if (!array) + { + array = allocator.allocate(1); //new T[1]; + allocated = 1; + } + used = 1; + array[0] = 0x0; + return *this; + } + + if ((void*)c == (void*)array) + return *this; + + u32 len = 0; + const B* p = c; + while(*p) + { + ++len; + ++p; + } + + // we'll take the old string for a while, because the new + // string could be a part of the current string. + T* oldArray = array; + + ++len; + allocated = used = len; + array = allocator.allocate(used); //new T[used]; + + for (u32 l = 0; l operator+(const string& other) const + { + string str(*this); + str.append(other); + + return str; + } + + //! Add operator for strings, ascii and unicode + template + string operator+(const B* const c) const + { + string str(*this); + str.append(c); + + return str; + } + + + //! Direct access operator + T& operator [](const u32 index) + { + _IRR_DEBUG_BREAK_IF(index>=used) // bad index + return array[index]; + } + + + //! Direct access operator + const T& operator [](const u32 index) const + { + _IRR_DEBUG_BREAK_IF(index>=used) // bad index + return array[index]; + } + + + //! Comparison operator + bool operator ==(const T* const str) const + { + if (!str) + return false; + + u32 i; + for(i=0; array[i] && str[i]; ++i) + if (array[i] != str[i]) + return false; + + return !array[i] && !str[i]; + } + + + + //! Comparison operator + bool operator ==(const string& other) const + { + for(u32 i=0; array[i] && other.array[i]; ++i) + if (array[i] != other.array[i]) + return false; + + return used == other.used; + } + + + //! Is smaller operator + bool operator <(const string& other) const + { + for(u32 i=0; array[i] && other.array[i]; ++i) + { + s32 diff = array[i] - other.array[i]; + if ( diff ) + return diff < 0; +/* + if (array[i] != other.array[i]) + return (array[i] < other.array[i]); +*/ + } + + return used < other.used; + } + + + + //! Equals not operator + bool operator !=(const T* const str) const + { + return !(*this == str); + } + + + + //! Equals not operator + bool operator !=(const string& other) const + { + return !(*this == other); + } + + + + //! Returns length of string + /** \return Returns length of the string in characters. */ + u32 size() const + { + return used-1; + } + + + + //! Returns character string + /** \return Returns pointer to C-style zero terminated string. */ + const T* c_str() const + { + return array; + } + + + + //! Makes the string lower case. + void make_lower() + { + for (u32 i=0; i=a && array[i]<=z) + array[i] += diff; + } + } + + + + //! Compares the string ignoring case. + /** \param other: Other string to compare. + \return Returns true if the string are equal ignoring case. */ + bool equals_ignore_case(const string& other) const + { + for(u32 i=0; array[i] && other[i]; ++i) + if (ansi_lower(array[i]) != ansi_lower(other[i])) + return false; + + return used == other.used; + } + + //! Compares the string ignoring case. + /** \param other: Other string to compare. + \return Returns true if the string is smaller ignoring case. */ + bool lower_ignore_case(const string& other) const + { + for(u32 i=0; array[i] && other.array[i]; ++i) + { + s32 diff = (s32) ansi_lower ( array[i] ) - (s32) ansi_lower ( other.array[i] ); + if ( diff ) + return diff < 0; + } + + return used < other.used; + } + + + + //! compares the first n characters of the strings + bool equalsn(const string& other, u32 n) const + { + u32 i; + for(i=0; array[i] && other[i] && i < n; ++i) + if (array[i] != other[i]) + return false; + + // if one (or both) of the strings was smaller then they + // are only equal if they have the same length + return (i == n) || (used == other.used); + } + + + //! compares the first n characters of the strings + bool equalsn(const T* const str, u32 n) const + { + if (!str) + return false; + s32 i; + for(i=0; array[i] && str[i] && i < n; ++i) + if (array[i] != str[i]) + return false; + + // if one (or both) of the strings was smaller then they + // are only equal if they have the same length + return (i == n) || (array[i] == 0 && str[i] == 0); + } + + + //! Appends a character to this string + /** \param character: Character to append. */ + void append(T character) + { + if (used + 1 > allocated) + reallocate(used + 1); + + ++used; + + array[used-2] = character; + array[used-1] = 0; + } + + //! Appends a char string to this string + /** \param other: Char string to append. */ + void append(const T* const other) + { + if (!other) + return; + + u32 len = 0; + const T* p = other; + while(*p) + { + ++len; + ++p; + } + + if (used + len > allocated) + reallocate(used + len); + + --used; + ++len; + + for (u32 l=0; l& other) + { + --used; + u32 len = other.size()+1; + + if (used + len > allocated) + reallocate(used + len); + + for (u32 l=0; l& other, u32 length) + { + if (other.size() < length) + { + append(other); + return; + } + + if (used + length > allocated) + reallocate(used + length); + + --used; + + for (u32 l=0; l + s32 findFirstCharNotInList(const B* const c, u32 count) const + { + for (u32 i=0; i + s32 findLastCharNotInList(const B* const c, u32 count) const + { + for (s32 i=(s32)(used-2); i>=0; --i) + { + u32 j; + for (j=0; j=0; --i) + if (array[i] == c) + return i; + + return -1; + } + + //! finds last occurrence of a character of a list in string + /** \param c: List of strings to find. For example if the method + should find the last occurrence of 'a' or 'b', this parameter should be "ab". + \param count: Amount of characters in the list. Usually, + this should be strlen(c) + \return Returns position where one of the characters has been found, + or -1 if not found. */ + s32 findLastChar(const T* const c, u32 count) const + { + if (!c) + return -1; + + for (s32 i=used-1; i>=0; --i) + for (u32 j=0; j + s32 find(const B* const str) const + { + if (str && *str) + { + u32 len = 0; + + while (str[len]) + ++len; + + if (len > used-1) + return -1; + + for (s32 i=0; i subString(u32 begin, s32 length) const + { + if ((length+begin) > size()) + length = size()-begin; + if (length <= 0) + return string(""); + + string o; + o.reserve(length+1); + + for (s32 i=0; i& operator += (T c) + { + append(c); + return *this; + } + + + string& operator += (const T* const c) + { + append(c); + return *this; + } + + + string& operator += (const string& other) + { + append(other); + return *this; + } + + + string& operator += (const int i) + { + append(string(i)); + return *this; + } + + + string& operator += (const unsigned int i) + { + append(string(i)); + return *this; + } + + + string& operator += (const long i) + { + append(string(i)); + return *this; + } + + + string& operator += (const unsigned long& i) + { + append(string(i)); + return *this; + } + + + string& operator += (const double i) + { + append(string(i)); + return *this; + } + + + string& operator += (const float i) + { + append(string(i)); + return *this; + } + + + //! replaces all characters of a special type with another one + void replace(T toReplace, T replaceWith) + { + for (u32 i=0; i& trim() + { + const c8 whitespace[] = " \t\n\r"; + const u32 whitespacecount = 4; + + // find start and end of real string without whitespace + const s32 begin = findFirstCharNotInList(whitespace, whitespacecount); + if (begin == -1) + return (*this=""); + + const s32 end = findLastCharNotInList(whitespace, whitespacecount); + + return (*this = subString(begin, (end +1) - begin)); + } + + + //! Erases a character from the string. May be slow, because all elements + //! following after the erased element have to be copied. + //! \param index: Index of element to be erased. + void erase(u32 index) + { + _IRR_DEBUG_BREAK_IF(index>=used) // access violation + + for (u32 i=index+1; i=(T)'A' && t<=(T)'Z') + return t + ((T)'a' - (T)'A'); + else + return t; + } +*/ + //! Returns a character converted to lower case + inline T ansi_lower ( u32 x ) const + { + return x >= 'A' && x <= 'Z' ? (T) x + 0x20 : (T) x; + } + + + //! Reallocate the array, make it bigger or smaller + void reallocate(u32 new_size) + { + T* old_array = array; + + array = allocator.allocate(new_size); //new T[new_size]; + allocated = new_size; + + u32 amount = used < new_size ? used : new_size; + for (u32 i=0; i stringc; + +//! Typedef for wide character strings +typedef string stringw; + +} // end namespace core +} // end namespace irr + +#endif + diff --git a/include/NoIrrlicht/irrTypes.h b/include/NoIrrlicht/irrTypes.h new file mode 100644 index 0000000..c611455 --- /dev/null +++ b/include/NoIrrlicht/irrTypes.h @@ -0,0 +1,159 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#ifndef __IRR_TYPES_H_INCLUDED__ +#define __IRR_TYPES_H_INCLUDED__ + + +namespace irr +{ + +//! 8 bit unsigned variable. +/** This is a typedef for unsigned char, it ensures portability of the engine. */ +typedef unsigned char u8; + +//! 8 bit signed variable. +/** This is a typedef for signed char, it ensures portability of the engine. */ +typedef signed char s8; + +//! 8 bit character variable. +/** This is a typedef for char, it ensures portability of the engine. */ +typedef char c8; + + + +//! 16 bit unsigned variable. +/** This is a typedef for unsigned short, it ensures portability of the engine. */ +typedef unsigned short u16; + +//! 16 bit signed variable. +/** This is a typedef for signed short, it ensures portability of the engine. */ +typedef signed short s16; + + + +//! 32 bit unsigned variable. +/** This is a typedef for unsigned int, it ensures portability of the engine. */ +typedef unsigned int u32; + +//! 32 bit signed variable. +/** This is a typedef for signed int, it ensures portability of the engine. */ +typedef signed int s32; + + + +// 64 bit signed variable. +// This is a typedef for __int64, it ensures portability of the engine. +// This type is currently not used by the engine and not supported by compilers +// other than Microsoft Compilers, so it is outcommented. +//typedef __int64 s64; + + + +//! 32 bit floating point variable. +/** This is a typedef for float, it ensures portability of the engine. */ +typedef float f32; + +//! 64 bit floating point variable. +/** This is a typedef for double, it ensures portability of the engine. */ +typedef double f64; + + +} // end namespace irr + + +#include +#ifdef _IRR_WINDOWS_API_ +//! Defines for s{w,n}printf because these methods do not match the ISO C +//! standard on Windows platforms, but it does on all others. +//! These should be int snprintf(char *str, size_t size, const char *format, ...); +//! and int swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...); +#if defined(_MSC_VER) && _MSC_VER > 1310 && !defined (_WIN32_WCE) +#define swprintf swprintf_s +#define snprintf sprintf_s +#else +#define swprintf _snwprintf +#define snprintf _snprintf +#endif + +// define the wchar_t type if not already built in. +#ifdef _MSC_VER +#ifndef _WCHAR_T_DEFINED +//! A 16 bit wide character type. +/** + Defines the wchar_t-type. + In VS6, its not possible to tell + the standard compiler to treat wchar_t as a built-in type, and + sometimes we just don't want to include the huge stdlib.h or wchar.h, + so we'll use this. +*/ +typedef unsigned short wchar_t; +#define _WCHAR_T_DEFINED +#endif // wchar is not defined +#endif // microsoft compiler +#endif // _IRR_WINDOWS_API_ + +//! define a break macro for debugging. +#if defined(_DEBUG) +#if defined(_IRR_WINDOWS_API_) && defined(_MSC_VER) && !defined (_WIN32_WCE) +#define _IRR_DEBUG_BREAK_IF( _CONDITION_ ) if (_CONDITION_) {_asm int 3} +#else +#include "assert.h" +#define _IRR_DEBUG_BREAK_IF( _CONDITION_ ) assert( !(_CONDITION_) ); +#endif +#else +#define _IRR_DEBUG_BREAK_IF( _CONDITION_ ) +#endif + +//! Defines a small statement to work around a microsoft compiler bug. +/** The microsft compiler 7.0 - 7.1 has a bug: +When you call unmanaged code that returns a bool type value of false from managed code, +the return value may appear as true. See +http://support.microsoft.com/default.aspx?kbid=823071 for details. +Compiler version defines: VC6.0 : 1200, VC7.0 : 1300, VC7.1 : 1310, VC8.0 : 1400*/ +#if defined(_IRR_WINDOWS_API_) && defined(_MSC_VER) && (_MSC_VER > 1299) && (_MSC_VER < 1400) +#define _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX __asm mov eax,100 +#else +#define _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX +#endif // _IRR_MANAGED_MARSHALLING_BUGFIX + + +// memory debugging +#if defined(_DEBUG) && defined(IRRLICHT_EXPORTS) && defined(_MSC_VER) && \ + (_MSC_VER > 1299) && !defined(_IRR_DONT_DO_MEMORY_DEBUGGING_HERE) && !defined(_WIN32_WCE) + + #define CRTDBG_MAP_ALLOC + #define _CRTDBG_MAP_ALLOC + #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__) + #include + #include + #define new DEBUG_CLIENTBLOCK +#endif + +// disable truncated debug information warning in visual studio 6 by default +#if defined(_MSC_VER) && (_MSC_VER < 1300 ) +#pragma warning( disable: 4786) +#endif // _MSC + + +//! ignore VC8 warning deprecated +/** The microsoft compiler */ +#if defined(_IRR_WINDOWS_API_) && defined(_MSC_VER) && (_MSC_VER >= 1400) + //#pragma warning( disable: 4996) + //#define _CRT_SECURE_NO_DEPRECATE 1 + //#define _CRT_NONSTDC_NO_DEPRECATE 1 +#endif + + +//! creates four CC codes used in Irrlicht for simple ids +/** some compilers can create those by directly writing the +code like 'code', but some generate warnings so we use this macro here */ +#define MAKE_IRR_ID(c0, c1, c2, c3) \ + ((u32)(u8)(c0) | ((u32)(u8)(c1) << 8) | \ + ((u32)(u8)(c2) << 16) | ((u32)(u8)(c3) << 24 )) + + +#endif // __IRR_TYPES_H_INCLUDED__ + + diff --git a/include/NoIrrlicht/vector3d.h b/include/NoIrrlicht/vector3d.h new file mode 100644 index 0000000..8cc887a --- /dev/null +++ b/include/NoIrrlicht/vector3d.h @@ -0,0 +1,287 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#ifndef __IRR_POINT_3D_H_INCLUDED__ +#define __IRR_POINT_3D_H_INCLUDED__ + +#include "irrMath.h" + +namespace irr +{ +namespace core +{ + + //! 3d vector template class with lots of operators and methods. + template + class vector3d + { + public: + + vector3d() : X(0), Y(0), Z(0) {} + vector3d(T nx, T ny, T nz) : X(nx), Y(ny), Z(nz) {} + vector3d(const vector3d& other) : X(other.X), Y(other.Y), Z(other.Z) {} + + // operators + + vector3d operator-() const { return vector3d(-X, -Y, -Z); } + + vector3d& operator=(const vector3d& other) { X = other.X; Y = other.Y; Z = other.Z; return *this; } + + vector3d operator+(const vector3d& other) const { return vector3d(X + other.X, Y + other.Y, Z + other.Z); } + vector3d& operator+=(const vector3d& other) { X+=other.X; Y+=other.Y; Z+=other.Z; return *this; } + + vector3d operator-(const vector3d& other) const { return vector3d(X - other.X, Y - other.Y, Z - other.Z); } + vector3d& operator-=(const vector3d& other) { X-=other.X; Y-=other.Y; Z-=other.Z; return *this; } + + vector3d operator*(const vector3d& other) const { return vector3d(X * other.X, Y * other.Y, Z * other.Z); } + vector3d& operator*=(const vector3d& other) { X*=other.X; Y*=other.Y; Z*=other.Z; return *this; } + vector3d operator*(const T v) const { return vector3d(X * v, Y * v, Z * v); } + vector3d& operator*=(const T v) { X*=v; Y*=v; Z*=v; return *this; } + + vector3d operator/(const vector3d& other) const { return vector3d(X / other.X, Y / other.Y, Z / other.Z); } + vector3d& operator/=(const vector3d& other) { X/=other.X; Y/=other.Y; Z/=other.Z; return *this; } + vector3d operator/(const T v) const { T i=(T)1.0/v; return vector3d(X * i, Y * i, Z * i); } + vector3d& operator/=(const T v) { T i=(T)1.0/v; X*=i; Y*=i; Z*=i; return *this; } + + bool operator<=(const vector3d&other) const { return X<=other.X && Y<=other.Y && Z<=other.Z;}; + bool operator>=(const vector3d&other) const { return X>=other.X && Y>=other.Y && Z>=other.Z;}; + bool operator<(const vector3d&other) const { return X(const vector3d&other) const { return X>other.X && Y>other.Y && Z>other.Z;}; + + //! use week float compare + //bool operator==(const vector3d& other) const { return other.X==X && other.Y==Y && other.Z==Z; } + //bool operator!=(const vector3d& other) const { return other.X!=X || other.Y!=Y || other.Z!=Z; } + + bool operator==(const vector3d& other) const + { + return this->equals(other); + } + + bool operator!=(const vector3d& other) const + { + return !this->equals(other); + } + + // functions + + //! returns if this vector equals the other one, taking floating point rounding errors into account + bool equals(const vector3d& other, const T tolerance = (T)ROUNDING_ERROR_32 ) const + { + return core::equals(X, other.X, tolerance) && + core::equals(Y, other.Y, tolerance) && + core::equals(Z, other.Z, tolerance); + } + + vector3d& set(const T nx, const T ny, const T nz) {X=nx; Y=ny; Z=nz; return *this;} + vector3d& set(const vector3d& p) {X=p.X; Y=p.Y; Z=p.Z;return *this;} + + //! Returns length of the vector. + T getLength() const { return (T) sqrt((f64)(X*X + Y*Y + Z*Z)); } + + //! Returns squared length of the vector. + /** This is useful because it is much faster than + getLength(). */ + T getLengthSQ() const { return X*X + Y*Y + Z*Z; } + + //! Returns the dot product with another vector. + T dotProduct(const vector3d& other) const + { + return X*other.X + Y*other.Y + Z*other.Z; + } + + //! Returns distance from another point. + /** Here, the vector is interpreted as point in 3 dimensional space. */ + T getDistanceFrom(const vector3d& other) const + { + return vector3d(X - other.X, Y - other.Y, Z - other.Z).getLength(); + } + + //! Returns squared distance from another point. + /** Here, the vector is interpreted as point in 3 dimensional space. */ + T getDistanceFromSQ(const vector3d& other) const + { + return vector3d(X - other.X, Y - other.Y, Z - other.Z).getLengthSQ(); + } + + //! Calculates the cross product with another vector + //! \param p: vector to multiply with. + //! \return Crossproduct of this vector with p. + vector3d crossProduct(const vector3d& p) const + { + return vector3d(Y * p.Z - Z * p.Y, Z * p.X - X * p.Z, X * p.Y - Y * p.X); + } + + //! Returns if this vector interpreted as a point is on a line between two other points. + /** It is assumed that the point is on the line. */ + //! \param begin: Beginning vector to compare between. + //! \param end: Ending vector to compare between. + //! \return True if this vector is between begin and end. False if not. + bool isBetweenPoints(const vector3d& begin, const vector3d& end) const + { + T f = (end - begin).getLengthSQ(); + return getDistanceFromSQ(begin) < f && + getDistanceFromSQ(end) < f; + } + + //! Normalizes the vector. In case of the 0 vector the result + //! is still 0, otherwise the length of the vector will be 1. + //! Todo: 64 Bit template doesnt work.. need specialized template + vector3d& normalize() + { + T l = X*X + Y*Y + Z*Z; + if (l == 0) + return *this; + l = (T) reciprocal_squareroot ( (f32)l ); + X *= l; + Y *= l; + Z *= l; + return *this; + } + + //! Sets the length of the vector to a new value + vector3d& setLength(T newlength) + { + normalize(); + return (*this *= newlength); + } + + //! Inverts the vector. + vector3d& invert() + { + X *= -1.0f; + Y *= -1.0f; + Z *= -1.0f; + return *this; + } + + //! Rotates the vector by a specified number of degrees around the Y + //! axis and the specified center. + //! \param degrees: Number of degrees to rotate around the Y axis. + //! \param center: The center of the rotation. + void rotateXZBy(f64 degrees, const vector3d& center=vector3d()) + { + degrees *= DEGTORAD64; + T cs = (T)cos(degrees); + T sn = (T)sin(degrees); + X -= center.X; + Z -= center.Z; + set(X*cs - Z*sn, Y, X*sn + Z*cs); + X += center.X; + Z += center.Z; + } + + //! Rotates the vector by a specified number of degrees around the Z + //! axis and the specified center. + //! \param degrees: Number of degrees to rotate around the Z axis. + //! \param center: The center of the rotation. + void rotateXYBy(f64 degrees, const vector3d& center=vector3d()) + { + degrees *= DEGTORAD64; + T cs = (T)cos(degrees); + T sn = (T)sin(degrees); + X -= center.X; + Y -= center.Y; + set(X*cs - Y*sn, X*sn + Y*cs, Z); + X += center.X; + Y += center.Y; + } + + //! Rotates the vector by a specified number of degrees around the X + //! axis and the specified center. + //! \param degrees: Number of degrees to rotate around the X axis. + //! \param center: The center of the rotation. + void rotateYZBy(f64 degrees, const vector3d& center=vector3d()) + { + degrees *= DEGTORAD64; + T cs = (T)cos(degrees); + T sn = (T)sin(degrees); + Z -= center.Z; + Y -= center.Y; + set(X, Y*cs - Z*sn, Y*sn + Z*cs); + Z += center.Z; + Y += center.Y; + } + + //! Returns interpolated vector. + /** \param other: other vector to interpolate between + \param d: value between 0.0f and 1.0f. */ + vector3d getInterpolated(const vector3d& other, const T d) const + { + const T inv = (T) 1.0 - d; + return vector3d(other.X*inv + X*d, other.Y*inv + Y*d, other.Z*inv + Z*d); + } + + //! Returns interpolated vector. ( quadratic ) + /** \param v2: second vector to interpolate with + \param v3: third vector to interpolate with + \param d: value between 0.0f and 1.0f. */ + vector3d getInterpolated_quadratic(const vector3d& v2, const vector3d& v3, const T d) const + { + // this*(1-d)*(1-d) + 2 * v2 * (1-d) + v3 * d * d; + const T inv = (T) 1.0 - d; + const T mul0 = inv * inv; + const T mul1 = (T) 2.0 * d * inv; + const T mul2 = d * d; + + return vector3d ( X * mul0 + v2.X * mul1 + v3.X * mul2, + Y * mul0 + v2.Y * mul1 + v3.Y * mul2, + Z * mul0 + v2.Z * mul1 + v3.Z * mul2); + } + + //! Gets the Y and Z rotations of a vector. + /** Thanks to Arras on the Irrlicht forums to add this method. + \return A vector representing the rotation in degrees of + this vector. The Z component of the vector will always be 0. */ + vector3d getHorizontalAngle() const + { + vector3d angle; + + angle.Y = (T)atan2(X, Z); + angle.Y *= (f32)RADTODEG64; + + if (angle.Y < 0.0f) angle.Y += 360.0f; + if (angle.Y >= 360.0f) angle.Y -= 360.0f; + + const f32 z1 = sqrtf(X*X + Z*Z); + + angle.X = (T)atan2f(z1, (f32)Y); + angle.X *= RADTODEG; + angle.X -= 90.0f; + + if (angle.X < 0.0f) angle.X += 360.0f; + if (angle.X >= 360.0f) angle.X -= 360.0f; + + return angle; + } + + //! Fills an array of 4 values with the vector data (usually floats). + /** Useful for setting in shader constants for example. The fourth value + will always be 0. */ + void getAs4Values(T* array) const + { + array[0] = X; + array[1] = Y; + array[2] = Z; + array[3] = 0; + } + + // member variables + + T X, Y, Z; + }; + + + //! Typedef for a f32 3d vector. + typedef vector3d vector3df; + //! Typedef for an integer 3d vector. + typedef vector3d vector3di; + + template + vector3d operator*(const S scalar, const vector3d& vector) { return vector*scalar; } + +} // end namespace core +} // end namespace irr + +#endif + diff --git a/include/SPacket.h b/include/SPacket.h new file mode 100644 index 0000000..6d9d1e9 --- /dev/null +++ b/include/SPacket.h @@ -0,0 +1,166 @@ +#ifndef NET_PACKET_H +#define NET_PACKET_H + +#ifdef COMPILE_WITH_IRRLICHT +#include +#endif + +#ifndef IRRLICHT_SDK_VERSION +#include "NoIrrlicht/NoIrrlicht.h" +#endif + +#ifndef s64 +typedef signed long long s64; +#endif + +#ifndef u64 +typedef signed long long u64; +#endif + +#include + +namespace irr +{ +namespace net +{ + +/// An SOutPacket class, used for sending packets. +class SOutPacket +{ + public: + SOutPacket(); + SOutPacket(const c8* buff,const u32 buff_size); + + /// Adds data to the packet. + SOutPacket& operator << (const c8 data); + /// Adds data to the packet. + SOutPacket& operator << (const u16 data); + /// Adds data to the packet. + SOutPacket& operator << (const u32 data); + /// Adds data to the packet. + SOutPacket& operator << (const u8 data); + /// Adds data to the packet. + SOutPacket& operator << (const s16 data); + /// Adds data to the packet. + SOutPacket& operator << (const s32 data); + /// Adds data to the packet. + SOutPacket& operator << (const f32 data); + /// Adds data to the packet. + SOutPacket& operator << (const f64 data); + /// Adds data to the packet. + SOutPacket& operator << (const core::vector3df& data); + /// Adds data to the packet. + SOutPacket& operator << (const c8* string); + /// Adds data to the packet. + SOutPacket& operator << (const core::stringc& string); + /// Adds data to the packet. + SOutPacket& operator << (const std::string& string); + /// Adds data to the packet. + SOutPacket& operator << (const core::stringw& string); + + /// Appends another SOutPacket to the packet. + SOutPacket& operator << (const SOutPacket& other); + + /// Clears the data in the packet. (Resets the write position) + void clearData(); + + /// Gets the data in the packet. + c8* getData(); + + /// Gets the data in the packet. + const c8* getConstData(); + + /// Returns the size in bytes of the packet. + u32 getSize(); + + /// Compresses the packet using zlib compression. + void compressPacket(); + + /// Decompresses the packet using zlib decompression. + void deCompressPacket(); + + /// Encrypts a packet using AES encryption. + void encryptPacket(const c8 key[16]); + + /// Decrypts a packet using AES decryption. + void decryptPacket(const c8 key[16]); + private: + void enlargeBuffer(const u32 size); + core::array buff; +}; + +/// An SInPacket class, used for handling recieved packets. +class SInPacket +{ + public: + SInPacket(const c8* buff, const u32 size); + + void setNewData(const c8* buffer, const u32 size); + + /// Gets the next item in the packet based on the size of the variable. + void operator >> (c8& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (u16& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (u32& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (u8& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (s16& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (s32& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (f32& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (f64& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (core::vector3df& data); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (char* string); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (core::stringc& string); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (std::string& string); + /// Gets the next item in the packet based on the size of the variable. + void operator >> (core::stringw& string); + + /// Gets the data in the packet. + c8* getData(); + + /// Gets the data in the packet. + const c8* getConstData(); + + /// Resets the read position. + void resetPos(); + + /// Returns the player ID of the player that sent this packet. (Only for servers) + u16 getPlayerId() const; + + // Used internally by irrNetLite to set the player ID. + void setPlayerId(u16 playernumber); + + /// Compresses the packet using zlib compression. + void compressPacket(); + + /// Decompresses the packet using zlib decompression. + void deCompressPacket(); + + /// Encrypts a packet using AES encryption. + void encryptPacket(const c8 key[16]); + + /// Decrypts a packet using AES decryption. + void decryptPacket(const c8 key[16]); + + /// Returns the size in bytes of the packet. + u32 getSize(); + + private: + u32 pos; + core::array buff; + u16 playerid; +}; + +} // Close Net Namespace +} // Close Irr namespace + +#endif diff --git a/include/irrNet.h b/include/irrNet.h new file mode 100644 index 0000000..a0b63e6 --- /dev/null +++ b/include/irrNet.h @@ -0,0 +1,28 @@ +#ifndef IRRNET_H +#define IRRNET_H +#include "SPacket.h" +#include "INetManager.h" +#endif + +// Copyright(C) Ahmed Hilali 2007 + +/* License: + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be clearly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + */ + diff --git a/lib/libirrnet.a b/lib/libirrnet.a new file mode 100644 index 0000000000000000000000000000000000000000..20fe24fbe520371fc3dc95610e00e5286857c7a8 GIT binary patch literal 263420 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

cj!eSXR-(# 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 + +namespace irr +{ + namespace net + { + CNetManager::CNetManager(INetCallback* handler, u32 port, const SNetParams& params) : + pHandler(handler), netIterations(10000), netParams(params), verbose(0), + globPacketRelay(false), connectionStatus(EICS_PENDING) + { + if (enet_initialize() != 0) + std::cout << "irrNetLite: An error occurred while initializing ENet.\n"; + + connectionStatus = setUpServer(port) ? EICS_ESTABLISHED : EICS_FAILED; + } + + CNetManager::CNetManager(INetCallback* handler, const c8* addressc, + const u32 port, const SNetParams& params) : + pHandler(handler), netIterations(10000), netParams(params), verbose(0), + globPacketRelay(false), connectionStatus(EICS_PENDING) + { + if (enet_initialize() != 0) + std::cout << "irrNetLite: An error occurred while initializing ENet.\n"; + + if(!setUpClient(addressc, port)) + connectionStatus = EICS_FAILED; + } + + CNetManager::~CNetManager(void) + { + if(host) + enet_host_destroy(host); + + enet_deinitialize(); + } + + bool CNetManager::setUpClient(const c8* addressc, const u32 port) + { + mode = ENM_CLIENT; + + if(verbose) + std::cout << "irrNetLite: Creating client!" << std::endl; + + host = enet_host_create(NULL, 1,2, netParams.downBandwidth / 8, netParams.upBandwidth / 8); + + ENetEvent event; + + enet_address_set_host(&address, addressc); + address.port = port; + + if(verbose) + std::cout << "irrNetLite: Connecting to " + << addressc << ":" << port << std::endl; + + // Sets up two channels. + peer = enet_host_connect(host, &address, 2, 0); + + if(peer == NULL) + { + std::cout << "irrNetLite: Error: Could not resolve server address. Connection failed.\n"; + return false; + } + + if(!( enet_host_service(host, &event, netParams.connectionTimeout) > 0 && + event.type == ENET_EVENT_TYPE_CONNECT)) + { + enet_peer_reset(peer); + + std::cout << "irrNetLite: Error: Connection timed out. Connection failed.\n"; + return false; + } + + while(enet_host_service(host, &event, netParams.connectionTimeout) > 0) + { + if(event.channelID == 1 && event.type == ENET_EVENT_TYPE_RECEIVE) + { + enet_uint8* buff = event.packet->data; + + u8 packiden = 0; + memcpy((char*)&packiden, buff, 1); + + if(packiden == 4) + { + memcpy((char*)&playerID, buff+1, 2); + + if(playerID == 0) + { + std::cout << "irrNetLite: Error: Null player ID recieved. Server likely full."; + enet_peer_reset(event.peer); + return false; + } + + if(verbose) + std::cout << "irrNetLite: Player ID is " << playerID << ".\n"; + + u8 packid = 3; + ENetPacket* packet = enet_packet_create(&packid, 1, ENET_PACKET_FLAG_RELIABLE); + enet_host_broadcast(host, 1, packet); + + return true; + } + } + } + + std::cout << "irrNetLite: Error: Failed to recieve Player ID. Connection failed.\n"; + return false; + } + + bool CNetManager::setUpServer(const u32 port) + { + mode = ENM_SERVER; + netParams.maxClients++; + + address.host = ENET_HOST_ANY; + address.port = port; + + if(verbose) + std::cout << "irrNetLite: Creating server!\n"; + + host = enet_host_create(&address, netParams.maxClients,2, 0,0); + + if(host == NULL) + { + std::cout << "irrNetLite: Error: An error occurred while trying to create an ENet server host.\n"; + return false; + } + + players.resize(netParams.maxClients, 0); + + + + return true; + } + + void CNetManager::setGlobalPacketRelay(bool relay) + { + globPacketRelay = relay; + } + + void CNetManager::update(const u32 timeOut) + { + if(connectionStatus == EICS_FAILED) + return; + + + if(mode == ENM_CLIENT) + { + ENetEvent event; + + for(u32 i = 0; i < netIterations;i++) + { + if(!(enet_host_service(host, &event, i ? 1 : timeOut) > 0)) + break; + + switch (event.type) + { + case ENET_EVENT_TYPE_RECEIVE: + { + enet_uint8* buff = event.packet->data; + + if(event.channelID == 1) + { + u8 packiden = 0; + memcpy((char*)&packiden,buff,1); + + if(packiden == 3) + { + connectionStatus = EICS_ESTABLISHED; + if(pHandler) pHandler->onConnect(0); + } + } + else + { + if(verbose) + std::cout << "irrNetLite: A packet of length " + << event.packet->dataLength + << " was received.\n"; + + SInPacket inpacket((c8*)buff, (u32)event.packet->dataLength); + + if(pHandler) + pHandler->handlePacket(inpacket); + } + + buff = 0; + enet_packet_destroy(event.packet); + break; + } + case ENET_EVENT_TYPE_DISCONNECT: + std::cout << "irrNetLite: Connection to server lost.\n"; + + event.peer->data = 0; + connectionStatus = EICS_FAILED; + + if(pHandler) + pHandler->onDisconnect(0); + default: + break; + } + } + + } + else // (mode == ENM_SERVER) + { + ENetEvent event; + + for(u32 i = 0;i < netIterations;i++) + { + if(!(enet_host_service (host, &event, i ? 1 : timeOut) > 0)) + break; + + switch (event.type) + { + case ENET_EVENT_TYPE_CONNECT: + { + if(verbose) + std::cout << "irrNetLite: A new client connected from " + << event.peer->address.host << ":" + << event.peer->address.port << std::endl; + + u16 pID = 1; + + while(pID < netParams.maxClients && players[pID] != 0) + pID++; + + if(pID >= netParams.maxClients) + { + if(verbose) + std::cout << "irrNetLite: Warning: Client rejected. Too many clients." + << std::endl; + + pID = 0; + } + else + { + event.peer->data = players[pID] = new SPeerData(pID, event.peer); + } + + c8 buffer[3]; + u8 packid = 4; + memcpy(buffer, (char*)&packid, 1); + memcpy(buffer+1, (char*)&pID, 2); + ENetPacket* packet; + packet = enet_packet_create(buffer, 3, ENET_PACKET_FLAG_RELIABLE); + enet_peer_send(event.peer, 1, packet); + enet_host_flush(host); + + if(pID == 0) enet_peer_reset(event.peer); + + break; + } + case ENET_EVENT_TYPE_RECEIVE: + { + enet_uint8* buff = event.packet->data; + + if(event.channelID == 1) + { + u8 packiden = 0; + memcpy((char*)&packiden, buff, 1); + + if(packiden == 3) + { + ENetPacket* packet = enet_packet_create(&packiden, 1, ENET_PACKET_FLAG_RELIABLE); + enet_peer_send(event.peer, 1, packet); + SPeerData* currentPeer = reinterpret_cast(event.peer->data); + if(currentPeer && pHandler) pHandler->onConnect(currentPeer->playerID); + } + } + else + { + SPeerData* currentPeer = reinterpret_cast(event.peer->data); + + if(currentPeer) + { + SInPacket inPacket((c8*)buff, (u32)event.packet->dataLength); + inPacket.setPlayerId(currentPeer->playerID); + + if(verbose) + std::cout << "irrNetLite: A packet of length " + << event.packet->dataLength + << " from player number " + << currentPeer->playerID + << " was received.\n"; + + if(pHandler) + pHandler->handlePacket(inPacket); + + if(globPacketRelay) + { + SOutPacket relayPacket((c8*)buff, (u32)event.packet->dataLength); + + const u32 playersSize = (u32)players.size(); + for(u32 i = 0;i < playersSize;++i) + if(players[i] && players[i] != currentPeer) + sendOutPacket(relayPacket, i); + } + } + } + + buff = 0; + enet_packet_destroy(event.packet); + break; + } + case ENET_EVENT_TYPE_DISCONNECT: + { + SPeerData* pData = reinterpret_cast(event.peer->data); + + if(pData) + { + if(verbose) + std::cout << "irrNetLite: Player number " + << pData->playerID + << " disconnected.\n"; + + if(pHandler) pHandler->onDisconnect(pData->playerID); + + players[pData->playerID] = 0; + delete pData; + event.peer->data = 0; + } + } + default: + break; + } + } + } + } + + void CNetManager::setVerbose(bool isverbose) + { + verbose = isverbose; + } + + ENetPeer* CNetManager::getPlayerById(u16 id) + { + if(id < players.size() && players[id] && players[id]->playerID == id) + return players[id]->enetPeer; + + return 0; + } + + ENetPeer* CNetManager::getPeer() + { + if(connectionStatus == EICS_ESTABLISHED) + return &host->peers[0]; + else + return 0; + } + + const u32 CNetManager::getPing() + { + if(getPeer()) + return getPeer()->roundTripTime; + else + return 0; + } + + const u32 CNetManager::getPeerCount() + { + return (u32)host->peerCount; + } + + const u16 CNetManager::getPlayerNumber() + { + return playerID; + } + + ENetHost* CNetManager::getHost() + { + return host; + } + + E_IRRNET_CONNECTION_STATUS CNetManager::getConnectionStatus() + { + return connectionStatus; + } + + void CNetManager::kickClient(const u16 playerId, bool hardKick = false) + { + ENetPeer* currentPeer = getPlayerById(playerId); + + if(currentPeer) + hardKick ? enet_peer_disconnect_now(currentPeer,0) : + enet_peer_disconnect(currentPeer,0); + } + + const u32 CNetManager::getClientAddress(const u16 playerId) + { + ENetPeer* currentPeer = getPlayerById(playerId); + + if(currentPeer) + return currentPeer->address.host; + + return 0; + } + + void CNetManager::sendOutPacket(SOutPacket& outpacket) + { + ENetPacket* packet = enet_packet_create((char*)outpacket.getData(), outpacket.getSize(), + ENET_PACKET_FLAG_RELIABLE); + + enet_host_broadcast(host, 0, packet); + } + + void CNetManager::sendOutPacket(SOutPacket& outpacket, const u16 playerId) + { + ENetPacket* packet = enet_packet_create ((char*)outpacket.getData(), outpacket.getSize(), + ENET_PACKET_FLAG_RELIABLE); + ENetPeer* currentPeer = getPlayerById(playerId); + + if(currentPeer && currentPeer->state == ENET_PEER_STATE_CONNECTED) + enet_peer_send(currentPeer, 0, packet); + } + + void CNetManager::sendOutPacketUnreliable(SOutPacket& outpacket) + { + ENetPacket* packet = enet_packet_create((char*)outpacket.getData(), outpacket.getSize(), 0); + enet_host_broadcast(host, 0, packet); + } + + void CNetManager::sendOutPacketUnreliable(SOutPacket& outpacket, const u16 playerId) + { + ENetPacket* packet = enet_packet_create((char*)outpacket.getData(), outpacket.getSize(), 0); + ENetPeer* currentPeer = getPlayerById(playerId); + + if(currentPeer && currentPeer->state == ENET_PEER_STATE_CONNECTED) + enet_peer_send(currentPeer, 0, packet); + } + + extern INetManager* createIrrNetClient(INetCallback* callback, const c8* addressc, const u32 port, const SNetParams& params) + { + return new irr::net::CNetManager(callback, addressc, port, params); + } + extern INetManager* createIrrNetServer(INetCallback* callback, const u32 port, const SNetParams& params) + { + return new irr::net::CNetManager(callback, port, params); + } + + } // Close Net Namespace +} // Close Irr namespace + +// Copyright(C) Ahmed Hilali 2007 + +/* License: + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgement in the product documentation would be +appreciated but is not required. +2. Altered source versions must be clearly marked as such, and must not be +misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ diff --git a/source/CNetManager.d b/source/CNetManager.d new file mode 100644 index 0000000..84dd56d --- /dev/null +++ b/source/CNetManager.d @@ -0,0 +1,10 @@ +CNetManager.o: CNetManager.cpp ../include/CNetManager.h \ + ../include/INetManager.h ../include/SPacket.h \ + ../include/NoIrrlicht/NoIrrlicht.h ../include/NoIrrlicht/irrTypes.h \ + ../include/NoIrrlicht/irrArray.h ../include/NoIrrlicht/heapsort.h \ + ../include/NoIrrlicht/irrAllocator.h ../include/NoIrrlicht/irrString.h \ + ../include/NoIrrlicht/irrMath.h ../include/NoIrrlicht/IrrCompileConfig.h \ + ../include/NoIrrlicht/vector3d.h ../enet/include/enet/enet.h \ + ../enet/include/enet/unix.h ../enet/include/enet/types.h \ + ../enet/include/enet/protocol.h ../enet/include/enet/list.h \ + ../enet/include/enet/callbacks.h diff --git a/source/CNetManager.o b/source/CNetManager.o new file mode 100644 index 0000000000000000000000000000000000000000..b9ede934955644fc88ee9a5596e6aa5a347bdde9 GIT binary patch literal 33232 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 TPXU&z{+=$o-rJ5sXZ?Q%4!13^ literal 0 HcmV?d00001 diff --git a/source/Makefile b/source/Makefile new file mode 100644 index 0000000..0b96ac5 --- /dev/null +++ b/source/Makefile @@ -0,0 +1,56 @@ +VERSION = 2.0 + +ZLIBDIR=../zlib +ENETDIR=../enet +IRRNETDIR=1 + +ZLIBOBJ = $(ZLIBDIR)/adler32.o $(ZLIBDIR)/compress.o $(ZLIBDIR)/crc32.o $(ZLIBDIR)/deflate.o $(ZLIBDIR)/infback.o $(ZLIBDIR)/inffast.o $(ZLIBDIR)/inflate.o $(ZLIBDIR)/inftrees.o $(ZLIBDIR)/trees.o $(ZLIBDIR)/uncompr.o $(ZLIBDIR)/zutil.o +#ENETOBJ = $(ENETDIR)/host.o $(ENETDIR)/list.o $(ENETDIR)/memory.o $(ENETDIR)/packet.o $(ENETDIR)/peer.o $(ENETDIR)/protocol.o $(ENETDIR)/unix.o $(ENETDIR)/win32.o +ENETOBJ = $(ENETDIR)/host.o $(ENETDIR)/list.o $(ENETDIR)/callbacks.o $(ENETDIR)/packet.o $(ENETDIR)/peer.o $(ENETDIR)/protocol.o $(ENETDIR)/unix.o $(ENETDIR)/win32.o +IRRNETOBJ = CNetManager.o SPacket.o +LINKOBJ := $(IRRNETOBJ) $(ENETOBJ) $(ZLIBOBJ) + +############### +#Compiler flags +#CXXINCS = -I../../include -I../$(ENETDIR)/include/ -Izlib +CXXINCS = -I../include -I./$(ENETDIR)/include/ -I./NoIrrlicht/ -Izlib +CPPFLAGS = $(CXXINCS) +CXXFLAGS = -Wall -fexpensive-optimizations -O3 + +ifdef PROFILE +CXXFLAGS += -pg +endif +CFLAGS := -fexpensive-optimizations -O3 + +#Linux specific options +STATIC_LIB = libirrnet.a +LIB_PATH = ../lib/$(STATIC_LIB) +INSTALL_DIR = /usr/local/lib +staticlib install: SYSTEM = Linux +staticlib: LDFLAGS = --no-export-all-symbols --add-stdcall-alias +#################### +all linux: staticlib + +$(STATIC_LIB): $(LINKOBJ) + $(AR) rs $@ $^ + +# Copies static lib into /lib/Linux +staticlib: $(STATIC_LIB) + mv $^ $(LIB_PATH) + +# Create dependency files for automatic recompilation +%.d:%.cpp + $(CXX) $(CPPFLAGS) -MM -MF $@ $< + +-include $(LINKOBJ:.o=.d) + +clean: + $(RM) $(LINKOBJ) $(SHARED_LIB).$(VERSION) $(STATIC_LIB) $(LINKOBJ:.o=.d) + +#withirrlicht: +#CXXINCS += -Iirrlicht/include -DCOMPILE_WITH_IRRLICHT + +#all staticlib clean +# +#.PHONY: all staticlib clean +# diff --git a/source/ReadMe.txt b/source/ReadMe.txt new file mode 100644 index 0000000..252a38d --- /dev/null +++ b/source/ReadMe.txt @@ -0,0 +1,51 @@ +IrrNetLite V2.0 - Lite Enet Framework +------------------------------------- + +irrNetLite is an lite enet wrapper with a clean C++ interface. +Please look at Tutorial.cpp for a quick introduction to coding with irrNetLite. + +switch(YourQuestions) +{ +Why irrNetLite?: + Enet is a portable, robust and reliable UDP implementation, but unfortunately + it comes with an ugly C-style interface that can be rather difficult to integrate + with a large scale application (Or to look at in general.). irrNetLite makes the + experience a whole lot better by imploying OO-style interfaces for packet handling + and connection callbacks and a sprinkle here and there of synctatic sugar (Operator + overloading, etc). irrNetLite also implements some useful features not present in + vanilla Enet (Namely compression and encryption), in the same easy to use manner. + +Is there a connection to Irrlicht?: +What are all these header files?: +Do you have something against the std lib?: irrNetLite V1.0 was originally based off irrNet. irrNet was a network library + for integration of Enet and Irrlicht to create a persistant multi-user + enviroment. irrNet was dependant on Irrlicht. irrNetLite however, has + no dependancy whatsoever on Irrlicht being included or linked in. I do however + like some of the Irrlicht typedefs and helper structures, so those are included + amongst the header files, but by no means do you have to use them in your + application. I do recommend using the typedefs, as it is important to maintain + more precise typing (unsigned/signed) when sending data over a network due + to deferring architecture defaults. +} + +LICENSE +----------- + + Copyright (C) 2008 Ahmed Hilali + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgement in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be clearly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + diff --git a/source/SPacket.cpp b/source/SPacket.cpp new file mode 100644 index 0000000..55bd1c0 --- /dev/null +++ b/source/SPacket.cpp @@ -0,0 +1,477 @@ +#include "SPacket.h" +#include "zlib.h" +#include "CEncryption.h" + +uchar CEncryption::expKey[4 * Nb * (Nr + 1)] = {}; + +namespace irr +{ +namespace net +{ + +SOutPacket::SOutPacket() {} + +SOutPacket::SOutPacket(const c8* buff,const u32 buff_size) +{ + this->buff.set_used(buff_size); + memcpy(this->buff.pointer(),buff,buff_size); +} + +void SOutPacket::clearData() +{ + buff.clear(); +} + +c8* SOutPacket::getData() +{ + return (c8*)buff.pointer(); +} + +const c8* SOutPacket::getConstData() +{ + return (const c8*)buff.const_pointer(); +} + +u32 SOutPacket::getSize() +{ + return buff.size(); +} + +void SOutPacket::enlargeBuffer(const u32 size) +{ + const u32 newSize = buff.size() + size; + if(buff.allocated_size() < newSize) + buff.reallocate(newSize * 2); + + buff.set_used(newSize); +} + +SOutPacket& SOutPacket::operator << (const c8 data) +{ + buff.push_back(data); + return *this; +} + +SOutPacket& SOutPacket::operator << (const u16 data) +{ + enlargeBuffer(2); + memcpy(buff.pointer() + buff.size() - 2, &data, 2); + return *this; +} + +SOutPacket& SOutPacket::operator << (const u32 data) +{ + enlargeBuffer(4); + memcpy(buff.pointer() + buff.size() - 4, &data, 4); + return *this; +} + +SOutPacket& SOutPacket::operator << (const u8 data) +{ + buff.push_back(data); + return *this; +} + +SOutPacket& SOutPacket::operator << (const s16 data) +{ + enlargeBuffer(2); + memcpy(buff.pointer() + buff.size() - 2, &data, 2); + return *this; +} + +SOutPacket& SOutPacket::operator << (const s32 data) +{ + enlargeBuffer(4); + memcpy(buff.pointer() + buff.size() - 4, &data, 4); + return *this; +} + +SOutPacket& SOutPacket::operator << (const f32 data) +{ + enlargeBuffer(4); + memcpy(buff.pointer() + buff.size() - 4, &data, 4); + return *this; +} + +SOutPacket& SOutPacket::operator << (const f64 data) +{ + enlargeBuffer(8); + memcpy(buff.pointer() + buff.size() - 8, &data, 8); + return *this; +} + +SOutPacket& SOutPacket::operator << (const core::vector3df& data) +{ + enlargeBuffer(12); + memcpy(buff.pointer() + buff.size() - 12, &data.X, 12); + return *this; +} + +SOutPacket& SOutPacket::operator << (const c8* string) +{ + u16 tmp = (u16)strlen(string); + + enlargeBuffer(2); + memcpy(buff.pointer() + buff.size() - 2, &tmp, 2); + + enlargeBuffer(tmp); + memcpy(buff.pointer() + buff.size() - tmp, string, tmp); + return *this; +} + +SOutPacket& SOutPacket::operator << (const core::stringc& string) +{ + u16 tmp = string.size(); + + enlargeBuffer(2); + memcpy(buff.pointer() + buff.size() - 2, &tmp, 2); + + enlargeBuffer(tmp); + memcpy(buff.pointer() + buff.size() - tmp, &string[0], tmp); + return *this; +} + +SOutPacket& SOutPacket::operator << (const std::string& string) +{ + u16 tmp = (u16)string.size(); + + enlargeBuffer(2); + memcpy(buff.pointer() + buff.size() - 2, &tmp, 2); + + enlargeBuffer(tmp); + memcpy(buff.pointer() + buff.size() - tmp, &string[0], tmp); + return *this; +} + +SOutPacket& SOutPacket::operator << (const core::stringw& string) +{ + const u16 tmp = string.size(); + + enlargeBuffer(2); + memcpy(buff.pointer() + buff.size() - 2, &tmp, 2); + + enlargeBuffer(1); + const u8 wCharSize = sizeof(wchar_t); + memcpy(buff.pointer() + buff.size() - 1, &wCharSize, 1); + + const u32 wcharByteSize = (tmp * sizeof(wchar_t)); + enlargeBuffer(wcharByteSize); + memcpy(buff.pointer() + buff.size() - wcharByteSize, &string[0], wcharByteSize); + return *this; +} + +SOutPacket& SOutPacket::operator << (const SOutPacket& other) +{ + enlargeBuffer(other.buff.size()); + memcpy(buff.pointer() + buff.size() - other.buff.size(), other.buff.const_pointer(), other.buff.size()); + + return *this; +} + +void SOutPacket::compressPacket() +{ + const u32 compBound = compressBound(buff.size()) + 4; + core::array newBuff(compBound); + + const u32 currSize = buff.size(); + memcpy(newBuff.pointer(), &currSize, 4); + + uLongf destLen = compBound; + compress((Bytef*)newBuff.pointer() + 4, &destLen, (Bytef*)buff.pointer(), buff.size()); + newBuff.set_used(destLen + 4); + + buff = newBuff; +} + +void SOutPacket::deCompressPacket() +{ + u32 newSize = 0; + memcpy((void*)&newSize, buff.pointer(), 4); + + core::array newBuff; + newBuff.set_used(newSize); + + uLongf destLen = newSize; + uncompress((Bytef*)newBuff.pointer(), &destLen, (Bytef*)buff.pointer() + 4, buff.size() - 4); + newBuff.set_used(destLen); + + buff = newBuff; +} + +void SOutPacket::encryptPacket(const c8 key[16]) +{ + CEncryption::SetEncryptionKey((u8*)&key[0]); + core::array tmpbuff; + const u32 newSize = buff.size() + (16 - (buff.size() % 16)); + tmpbuff.set_used(newSize); + buff.set_used(newSize); + + for(u32 i = 0;i < newSize;i+=16) + CEncryption::Encrypt((u8*)buff.pointer() + i, (u8*)tmpbuff.pointer() + i); + + buff = tmpbuff; +} + +void SOutPacket::decryptPacket(const c8 key[16]) +{ + CEncryption::SetEncryptionKey((u8*)&key[0]); + const u32 newSize = buff.size(); + core::array tmpbuff; + tmpbuff.set_used(newSize); + + for(u32 i = 0;i < newSize;i+=16) + CEncryption::Decrypt((u8*)buff.pointer() + i, (u8*)tmpbuff.pointer() + i); + + buff = tmpbuff; +} + +SInPacket::SInPacket(const c8* buff, const u32 size) : pos(0), playerid(0) +{ + SInPacket::buff.set_used(size); + memcpy(SInPacket::buff.pointer(), buff, size); +} + + +void SInPacket::setNewData(const c8* buffer, const u32 size) +{ + buff.set_used(size); + memcpy(buff.pointer(), buffer, size); + pos = 0; +} + +void SInPacket::setPlayerId(u16 playernumber) +{ + playerid = playernumber; +} + +void SInPacket::operator >> (c8 &data) +{ + memcpy(&data,getData()+pos,1); + pos++; +} + +void SInPacket::operator >> (f32 &data) +{ + memcpy(&data,getData()+pos,4); + pos+=4; +} + +void SInPacket::operator >> (f64 &data) +{ + memcpy(&data,getData()+pos,8); + pos+=8; +} + +void SInPacket::operator >> (u16 &data) +{ + memcpy(&data,getData()+pos,2); + pos+=2; +} + +void SInPacket::operator >> (u32 &data) +{ + memcpy(&data,getData()+pos,4); + pos+=4; +} + +void SInPacket::operator >> (u8 &data) +{ + memcpy(&data,getData()+pos,1); + pos++; +} + +void SInPacket::operator >> (s16 &data) +{ + memcpy(&data,getData()+pos,2); + pos+=2; +} + +void SInPacket::operator >> (s32 &data) +{ + memcpy(&data,getData()+pos,4); + pos+=4; +} + +void SInPacket::operator >> (core::vector3df &data) +{ + memcpy(&data.X,getData()+pos,12); + pos+=12; +} + +void SInPacket::operator >> (char *string) +{ + u16 sz; + memcpy(&sz,getData()+pos,2); + pos+=2; + + memcpy(string,getData()+pos,sz); + pos += sz; + + string[sz] = '\0'; +} + +void SInPacket::operator >> (core::stringc& string) +{ + u16 sz; + memcpy(&sz, getData() + pos, 2); + pos+=2; + + char* tempBuff = new char[sz + 1]; + memcpy(tempBuff, getData() + pos, sz); + tempBuff[sz] = '\0'; + string = tempBuff; + + delete [] tempBuff; + + pos += sz; +} + +void SInPacket::operator >> (std::string& string) +{ + u16 sz; + memcpy(&sz, getData() + pos, 2); + pos+=2; + + char* tempBuff = new char[sz + 1]; + memcpy(tempBuff, getData() + pos, sz); + tempBuff[sz] = '\0'; + string = tempBuff; + + delete [] tempBuff; + + pos += sz; +} + +void SInPacket::operator >> (core::stringw& string) +{ + u16 sz; + memcpy(&sz,getData()+pos,2); + pos+=2; + + u8 wCharSize; + memcpy(&wCharSize,getData()+pos,1); + pos+=1; + + wchar_t* tempBuff = new wchar_t[sz + 1]; + const u32 wcharByteSize = (sz * sizeof(wchar_t)); + + if(wCharSize != sizeof(wchar_t)) + { + if(wCharSize > sizeof(wchar_t)) + { + for(u32 i = 0;i < sz;i++) + { + tempBuff[i] = 0; + memcpy(&tempBuff[i],getData()+pos,sizeof(wchar_t)); + + pos += wCharSize; + } + } + else + { + for(u32 i = 0;i < sz;i++) + { + tempBuff[i] = 0; + memcpy(&tempBuff[i],getData()+pos,wCharSize); + + pos += wCharSize; + } + } + } + else + { + memcpy(tempBuff, getData() + pos, wcharByteSize); + } + + tempBuff[sz] = '\0'; + string = tempBuff; + + delete [] tempBuff; + + pos += wcharByteSize; +} + +u16 SInPacket::getPlayerId() const +{ + return playerid; +} + +void SInPacket::resetPos() +{ + pos = 0; +} + +c8* SInPacket::getData() +{ + return (c8*)buff.pointer(); +} + +const c8* SInPacket::getConstData() +{ + return (const c8*)buff.const_pointer(); +} + +void SInPacket::compressPacket() +{ + const u32 compBound = compressBound(buff.size()) + 4; + core::array newBuff(compBound); + + const u32 currSize = buff.size(); + memcpy(newBuff.pointer(), &currSize, 4); + + uLongf destLen = compBound; + compress((Bytef*)newBuff.pointer() + 4, &destLen, (Bytef*)buff.pointer(), buff.size()); + newBuff.set_used(destLen + 4); + + buff = newBuff; +} + +void SInPacket::deCompressPacket() +{ + u32 newSize = 0; + memcpy((void*)&newSize, buff.pointer(), 4); + + core::array newBuff; + newBuff.set_used(newSize); + + uLongf destLen = newSize; + uncompress((Bytef*)newBuff.pointer(), &destLen, (Bytef*)buff.pointer() + 4, buff.size() - 4); + newBuff.set_used(destLen); + + buff = newBuff; +} + +void SInPacket::encryptPacket(const c8 key[16]) +{ + CEncryption::SetEncryptionKey((u8*)&key[0]); + core::array tmpbuff; + const u32 newSize = buff.size() + (16 - (buff.size() % 16)); + tmpbuff.set_used(newSize); + buff.set_used(newSize); + + for(u32 i = 0;i < newSize;i+=16) + CEncryption::Encrypt((u8*)buff.pointer() + i, (u8*)tmpbuff.pointer() + i); + + buff = tmpbuff; +} + +void SInPacket::decryptPacket(const c8 key[16]) +{ + CEncryption::SetEncryptionKey((u8*)&key[0]); + const u32 newSize = buff.size(); + core::array tmpbuff; + tmpbuff.set_used(newSize); + + for(u32 i = 0;i < newSize;i+=16) + CEncryption::Decrypt((u8*)buff.pointer() + i, (u8*)tmpbuff.pointer() + i); + + buff = tmpbuff; +} + +u32 SInPacket::getSize() +{ + return buff.size(); +} + +} // Close Net Namespace +} // Close Irr namespace diff --git a/source/SPacket.d b/source/SPacket.d new file mode 100644 index 0000000..42c4c95 --- /dev/null +++ b/source/SPacket.d @@ -0,0 +1,6 @@ +SPacket.o: SPacket.cpp ../include/SPacket.h \ + ../include/NoIrrlicht/NoIrrlicht.h ../include/NoIrrlicht/irrTypes.h \ + ../include/NoIrrlicht/irrArray.h ../include/NoIrrlicht/heapsort.h \ + ../include/NoIrrlicht/irrAllocator.h ../include/NoIrrlicht/irrString.h \ + ../include/NoIrrlicht/irrMath.h ../include/NoIrrlicht/IrrCompileConfig.h \ + ../include/NoIrrlicht/vector3d.h ../include/CEncryption.h diff --git a/source/SPacket.o b/source/SPacket.o new file mode 100644 index 0000000000000000000000000000000000000000..794917f0771299baff82d9e25cd06550c747cddd GIT binary patch literal 41304 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 Gw*Nm1Lbxyh literal 0 HcmV?d00001 diff --git a/zlib b/zlib new file mode 160000 index 0000000..cacf7f1 --- /dev/null +++ b/zlib @@ -0,0 +1 @@ +Subproject commit cacf7f1d4e3d44d871b605da3b647f07d718623f