Replace raw pointers in Corpse::Corpse
with references
This commit is contained in:
parent
5db97f7f10
commit
3916a39713
@ -381,7 +381,7 @@ namespace spades {
|
||||
if (name == "p" && down) {
|
||||
Corpse *corp;
|
||||
Player &victim = world->GetLocalPlayer().value();
|
||||
corp = new Corpse(renderer, map, &victim);
|
||||
corp = new Corpse(*renderer, *map, victim);
|
||||
corp->AddImpulse(victim.GetFront() * 32.f);
|
||||
corpses.emplace_back(corp);
|
||||
|
||||
|
@ -828,7 +828,7 @@ namespace spades {
|
||||
// create ragdoll corpse
|
||||
if (cg_ragdoll && victim.GetTeamId() < 2) {
|
||||
Corpse *corp;
|
||||
corp = new Corpse(renderer, map, &victim);
|
||||
corp = new Corpse(*renderer, *map, victim);
|
||||
if (&victim == world->GetLocalPlayer())
|
||||
lastMyCorpse = corp;
|
||||
if (&killer != &victim && kt != KillTypeGrenade) {
|
||||
|
@ -33,23 +33,23 @@ DEFINE_SPADES_SETTING(r_corpseLineCollision, "1");
|
||||
|
||||
namespace spades {
|
||||
namespace client {
|
||||
Corpse::Corpse(IRenderer *renderer, GameMap *map, Player *p)
|
||||
: renderer(renderer), map(map) {
|
||||
Corpse::Corpse(IRenderer &renderer, GameMap &map, Player &p)
|
||||
: renderer{renderer}, map{map} {
|
||||
SPADES_MARK_FUNCTION();
|
||||
|
||||
playerId = p->GetId();
|
||||
playerId = p.GetId();
|
||||
|
||||
IntVector3 col = p->GetWorld().GetTeam(p->GetTeamId()).color;
|
||||
IntVector3 col = p.GetWorld().GetTeam(p.GetTeamId()).color;
|
||||
color = MakeVector3(col.x / 255.f, col.y / 255.f, col.z / 255.f);
|
||||
|
||||
bool crouch = p->GetInput().crouch;
|
||||
Vector3 front = p->GetFront();
|
||||
bool crouch = p.GetInput().crouch;
|
||||
Vector3 front = p.GetFront();
|
||||
|
||||
float yaw = atan2(front.y, front.x) + static_cast<float>(M_PI) * .5f;
|
||||
// float pitch = -atan2(front.z, sqrt(front.x * front.x + front.y * front.y));
|
||||
|
||||
// lower axis
|
||||
Matrix4 lower = Matrix4::Translate(p->GetOrigin());
|
||||
Matrix4 lower = Matrix4::Translate(p.GetOrigin());
|
||||
lower = lower * Matrix4::Rotate(MakeVector3(0, 0, 1), yaw);
|
||||
|
||||
Matrix4 torso;
|
||||
@ -290,16 +290,16 @@ namespace spades {
|
||||
|
||||
static float fractf(float v) { return v - floorf(v); }
|
||||
|
||||
static void CheckEscape(GameMap *map, IntVector3 hitBlock, IntVector3 a, IntVector3 b,
|
||||
static void CheckEscape(GameMap &map, IntVector3 hitBlock, IntVector3 a, IntVector3 b,
|
||||
IntVector3 dir, float &bestDist, IntVector3 &bestDir) {
|
||||
hitBlock += dir;
|
||||
IntVector3 aa = a + dir;
|
||||
IntVector3 bb = b + dir;
|
||||
if (map->IsSolidWrapped(hitBlock.x, hitBlock.y, hitBlock.z))
|
||||
if (map.IsSolidWrapped(hitBlock.x, hitBlock.y, hitBlock.z))
|
||||
return;
|
||||
if (map->IsSolidWrapped(aa.x, aa.y, aa.z))
|
||||
if (map.IsSolidWrapped(aa.x, aa.y, aa.z))
|
||||
return;
|
||||
if (map->IsSolidWrapped(bb.x, bb.y, bb.z))
|
||||
if (map.IsSolidWrapped(bb.x, bb.y, bb.z))
|
||||
return;
|
||||
float dist;
|
||||
if (dir.x == 1) {
|
||||
@ -339,9 +339,9 @@ namespace spades {
|
||||
|
||||
IntVector3 hitBlock;
|
||||
|
||||
if (map->CastRay(n1.lastPos, n2.lastPos, 16.f, hitBlock)) {
|
||||
GameMap::RayCastResult res1 = map->CastRay2(n1.lastPos, n2.lastPos - n1.lastPos, 8);
|
||||
GameMap::RayCastResult res2 = map->CastRay2(n2.lastPos, n1.lastPos - n2.lastPos, 8);
|
||||
if (map.CastRay(n1.lastPos, n2.lastPos, 16.f, hitBlock)) {
|
||||
GameMap::RayCastResult res1 = map.CastRay2(n1.lastPos, n2.lastPos - n1.lastPos, 8);
|
||||
GameMap::RayCastResult res2 = map.CastRay2(n2.lastPos, n1.lastPos - n2.lastPos, 8);
|
||||
|
||||
if (!res1.hit)
|
||||
return;
|
||||
@ -529,9 +529,9 @@ namespace spades {
|
||||
|
||||
// node.vel *= damp;
|
||||
|
||||
if (!map->ClipBox(oldPos.x, oldPos.y, oldPos.z)) {
|
||||
if (!map.ClipBox(oldPos.x, oldPos.y, oldPos.z)) {
|
||||
|
||||
if (map->ClipBox(node.pos.x, oldPos.y, oldPos.z)) {
|
||||
if (map.ClipBox(node.pos.x, oldPos.y, oldPos.z)) {
|
||||
node.vel.x = -node.vel.x * .2f;
|
||||
if (fabsf(node.vel.x) < .3f)
|
||||
node.vel.x = 0.f;
|
||||
@ -541,7 +541,7 @@ namespace spades {
|
||||
node.vel.z *= .5f;
|
||||
}
|
||||
|
||||
if (map->ClipBox(node.pos.x, node.pos.y, oldPos.z)) {
|
||||
if (map.ClipBox(node.pos.x, node.pos.y, oldPos.z)) {
|
||||
node.vel.y = -node.vel.y * .2f;
|
||||
if (fabsf(node.vel.y) < .3f)
|
||||
node.vel.y = 0.f;
|
||||
@ -551,7 +551,7 @@ namespace spades {
|
||||
node.vel.z *= .5f;
|
||||
}
|
||||
|
||||
if (map->ClipBox(node.pos.x, node.pos.y, node.pos.z)) {
|
||||
if (map.ClipBox(node.pos.x, node.pos.y, node.pos.z)) {
|
||||
node.vel.z = -node.vel.z * .2f;
|
||||
if (fabsf(node.vel.z) < .3f)
|
||||
node.vel.z = 0.f;
|
||||
@ -561,7 +561,7 @@ namespace spades {
|
||||
node.vel.y *= .5f;
|
||||
}
|
||||
|
||||
if (map->ClipBox(node.pos.x, node.pos.y, node.pos.z)) {
|
||||
if (map.ClipBox(node.pos.x, node.pos.y, node.pos.z)) {
|
||||
// TODO: getting out block
|
||||
// node.pos = oldPos;
|
||||
// node.vel *= .5f;
|
||||
@ -569,10 +569,10 @@ namespace spades {
|
||||
}
|
||||
|
||||
/*
|
||||
if(map->ClipBox(node.pos.x,
|
||||
if(map.ClipBox(node.pos.x,
|
||||
node.pos.y,
|
||||
node.pos.z)){
|
||||
if(!map->ClipBox(node.pos.x,
|
||||
if(!map.ClipBox(node.pos.x,
|
||||
node.pos.y,
|
||||
oldPos.z)){
|
||||
node.vel.z = -node.vel.z * .2f;
|
||||
@ -580,7 +580,7 @@ namespace spades {
|
||||
node.vel.z = 0.f;
|
||||
node.pos.z = oldPos.z;
|
||||
}
|
||||
if(!map->ClipBox(node.pos.x,
|
||||
if(!map.ClipBox(node.pos.x,
|
||||
oldPos.y,
|
||||
node.pos.z)){
|
||||
node.vel.y = -node.vel.y * .2f;
|
||||
@ -588,7 +588,7 @@ namespace spades {
|
||||
node.vel.y = 0.f;
|
||||
node.pos.y = oldPos.y;
|
||||
}
|
||||
if(!map->ClipBox(oldPos.x,
|
||||
if(!map.ClipBox(oldPos.x,
|
||||
node.pos.y,
|
||||
node.pos.z)){
|
||||
node.vel.x = -node.vel.x * .2f;
|
||||
@ -638,14 +638,14 @@ namespace spades {
|
||||
|
||||
param.matrix = torso * scaler;
|
||||
|
||||
model = renderer->RegisterModel("Models/Player/Torso.kv6");
|
||||
renderer->RenderModel(model, param);
|
||||
model = renderer.RegisterModel("Models/Player/Torso.kv6");
|
||||
renderer.RenderModel(model, param);
|
||||
}
|
||||
// draw Head
|
||||
{
|
||||
Vector3 headBase = (torso * MakeVector3(0.0f, 0.f, 0.f)).GetXYZ();
|
||||
|
||||
model = renderer->RegisterModel("Models/Player/Head.kv6");
|
||||
model = renderer.RegisterModel("Models/Player/Head.kv6");
|
||||
|
||||
Vector3 aX, aY, aZ;
|
||||
Vector3 center = (nodes[Torso1].pos + nodes[Torso2].pos) * .5f;
|
||||
@ -658,7 +658,7 @@ namespace spades {
|
||||
aX = Vector3::Cross(aY, aZ).Normalize();
|
||||
param.matrix = Matrix4::FromAxis(-aX, aY, -aZ, headBase) * scaler;
|
||||
|
||||
renderer->RenderModel(model, param);
|
||||
renderer.RenderModel(model, param);
|
||||
}
|
||||
|
||||
// draw Arms
|
||||
@ -666,7 +666,7 @@ namespace spades {
|
||||
Vector3 arm1Base = (torso * MakeVector3(0.4f, 0.f, 0.2f)).GetXYZ();
|
||||
Vector3 arm2Base = (torso * MakeVector3(-0.4f, 0.f, 0.2f)).GetXYZ();
|
||||
|
||||
model = renderer->RegisterModel("Models/Player/Arm.kv6");
|
||||
model = renderer.RegisterModel("Models/Player/Arm.kv6");
|
||||
|
||||
Vector3 aX, aY, aZ;
|
||||
|
||||
@ -677,7 +677,7 @@ namespace spades {
|
||||
aX = Vector3::Cross(aY, aZ).Normalize();
|
||||
param.matrix = Matrix4::FromAxis(aX, aY, aZ, arm1Base) * scaler;
|
||||
|
||||
renderer->RenderModel(model, param);
|
||||
renderer.RenderModel(model, param);
|
||||
|
||||
aZ = nodes[Arm2].pos - nodes[Torso2].pos;
|
||||
aZ = aZ.Normalize();
|
||||
@ -686,7 +686,7 @@ namespace spades {
|
||||
aX = Vector3::Cross(aY, aZ).Normalize();
|
||||
param.matrix = Matrix4::FromAxis(aX, aY, aZ, arm2Base) * scaler;
|
||||
|
||||
renderer->RenderModel(model, param);
|
||||
renderer.RenderModel(model, param);
|
||||
}
|
||||
|
||||
// draw Leg
|
||||
@ -694,7 +694,7 @@ namespace spades {
|
||||
Vector3 leg1Base = (torso * MakeVector3(0.25f, 0.f, 0.9f)).GetXYZ();
|
||||
Vector3 leg2Base = (torso * MakeVector3(-0.25f, 0.f, 0.9f)).GetXYZ();
|
||||
|
||||
model = renderer->RegisterModel("Models/Player/Leg.kv6");
|
||||
model = renderer.RegisterModel("Models/Player/Leg.kv6");
|
||||
|
||||
Vector3 aX, aY, aZ;
|
||||
|
||||
@ -705,7 +705,7 @@ namespace spades {
|
||||
aX = Vector3::Cross(aY, aZ).Normalize();
|
||||
param.matrix = Matrix4::FromAxis(aX, aY, aZ, leg1Base) * scaler;
|
||||
|
||||
renderer->RenderModel(model, param);
|
||||
renderer.RenderModel(model, param);
|
||||
|
||||
aZ = nodes[Leg2].pos - nodes[Torso4].pos;
|
||||
aZ = aZ.Normalize();
|
||||
@ -714,7 +714,7 @@ namespace spades {
|
||||
aX = Vector3::Cross(aY, aZ).Normalize();
|
||||
param.matrix = Matrix4::FromAxis(aX, aY, aZ, leg2Base) * scaler;
|
||||
|
||||
renderer->RenderModel(model, param);
|
||||
renderer.RenderModel(model, param);
|
||||
}
|
||||
}
|
||||
|
||||
@ -733,7 +733,7 @@ namespace spades {
|
||||
|
||||
for (int i = 0; i < NodeCount; i++) {
|
||||
IntVector3 outBlk;
|
||||
if (map->CastRay(eye, nodes[i].pos, 256.f, outBlk))
|
||||
if (map.CastRay(eye, nodes[i].pos, 256.f, outBlk))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -61,8 +61,8 @@ namespace spades {
|
||||
Edge() { node1 = node2 = NodeCount; }
|
||||
};
|
||||
|
||||
IRenderer *renderer;
|
||||
GameMap *map;
|
||||
IRenderer &renderer;
|
||||
GameMap ↦
|
||||
Vector3 color;
|
||||
int playerId;
|
||||
|
||||
@ -85,8 +85,15 @@ namespace spades {
|
||||
void LineCollision(NodeType a, NodeType b, float dt);
|
||||
|
||||
public:
|
||||
// TODO: Replace pointers with references
|
||||
Corpse(IRenderer *renderer, GameMap *map, Player *p);
|
||||
/**
|
||||
* Construct a "corpse" client object.
|
||||
*
|
||||
* @param renderer The renderer. Must outlive `Corpse`.
|
||||
* @param map The game map, used for physics. Must outlive `Corpse`.
|
||||
* @param p The player to create a corpse from. Can be destroyed
|
||||
* after `Corpse` is constructed.
|
||||
*/
|
||||
Corpse(IRenderer &renderer, GameMap &map, Player &p);
|
||||
~Corpse();
|
||||
|
||||
void Update(float dt);
|
||||
|
Loading…
x
Reference in New Issue
Block a user