#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()