Files
funnygame/game/server/milmoba/player.cpp
2026-04-12 14:52:33 +03:00

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