// 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 #pragma once #ifndef NDK_LUABINDING_HPP #define NDK_LUABINDING_HPP #include #include #include #include #include #include #include #include #include #ifndef NDK_SERVER #include #include #include #endif namespace Ndk { class LuaBinding { public: LuaBinding(); ~LuaBinding() = default; void RegisterClasses(Nz::LuaInstance& instance); private: void BindCore(); void BindMath(); void BindNetwork(); void BindSDK(); void BindUtility(); template void EnableComponentBinding(); void RegisterCore(Nz::LuaInstance& instance); void RegisterMath(Nz::LuaInstance& instance); void RegisterNetwork(Nz::LuaInstance& instance); void RegisterSDK(Nz::LuaInstance& instance); void RegisterUtility(Nz::LuaInstance& instance); #ifndef NDK_SERVER void BindAudio(); void BindGraphics(); void BindRenderer(); void RegisterAudio(Nz::LuaInstance& instance); void RegisterGraphics(Nz::LuaInstance& instance); void RegisterRenderer(Nz::LuaInstance& instance); #endif // Core Nz::LuaClass clockClass; Nz::LuaClass directoryClass; Nz::LuaClass fileClass; Nz::LuaClass streamClass; // Math Nz::LuaClass eulerAnglesClass; Nz::LuaClass quaternionClass; Nz::LuaClass vector2dClass; Nz::LuaClass vector3dClass; // Network Nz::LuaClass abstractSocketClass; Nz::LuaClass ipAddressClass; // Utility Nz::LuaClass abstractImage; Nz::LuaClass nodeClass; // SDK Nz::LuaClass entityClass; Nz::LuaClass nodeComponent; Nz::LuaClass worldClass; using AddComponentFunc = int(*)(Nz::LuaInstance&, EntityHandle&); using GetComponentFunc = int(*)(Nz::LuaInstance&, BaseComponent&); struct ComponentBinding { AddComponentFunc adder; GetComponentFunc getter; bool valid = false; }; std::vector m_componentBinding; #ifndef NDK_SERVER // Audio Nz::LuaClass soundClass; Nz::LuaClass soundBuffer; Nz::LuaClass soundEmitter; // Graphics Nz::LuaClass instancedRenderable; Nz::LuaClass modelClass; // SDK Nz::LuaClass graphicsComponent; #endif }; } #endif // NDK_LUABINDING_HPP