Merge remote-tracking branch 'refs/remotes/origin/master' into enet_wip_nothing_to_see_here

This commit is contained in:
Jérôme Leclercq 2017-04-05 10:11:01 +02:00
commit 660cddba34
6 changed files with 55 additions and 32 deletions

View File

@ -85,8 +85,8 @@ ACTION.Function = function ()
local exeFileExt local exeFileExt
local exeFilterFunc local exeFilterFunc
if (os.is("windows")) then if (os.is("windows")) then
binFileMasks = {"**.dll"} binFileMasks = {"**.dll", "**.pdb"}
libFileMasks = {"**.lib", "**.a", "**.pdb"} libFileMasks = {"**.lib", "**.a"}
exeFileExt = ".exe" exeFileExt = ".exe"
exeFilterFunc = function (filePath) return true end exeFilterFunc = function (filePath) return true end
else else

View File

@ -31,7 +31,7 @@ namespace Nz
public: public:
LuaInstance(); LuaInstance();
LuaInstance(const LuaInstance&) = delete; LuaInstance(const LuaInstance&) = delete;
inline LuaInstance(LuaInstance&& instance) noexcept; LuaInstance(LuaInstance&& instance) noexcept;
~LuaInstance(); ~LuaInstance();
void ArgCheck(bool condition, unsigned int argNum, const char* error) const; void ArgCheck(bool condition, unsigned int argNum, const char* error) const;
@ -173,7 +173,7 @@ namespace Nz
void* ToUserdata(int index, const String& tname) const; void* ToUserdata(int index, const String& tname) const;
LuaInstance& operator=(const LuaInstance&) = delete; LuaInstance& operator=(const LuaInstance&) = delete;
inline LuaInstance& operator=(LuaInstance&& instance) noexcept; LuaInstance& operator=(LuaInstance&& instance) noexcept;
static int GetIndexOfUpValue(int upValue); static int GetIndexOfUpValue(int upValue);
static LuaInstance* GetInstance(lua_State* state); static LuaInstance* GetInstance(lua_State* state);

View File

@ -14,18 +14,6 @@
namespace Nz namespace Nz
{ {
inline LuaInstance::LuaInstance(LuaInstance&& instance) noexcept :
m_memoryLimit(instance.m_memoryLimit),
m_memoryUsage(instance.m_memoryUsage),
m_timeLimit(instance.m_timeLimit),
m_clock(std::move(instance.m_clock)),
m_lastError(std::move(instance.m_lastError)),
m_state(instance.m_state),
m_level(instance.m_level)
{
instance.m_state = nullptr;
}
inline lua_State* LuaInstance::GetInternalState() const inline lua_State* LuaInstance::GetInternalState() const
{ {
return m_state; return m_state;
@ -51,21 +39,6 @@ namespace Nz
return m_timeLimit; return m_timeLimit;
} }
inline LuaInstance& LuaInstance::operator=(LuaInstance&& instance) noexcept
{
m_clock = std::move(instance.m_clock);
m_lastError = std::move(instance.m_lastError);
m_level = instance.m_level;
m_memoryLimit = instance.m_memoryLimit;
m_memoryUsage = instance.m_memoryUsage;
m_state = instance.m_state;
m_timeLimit = instance.m_timeLimit;
instance.m_state = nullptr;
return *this;
}
// Functions args // Functions args
inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, bool* arg, TypeTag<bool>) inline unsigned int LuaImplQueryArg(const LuaInstance& instance, int index, bool* arg, TypeTag<bool>)
{ {

View File

@ -49,6 +49,8 @@ namespace Nz
bool RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector<RaycastHit>* hitInfos); bool RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector<RaycastHit>* hitInfos);
bool RaycastQueryFirst(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, RaycastHit* hitInfo = nullptr); bool RaycastQueryFirst(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, RaycastHit* hitInfo = nullptr);
void RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector<Nz::RigidBody2D*>* bodies);
void RegisterCallbacks(unsigned int collisionId, const Callback& callbacks); void RegisterCallbacks(unsigned int collisionId, const Callback& callbacks);
void RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks); void RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks);

View File

@ -143,6 +143,20 @@ namespace Nz
luaL_openlibs(m_state); luaL_openlibs(m_state);
} }
LuaInstance::LuaInstance(LuaInstance&& instance) noexcept :
m_memoryLimit(instance.m_memoryLimit),
m_memoryUsage(instance.m_memoryUsage),
m_timeLimit(instance.m_timeLimit),
m_clock(std::move(instance.m_clock)),
m_lastError(std::move(instance.m_lastError)),
m_state(instance.m_state),
m_level(instance.m_level)
{
instance.m_state = nullptr;
lua_setallocf(m_state, MemoryAllocator, this);
}
LuaInstance::~LuaInstance() LuaInstance::~LuaInstance()
{ {
if (m_state) if (m_state)
@ -801,6 +815,24 @@ namespace Nz
return luaL_testudata(m_state, index, tname.GetConstBuffer()); return luaL_testudata(m_state, index, tname.GetConstBuffer());
} }
LuaInstance& LuaInstance::operator=(LuaInstance&& instance) noexcept
{
m_clock = std::move(instance.m_clock);
m_lastError = std::move(instance.m_lastError);
m_level = instance.m_level;
m_memoryLimit = instance.m_memoryLimit;
m_memoryUsage = instance.m_memoryUsage;
m_state = instance.m_state;
m_timeLimit = instance.m_timeLimit;
instance.m_state = nullptr;
// Update allocator pointer
lua_setallocf(m_state, MemoryAllocator, this);
return *this;
}
int LuaInstance::GetIndexOfUpValue(int upValue) int LuaInstance::GetIndexOfUpValue(int upValue)
{ {
return lua_upvalueindex(upValue); return lua_upvalueindex(upValue);

View File

@ -83,9 +83,11 @@ namespace Nz
bool PhysWorld2D::RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector<RaycastHit>* hitInfos) bool PhysWorld2D::RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector<RaycastHit>* hitInfos)
{ {
using ResultType = decltype(hitInfos);
auto callback = [](cpShape* shape, cpVect point, cpVect normal, cpFloat alpha, void* data) auto callback = [](cpShape* shape, cpVect point, cpVect normal, cpFloat alpha, void* data)
{ {
std::vector<RaycastHit>* results = reinterpret_cast<std::vector<RaycastHit>*>(data); ResultType results = static_cast<ResultType>(data);
RaycastHit hitInfo; RaycastHit hitInfo;
hitInfo.fraction = alpha; hitInfo.fraction = alpha;
@ -133,6 +135,20 @@ namespace Nz
} }
} }
void PhysWorld2D::RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector<Nz::RigidBody2D*>* bodies)
{
using ResultType = decltype(bodies);
auto callback = [] (cpShape* shape, void* data)
{
ResultType results = static_cast<ResultType>(data);
results->push_back(static_cast<Nz::RigidBody2D*>(cpShapeGetUserData(shape)));
};
cpShapeFilter filter = cpShapeFilterNew(collisionGroup, categoryMask, collisionMask);
cpSpaceBBQuery(m_handle, cpBBNew(boundingBox.x, boundingBox.y + boundingBox.height, boundingBox.x + boundingBox.width, boundingBox.y), filter, callback, bodies);
}
void PhysWorld2D::RegisterCallbacks(unsigned int collisionId, const Callback& callbacks) void PhysWorld2D::RegisterCallbacks(unsigned int collisionId, const Callback& callbacks)
{ {
InitCallbacks(cpSpaceAddWildcardHandler(m_handle, collisionId), callbacks); InitCallbacks(cpSpaceAddWildcardHandler(m_handle, collisionId), callbacks);