// 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 #include #include #include #include namespace Ndk { bool Sdk::Initialize() { if (s_referenceCounter++ > 0) return true; // Déjà initialisé try { Nz::ErrorFlags errFlags(Nz::ErrorFlag_ThrowException, true); // Initialisation du moteur // Modules clients Nz::Audio::Initialize(); Nz::Graphics::Initialize(); // Modules serveurs Nz::Lua::Initialize(); Nz::Noise::Initialize(); Nz::Physics::Initialize(); Nz::Utility::Initialize(); // Initialisation du SDK // Initialisation des composants et systèmes BaseComponent::Initialize(); BaseSystem::Initialize(); // Composants InitializeComponent("NdkCam"); InitializeComponent("NdkColli"); InitializeComponent("NdkLight"); InitializeComponent("NdkList"); InitializeComponent("NdkGfx"); InitializeComponent("NdkNode"); InitializeComponent("NdkPhys"); InitializeComponent("NdkVeloc"); // Systèmes InitializeSystem(); InitializeSystem(); InitializeSystem(); InitializeSystem(); NazaraNotice("Initialized: SDK"); return true; } catch (const std::exception& e) { NazaraError("Failed to initialize NDK: " + Nz::String(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 Nz::Audio::Uninitialize(); Nz::Graphics::Uninitialize(); // Modules serveurs Nz::Lua::Uninitialize(); Nz::Noise::Uninitialize(); Nz::Physics::Uninitialize(); Nz::Utility::Uninitialize(); NazaraNotice("Uninitialized: SDK"); } unsigned int Sdk::s_referenceCounter = 0; }