From 5d4859fff36eb054b3ac989831ddf1925e4eb2ca Mon Sep 17 00:00:00 2001 From: rna88 Date: Sun, 11 Mar 2018 05:05:43 -0700 Subject: [PATCH] Rename examples numerically Original examples were called Tutorial/Example1/2, and referring to them numerically is cleaner. --- .gitignore | 1 + README.md | 5 ++++- enet | 2 +- examples/{Example1 => 01.Tutorial}/Makefile | 2 +- examples/{Tutorial => 01.Tutorial}/main.cpp | 5 ++--- .../Makefile | 2 +- .../main.cpp | 4 ++-- .../{Tutorial => 03.ClientManagement}/Makefile | 2 +- .../{Example2 => 03.ClientManagement}/main.cpp | 4 ++-- examples/linux_compile_all.sh | 9 +-------- source/CNetManager.o | Bin 33232 -> 0 bytes source/SPacket.o | Bin 41304 -> 0 bytes 12 files changed, 16 insertions(+), 20 deletions(-) create mode 100644 .gitignore rename examples/{Example1 => 01.Tutorial}/Makefile (95%) rename examples/{Tutorial => 01.Tutorial}/main.cpp (97%) rename examples/{Example2 => 02.PacketIdentification}/Makefile (93%) rename examples/{Example1 => 02.PacketIdentification}/main.cpp (98%) rename examples/{Tutorial => 03.ClientManagement}/Makefile (94%) rename examples/{Example2 => 03.ClientManagement}/main.cpp (98%) delete mode 100644 source/CNetManager.o delete mode 100644 source/SPacket.o diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5761abc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.o diff --git a/README.md b/README.md index 8dcd39f..ef4b92f 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ 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: @@ -10,6 +11,7 @@ When cloning use the `--recurse-submodules` flag to retrieve the enet and zlib l Then run `make` in the `source/` directory to build the library. + ## Building examples Navigate to `examples/` and run: @@ -23,5 +25,6 @@ or to build them with optimizations: The compiled binaries will be found in `examples/bin/` +## License -Original code by Ahmed Hilali. +Refer to `source/ReadMe.txt` diff --git a/enet b/enet index 7900e72..236e8a6 160000 --- a/enet +++ b/enet @@ -1 +1 @@ -Subproject commit 7900e72b709798ac285431bf1860014c6e1caf91 +Subproject commit 236e8a6428d8e7c85956305859f0918d75cc9964 diff --git a/examples/Example1/Makefile b/examples/01.Tutorial/Makefile similarity index 95% rename from examples/Example1/Makefile rename to examples/01.Tutorial/Makefile index f5c46fc..f26042a 100644 --- a/examples/Example1/Makefile +++ b/examples/01.Tutorial/Makefile @@ -1,5 +1,5 @@ CXX = g++ -Target := Example1 +Target := 01.Tutorial TargetPath := ../bin/ Sources := main.cpp diff --git a/examples/Tutorial/main.cpp b/examples/01.Tutorial/main.cpp similarity index 97% rename from examples/Tutorial/main.cpp rename to examples/01.Tutorial/main.cpp index 6effa23..287ab40 100644 --- a/examples/Tutorial/main.cpp +++ b/examples/01.Tutorial/main.cpp @@ -1,11 +1,10 @@ /* +Example 1: Tutorial. + 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. diff --git a/examples/Example2/Makefile b/examples/02.PacketIdentification/Makefile similarity index 93% rename from examples/Example2/Makefile rename to examples/02.PacketIdentification/Makefile index b8c38ed..6c025af 100644 --- a/examples/Example2/Makefile +++ b/examples/02.PacketIdentification/Makefile @@ -1,5 +1,5 @@ CXX = g++ -Target := Example2 +Target := 02.PacketIdentification TargetPath := ../bin/ Sources := main.cpp diff --git a/examples/Example1/main.cpp b/examples/02.PacketIdentification/main.cpp similarity index 98% rename from examples/Example1/main.cpp rename to examples/02.PacketIdentification/main.cpp index bfbc8ce..153b049 100644 --- a/examples/Example1/main.cpp +++ b/examples/02.PacketIdentification/main.cpp @@ -1,8 +1,8 @@ /* -Example 1: Packet Identification. +Example 2: Packet Identification. In this example I will expain the basics of packet identification. -For a more basic introduction please refer to Tutorial.cpp first. +For a more basic introduction please refer to the tutorial first. (Recommended) */ diff --git a/examples/Tutorial/Makefile b/examples/03.ClientManagement/Makefile similarity index 94% rename from examples/Tutorial/Makefile rename to examples/03.ClientManagement/Makefile index 90cc69a..77a1969 100644 --- a/examples/Tutorial/Makefile +++ b/examples/03.ClientManagement/Makefile @@ -1,5 +1,5 @@ CXX = g++ -Target := Tutorial +Target := 03.ClientManagement TargetPath := ../bin/ Sources := main.cpp diff --git a/examples/Example2/main.cpp b/examples/03.ClientManagement/main.cpp similarity index 98% rename from examples/Example2/main.cpp rename to examples/03.ClientManagement/main.cpp index 5fcc50e..f27629a 100644 --- a/examples/Example2/main.cpp +++ b/examples/03.ClientManagement/main.cpp @@ -1,8 +1,8 @@ /* -Example 2: Client management. +Example 3: Client management. In this example I will demonstrate client management. -For a more basic introduction please refer to Tutorial.cpp first. +For a more basic introduction please refer to the Tutorial first. (Recommended) */ diff --git a/examples/linux_compile_all.sh b/examples/linux_compile_all.sh index 47a9caa..1d685cf 100755 --- a/examples/linux_compile_all.sh +++ b/examples/linux_compile_all.sh @@ -1,15 +1,8 @@ #! /bin/bash [ -z $1 ] || TARGET=$1 [ -z $TARGET ] && TARGET=debug -for i in Tutorial Example* ; do +for i in [0123456789]* ; 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/source/CNetManager.o b/source/CNetManager.o deleted file mode 100644 index b9ede934955644fc88ee9a5596e6aa5a347bdde9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33232 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 TPXU&z{+=$o-rJ5sXZ?Q%4!13^ diff --git a/source/SPacket.o b/source/SPacket.o deleted file mode 100644 index 794917f0771299baff82d9e25cd06550c747cddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41304 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 Gw*Nm1Lbxyh