91 lines
1.9 KiB
C++
91 lines
1.9 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);
|
|
|
|
m_pLeftHand = EntitySystem()->CreateByClassname("player_hand_controller", &m_leftHandId);
|
|
m_pRightHand = EntitySystem()->CreateByClassname("player_hand_controller", &m_rightHandId);
|
|
m_pLeftHand->Spawn();
|
|
m_pRightHand->Spawn();
|
|
};
|
|
|
|
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)
|
|
NetPropInt(m_leftHandId),
|
|
NetPropInt(m_rightHandId),
|
|
END_SEND_DT()
|
|
|
|
IMPLEMENT_RECV_DT(CMOBAPlayer)
|
|
NetPropFloat3(m_vMovementVector),
|
|
END_RECV_DT()
|
|
|
|
CMOBAPlayerHandController::CMOBAPlayerHandController()
|
|
{
|
|
|
|
}
|
|
void CMOBAPlayerHandController::Spawn()
|
|
{
|
|
CBaseEntity::Spawn();
|
|
SetScale(0.03);
|
|
SetThink(Think);
|
|
}
|
|
void CMOBAPlayerHandController::Think( float fDelta )
|
|
{
|
|
|
|
}
|
|
LINK_ENTITY_TO_CLASS(player_hand_controller, CMOBAPlayerHandController)
|
|
|
|
BEGIN_DATADESC(CMOBAPlayerHandController)
|
|
END_DATADESC()
|
|
|
|
IMPLEMENT_SEND_DT(CMOBAPlayerHandController)
|
|
END_SEND_DT()
|
|
|
|
IMPLEMENT_RECV_DT(CMOBAPlayerHandController)
|
|
END_RECV_DT()
|