// Copyright (C) 2015 Jérôme Leclercq // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequesites.hpp #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Ndk { bool Sdk::Initialize() { if (s_referenceCounter++ > 0) return true; // Déjà initialisé try { NzErrorFlags errFlags(nzErrorFlag_ThrowException, true); // Initialisation du moteur // Modules clients NzAudio::Initialize(); NzGraphics::Initialize(); // Modules serveurs NzLua::Initialize(); NzNoise::Initialize(); NzPhysics::Initialize(); NzUtility::Initialize(); // Initialisation du SDK // Initialisation des composants et systèmes BaseComponent::Initialize(); BaseSystem::Initialize(); // Composants InitializeComponent("NdkColli"); InitializeComponent("NdkList"); InitializeComponent("NdkNode"); InitializeComponent("NdkPhys"); InitializeComponent("NdkVeloc"); // Systèmes InitializeSystem(); InitializeSystem(); InitializeSystem(); NazaraNotice("Initialized: SDK"); return true; } catch (const std::exception& e) { NazaraError("Failed to initialize NDK: " + NzString(e.what())); return false; } } void Sdk::Uninitialize() { if (s_referenceCounter != 1) { // Le module est soit encore utilisé, soit pas initialisé if (s_referenceCounter > 1) s_referenceCounter--; return; } // Libération du SDK s_referenceCounter = 0; // Libération du moteur // Modules clients NzAudio::Uninitialize(); NzGraphics::Uninitialize(); // Modules serveurs NzLua::Uninitialize(); NzNoise::Uninitialize(); NzPhysics::Uninitialize(); NzUtility::Uninitialize(); NazaraNotice("Uninitialized: SDK"); } unsigned int Sdk::s_referenceCounter = 0; }