Merge remote-tracking branch 'refs/remotes/origin/master' into enet_wip_nothing_to_see_here
This commit is contained in:
commit
660cddba34
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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>)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue