Initial commit: Final state of the master project
This commit is contained in:
55
Research/scene/Material/MaterialLibraryPointer.h
Normal file
55
Research/scene/Material/MaterialLibraryPointer.h
Normal file
@@ -0,0 +1,55 @@
|
||||
#pragma once
|
||||
#include "../../inc/glm/common.hpp"
|
||||
#include "../../core/Defines.h"
|
||||
#include "../../core/BitHelper.h"
|
||||
#include <vector>
|
||||
|
||||
class MaterialLibraryPointer :
|
||||
public glm::u16vec2
|
||||
{
|
||||
public:
|
||||
MaterialLibraryPointer() : glm::u16vec2() {}
|
||||
MaterialLibraryPointer(const unsigned16 v) : glm::u16vec2(v) {}
|
||||
MaterialLibraryPointer(const unsigned16 x, const unsigned16 y) : glm::u16vec2(x, y) {}
|
||||
~MaterialLibraryPointer() {}
|
||||
|
||||
MaterialLibraryPointer& operator=(const unsigned& source)
|
||||
{
|
||||
x = (source & 0xFFFF0000) >> 16;
|
||||
y = source & 0x0000FFFF;
|
||||
return *this;
|
||||
}
|
||||
|
||||
std::vector<unsigned8> Serialize()
|
||||
{
|
||||
return BitHelper::SplitInBytes(this->operator unsigned());
|
||||
}
|
||||
|
||||
operator unsigned() const
|
||||
{
|
||||
return (((unsigned)x) << 16) | y;
|
||||
}
|
||||
|
||||
bool operator==(const MaterialLibraryPointer& other) const
|
||||
{
|
||||
return x == other.x && y == other.y;
|
||||
}
|
||||
|
||||
bool operator!=(const MaterialLibraryPointer& other) const
|
||||
{
|
||||
return !(*this == other);
|
||||
}
|
||||
};
|
||||
|
||||
// Perfect hash
|
||||
namespace std
|
||||
{
|
||||
template<>
|
||||
struct hash<MaterialLibraryPointer>
|
||||
{
|
||||
size_t operator()(MaterialLibraryPointer const &value) const
|
||||
{
|
||||
return (unsigned) value;
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user