60 lines
1.2 KiB
C++
60 lines
1.2 KiB
C++
#include "player.h"
|
|
#include "game.h"
|
|
#include "entitysystem.h"
|
|
|
|
|
|
CMOBAPlayer::CMOBAPlayer()
|
|
{
|
|
m_hCuboid = g_pPhysics->CreateCube({1,1,1});
|
|
|
|
}
|
|
|
|
CMOBAPlayer::~CMOBAPlayer()
|
|
{
|
|
|
|
}
|
|
|
|
void CMOBAPlayer::Spawn()
|
|
{
|
|
CBaseEntity::Spawn();
|
|
SetModel("game/core/models/sphere.fmdl");
|
|
SetAbsOrigin({0,-11.5, 0});
|
|
SetThink(Think);
|
|
};
|
|
|
|
bool CMOBAPlayer::CheckMask( HCollider hCollider )
|
|
{
|
|
return true;
|
|
};
|
|
|
|
void CMOBAPlayer::Think( float fDelta )
|
|
{
|
|
BaseClass::Think(fDelta);
|
|
|
|
|
|
Vector vPosition = GetAbsOrigin();
|
|
// player might lie to us
|
|
m_vMovementVector.x = glm_clamp(m_vMovementVector.x, -1, 1);
|
|
m_vMovementVector.y = glm_clamp(m_vMovementVector.y, -1, 1);
|
|
|
|
vPosition.x += m_vMovementVector.x*fDelta*5;
|
|
vPosition.z += m_vMovementVector.z*fDelta*5;
|
|
CastResult_t result = g_pPhysicsWorld->ShapeCast(m_hCuboid, {0,0,0,1}, vPosition, {vPosition.x, vPosition.y, -100}, CheckMask);
|
|
if (result.m_bIsHit)
|
|
SetAbsOrigin(result.m_vCollisionPoint);
|
|
else
|
|
SetAbsOrigin(vPosition);
|
|
};
|
|
|
|
LINK_ENTITY_TO_CLASS(player, CMOBAPlayer)
|
|
|
|
BEGIN_DATADESC(CMOBAPlayer)
|
|
END_DATADESC()
|
|
|
|
IMPLEMENT_SEND_DT(CMOBAPlayer)
|
|
END_SEND_DT()
|
|
|
|
IMPLEMENT_RECV_DT(CMOBAPlayer)
|
|
NetPropFloat3(m_vMovementVector)
|
|
END_RECV_DT()
|