Optimisations
Former-commit-id: 81d277a49b57f061a6339678bd953054e434c613
This commit is contained in:
@@ -12,9 +12,9 @@
|
||||
template<typename Type, typename Parameters>
|
||||
bool NzResourceLoader<Type, Parameters>::IsExtensionSupported(const NzString& extension)
|
||||
{
|
||||
for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader)
|
||||
for (Loader& loader : Type::s_loaders)
|
||||
{
|
||||
ExtensionGetter isExtensionSupported = std::get<0>(*loader);
|
||||
ExtensionGetter isExtensionSupported = std::get<0>(loader);
|
||||
|
||||
if (isExtensionSupported && isExtensionSupported(extension))
|
||||
return true;
|
||||
@@ -45,15 +45,15 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
|
||||
NzFile file(path); // Ouvert seulement en cas de besoin
|
||||
|
||||
bool found = false;
|
||||
for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader)
|
||||
for (Loader& loader : Type::s_loaders)
|
||||
{
|
||||
ExtensionGetter isExtensionSupported = std::get<0>(*loader);
|
||||
ExtensionGetter isExtensionSupported = std::get<0>(loader);
|
||||
if (!isExtensionSupported || !isExtensionSupported(ext))
|
||||
continue;
|
||||
|
||||
StreamChecker checkFunc = std::get<1>(*loader);
|
||||
StreamLoader streamLoader = std::get<2>(*loader);
|
||||
FileLoader fileLoader = std::get<3>(*loader);
|
||||
StreamChecker checkFunc = std::get<1>(loader);
|
||||
StreamLoader streamLoader = std::get<2>(loader);
|
||||
FileLoader fileLoader = std::get<3>(loader);
|
||||
|
||||
if (checkFunc && !file.IsOpen())
|
||||
{
|
||||
@@ -141,10 +141,10 @@ bool NzResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, NzInputS
|
||||
|
||||
nzUInt64 streamPos = stream.GetCursorPos();
|
||||
bool found = false;
|
||||
for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader)
|
||||
for (Loader& loader : Type::s_loaders)
|
||||
{
|
||||
StreamChecker checkFunc = std::get<1>(*loader);
|
||||
StreamLoader streamLoader = std::get<2>(*loader);
|
||||
StreamChecker checkFunc = std::get<1>(loader);
|
||||
StreamLoader streamLoader = std::get<2>(loader);
|
||||
|
||||
stream.SetCursorPos(streamPos);
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ class NAZARA_API NzAbstractRenderQueue : NzNonCopyable
|
||||
virtual void AddLight(const NzLight* light) = 0;
|
||||
virtual void AddModel(const NzModel* model) = 0;
|
||||
|
||||
virtual void Clear() = 0;
|
||||
virtual void Clear(bool fully) = 0;
|
||||
};
|
||||
|
||||
#endif // NAZARA_ABSTRACTRENDERQUEUE_HPP
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#define NAZARA_FORWARDRENDERQUEUE_HPP
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Core/Color.hpp>
|
||||
#include <Nazara/Core/ResourceListener.hpp>
|
||||
#include <Nazara/Graphics/AbstractRenderQueue.hpp>
|
||||
#include <Nazara/Math/Box.hpp>
|
||||
#include <Nazara/Math/Matrix4.hpp>
|
||||
@@ -18,7 +20,7 @@ class NzMaterial;
|
||||
class NzSkeletalMesh;
|
||||
class NzStaticMesh;
|
||||
|
||||
class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue
|
||||
class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue, NzResourceListener
|
||||
{
|
||||
friend class NzForwardRenderTechnique;
|
||||
|
||||
@@ -30,11 +32,21 @@ class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue
|
||||
void AddLight(const NzLight* light);
|
||||
void AddModel(const NzModel* model);
|
||||
|
||||
void Clear();
|
||||
void Clear(bool fully);
|
||||
|
||||
void Sort(const NzCamera& camera);
|
||||
|
||||
private:
|
||||
void OnResourceDestroy(const NzResource* resource, int index);
|
||||
|
||||
struct BillboardData
|
||||
{
|
||||
NzColor color;
|
||||
NzVector3f position;
|
||||
NzVector2f size;
|
||||
float rotation;
|
||||
};
|
||||
|
||||
struct MaterialComparator
|
||||
{
|
||||
bool operator()(const NzMaterial* mat1, const NzMaterial* mat2);
|
||||
@@ -76,6 +88,7 @@ class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue
|
||||
typedef std::map<NzSkeletalMesh*, std::vector<SkeletalData>, SkeletalMeshComparator> SkeletalMeshContainer;
|
||||
typedef std::map<NzStaticMesh*, std::vector<NzMatrix4f>, StaticMeshComparator> StaticMeshContainer;
|
||||
|
||||
std::map<NzMaterial*, std::vector<BillboardData>, MaterialComparator> billboards;
|
||||
std::map<NzMaterial*, std::pair<SkeletalMeshContainer, StaticMeshContainer>, MaterialComparator> visibleModels;
|
||||
std::vector<std::pair<unsigned int, bool>> visibleTransparentsModels;
|
||||
std::vector<TransparentSkeletalModel> transparentSkeletalModels;
|
||||
|
||||
@@ -72,15 +72,15 @@ void NzLuaClass<T>::Register(NzLuaInstance& lua)
|
||||
m_info->methods.resize(m_methods.size());
|
||||
|
||||
unsigned int index = 0;
|
||||
for (auto it = m_methods.begin(); it != m_methods.end(); ++it)
|
||||
for (auto& pair : m_methods)
|
||||
{
|
||||
m_info->methods[index] = it->second;
|
||||
m_info->methods[index] = pair.second;
|
||||
|
||||
lua.PushValue(1);
|
||||
lua.PushInteger(index);
|
||||
|
||||
lua.PushCFunction(MethodProxy, 2);
|
||||
lua.SetField(it->first); // Méthode
|
||||
lua.SetField(pair.first); // Méthode
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user