Add support for custom resource parameters

And allow users to skip a precise loader using them


Former-commit-id: 297af2e4a24ad67c343aae5d89352abf4ea05f63
This commit is contained in:
Lynix 2016-03-08 13:37:17 +01:00
parent b524d9395a
commit dce587bd63
22 changed files with 78 additions and 20 deletions

View File

@ -12,10 +12,11 @@
#include <Nazara/Audio/SoundEmitter.hpp>
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
namespace Nz
{
struct MusicParams
struct MusicParams : ResourceParameters
{
bool forceMono = false;

View File

@ -16,12 +16,13 @@
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceManager.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Core/Stream.hpp>
namespace Nz
{
struct SoundBufferParams
struct SoundBufferParams : ResourceParameters
{
bool forceMono = false;

View File

@ -21,6 +21,8 @@ namespace Nz
template<typename Type, typename Parameters>
class ResourceLoader
{
static_assert(std::is_base_of<ResourceParameters, Parameters>::value, "ResourceParameters must be a base of Parameters");
friend Type;
public:

View File

@ -0,0 +1,20 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Engine - Core module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#pragma once
#ifndef NAZARA_RESOURCEPARAMETERS_HPP
#define NAZARA_RESOURCEPARAMETERS_HPP
#include <Nazara/Core/ParameterList.hpp>
namespace Nz
{
struct ResourceParameters
{
ParameterList custom;
};
}
#endif // NAZARA_RESOURCEPARAMETERS_HPP

View File

@ -21,6 +21,8 @@ namespace Nz
template<typename Type, typename Parameters>
class ResourceSaver
{
static_assert(std::is_base_of<ResourceParameters, Parameters>::value, "ResourceParameters must be a base of Parameters");
friend Type;
public:

View File

@ -15,6 +15,7 @@
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceManager.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Core/String.hpp>
#include <Nazara/Graphics/Config.hpp>
@ -26,7 +27,7 @@
namespace Nz
{
struct NAZARA_GRAPHICS_API MaterialParams
struct NAZARA_GRAPHICS_API MaterialParams : ResourceParameters
{
bool loadAlphaMap = true;
bool loadDiffuseMap = true;

View File

@ -10,13 +10,14 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Graphics/InstancedRenderable.hpp>
#include <Nazara/Graphics/Material.hpp>
#include <Nazara/Utility/Mesh.hpp>
namespace Nz
{
struct NAZARA_GRAPHICS_API ModelParameters
struct NAZARA_GRAPHICS_API ModelParameters : ResourceParameters
{
ModelParameters();

View File

@ -18,7 +18,7 @@
namespace Nz
{
struct NAZARA_GRAPHICS_API SkeletalModelParameters : public ModelParameters
struct NAZARA_GRAPHICS_API SkeletalModelParameters : ModelParameters
{
bool loadAnimation = true;
AnimationParams animation;

View File

@ -14,6 +14,7 @@
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceManager.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Core/String.hpp>
#include <Nazara/Utility/Config.hpp>
@ -23,7 +24,7 @@
namespace Nz
{
struct NAZARA_UTILITY_API AnimationParams
struct NAZARA_UTILITY_API AnimationParams : ResourceParameters
{
// La frame de fin à charger
unsigned int endFrame = std::numeric_limits<unsigned int>::max();

View File

@ -14,13 +14,14 @@
#include <Nazara/Core/ObjectRef.hpp>
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Utility/AbstractAtlas.hpp>
#include <memory>
#include <unordered_map>
namespace Nz
{
struct NAZARA_UTILITY_API FontParams
struct NAZARA_UTILITY_API FontParams : ResourceParameters
{
bool IsValid() const;
};

View File

@ -15,6 +15,7 @@
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceManager.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Core/ResourceSaver.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Core/Stream.hpp>
@ -26,7 +27,7 @@
namespace Nz
{
struct NAZARA_UTILITY_API ImageParams
struct NAZARA_UTILITY_API ImageParams : ResourceParameters
{
// Le format dans lequel l'image doit être chargée (Undefined pour le format le plus proche de l'original)
PixelFormatType loadFormat = PixelFormatType_Undefined;

View File

@ -15,6 +15,7 @@
#include <Nazara/Core/Resource.hpp>
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceManager.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Core/Stream.hpp>
#include <Nazara/Core/String.hpp>
#include <Nazara/Math/Box.hpp>
@ -24,7 +25,7 @@
namespace Nz
{
struct NAZARA_UTILITY_API MeshParams
struct NAZARA_UTILITY_API MeshParams : ResourceParameters
{
MeshParams(); // Vérifie que le storage par défaut est supporté (software autrement)

View File

@ -17,7 +17,10 @@ namespace Nz
Ternary CheckStatic(Stream& stream, const ModelParameters& parameters)
{
NazaraUnused(stream);
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeStaticMeshLoader_Skip", &skip) && skip)
return Ternary_False;
return Ternary_Unknown;
}
@ -66,7 +69,10 @@ namespace Nz
Ternary CheckAnimated(Stream& stream, const SkeletalModelParameters& parameters)
{
NazaraUnused(stream);
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeAnimatedMeshLoader_Skip", &skip) && skip)
return Ternary_False;
return Ternary_Unknown;
}

View File

@ -33,7 +33,10 @@ namespace Nz
Ternary Check(Stream& stream, const ModelParameters& parameters)
{
NazaraUnused(stream);
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeOBJLoader_Skip", &skip) && skip)
return Ternary_False;
return Ternary_Unknown;
}

View File

@ -15,7 +15,10 @@ namespace Nz
Ternary Check(Stream& stream, const MaterialParams& parameters)
{
NazaraUnused(stream);
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeTextureLoader_Skip", &skip) && skip)
return Ternary_False;
return Ternary_Unknown;
}

View File

@ -22,7 +22,9 @@ namespace Nz
Ternary Check(Stream& stream, const ImageParams& parameters)
{
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeDDSLoader_Skip", &skip) && skip)
return Ternary_False;
UInt32 magic;
if (stream.Read(&magic, sizeof(UInt32)) == sizeof(UInt32))

View File

@ -348,7 +348,9 @@ namespace Nz
Ternary Check(Stream& stream, const FontParams& parameters)
{
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeFreeTypeLoader_Skip", &skip) && skip)
return Ternary_False;
FreeTypeStream face;
face.SetStream(stream);

View File

@ -28,7 +28,9 @@ namespace Nz
Ternary Check(Stream& stream, const MeshParams& parameters)
{
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeMD2Loader_Skip", &skip) && skip)
return Ternary_False;
UInt32 magic[2];
if (stream.Read(&magic[0], 2*sizeof(UInt32)) == 2*sizeof(UInt32))

View File

@ -17,7 +17,9 @@ namespace Nz
Ternary Check(Stream& stream, const AnimationParams& parameters)
{
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeMD5AnimLoader_Skip", &skip) && skip)
return Ternary_False;
MD5AnimParser parser(stream);
return parser.Check();

View File

@ -22,7 +22,9 @@ namespace Nz
Ternary Check(Stream& stream, const MeshParams& parameters)
{
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeMD5MeshLoader_Skip", &skip) && skip)
return Ternary_False;
MD5MeshParser parser(stream);
return parser.Check();

View File

@ -47,7 +47,9 @@ namespace Nz
Ternary Check(Stream& stream, const ImageParams& parameters)
{
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativePCXLoader_Skip", &skip) && skip)
return Ternary_False;
UInt8 manufacturer;
if (stream.Read(&manufacturer, 1) == 1)

View File

@ -45,7 +45,9 @@ namespace Nz
Ternary Check(Stream& stream, const ImageParams& parameters)
{
NazaraUnused(parameters);
bool skip;
if (parameters.custom.GetBooleanParameter("NativeSTBLoader_Skip", &skip) && skip)
return Ternary_False;
int width, height, bpp;
if (stbi_info_from_callbacks(&callbacks, &stream, &width, &height, &bpp))