diff --git a/build/scripts/module/3d.lua b/build/scripts/module/3d.lua new file mode 100644 index 000000000..d760b1c20 --- /dev/null +++ b/build/scripts/module/3d.lua @@ -0,0 +1,41 @@ +if (not _OPTIONS["united"]) then + project "Nazara3D" +end + +files +{ + "../include/Nazara/3D/**.hpp", + "../include/Nazara/3D/**.inl", + "../src/Nazara/3D/**.hpp", + "../src/Nazara/3D/**.cpp" +} + +if (os.is("windows")) then + excludes { "../src/Nazara/3D/Posix/*.hpp", "../src/Nazara/3D/Posix/*.cpp" } +else + excludes { "../src/Nazara/3D/Win32/*.hpp", "../src/Nazara/3D/Win32/*.cpp" } +end + +if (_OPTIONS["united"]) then + excludes "../src/Nazara/3D/Debug/Leaks.cpp" +else + configuration "DebugStatic" + links "NazaraCore-s-d" + links "NazaraUtility-s-d" + links "NazaraRenderer-s-d" + + configuration "ReleaseStatic" + links "NazaraCore-s" + links "NazaraUtility-s-d" + links "NazaraRenderer-s-d" + + configuration "DebugDLL" + links "NazaraCore-d" + links "NazaraUtility-s-d" + links "NazaraRenderer-s-d" + + configuration "ReleaseDLL" + links "NazaraCore" + links "NazaraUtility-s-d" + links "NazaraRenderer-s-d" +end \ No newline at end of file diff --git a/include/Nazara/3D/3D.hpp b/include/Nazara/3D/3D.hpp new file mode 100644 index 000000000..fa2961939 --- /dev/null +++ b/include/Nazara/3D/3D.hpp @@ -0,0 +1,29 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 3D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_3D_HPP +#define NAZARA_3D_HPP + +#include +#include + +class Nz3D +{ + public: + Nz3D() = delete; + ~Nz3D() = delete; + + static bool Initialize(); + + static bool IsInitialized(); + + static void Uninitialize(); + + private: + static unsigned int s_moduleReferenceCouter; +}; + +#endif // NAZARA_3D_HPP diff --git a/include/Nazara/3D/Config.hpp b/include/Nazara/3D/Config.hpp new file mode 100644 index 000000000..0fd581bc0 --- /dev/null +++ b/include/Nazara/3D/Config.hpp @@ -0,0 +1,38 @@ +/* + Nazara Engine - 3D module + + Copyright (C) 2012 Jérôme "Lynix" Leclercq (Lynix680@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +#pragma once + +#ifndef NAZARA_CONFIG_3D_HPP +#define NAZARA_CONFIG_3D_HPP + +/// Chaque modification d'un paramètre du module nécessite une recompilation de celui-ci + +// Utilise un tracker pour repérer les éventuels leaks (Ralentit l'exécution) +#define NAZARA_3D_MEMORYLEAKTRACKER 0 + +// Active les tests de sécurité basés sur le code (Conseillé pour le développement) +#define NAZARA_3D_SAFE 1 + +#endif // NAZARA_CONFIG_3D_HPP diff --git a/include/Nazara/3D/Debug.hpp b/include/Nazara/3D/Debug.hpp new file mode 100644 index 000000000..f2e12bcbf --- /dev/null +++ b/include/Nazara/3D/Debug.hpp @@ -0,0 +1,11 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 3D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#if NAZARA_3D_MEMORYLEAKTRACKER || defined(NAZARA_DEBUG) + #include + + #define delete NzMemoryManager::NextFree(__FILE__, __LINE__), delete + #define new new(__FILE__, __LINE__) +#endif diff --git a/include/Nazara/3D/DebugOff.hpp b/include/Nazara/3D/DebugOff.hpp new file mode 100644 index 000000000..d2a6b98b0 --- /dev/null +++ b/include/Nazara/3D/DebugOff.hpp @@ -0,0 +1,8 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 3D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#if NAZARA_3D_MEMORYLEAKTRACKER || defined(NAZARA_DEBUG) + #undef delete + #undef new +#endif diff --git a/src/Nazara/3D/3D.cpp b/src/Nazara/3D/3D.cpp new file mode 100644 index 000000000..0b6d201bf --- /dev/null +++ b/src/Nazara/3D/3D.cpp @@ -0,0 +1,49 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - 3D Module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include +#include +#include +#include + +bool Nz3D::Initialize() +{ + if (s_moduleReferenceCouter++ != 0) + return true; // Déjà initialisé + + // Initialisation des dépendances + if (!NzCore::Initialize()) + { + NazaraError("Failed to initialize core module"); + return false; + } + + // Initialisation du module + + NazaraNotice("Initialized: ModuleName module"); + + return true; +} + +bool Nz3D::IsInitialized() +{ + return s_moduleReferenceCouter != 0; +} + +void Nz3D::Uninitialize() +{ + if (--s_moduleReferenceCouter != 0) + return; // Encore utilisé + + // Libération du module + + NazaraNotice("Uninitialized: ModuleName module"); + + // Libération des dépendances + NzCore::Uninitialize(); +} + +unsigned int Nz3D::s_moduleReferenceCouter = 0;