Skip to content

Commit

Permalink
Refactor|Client: ClientPlayer owns viewport data
Browse files Browse the repository at this point in the history
No longer necessary to have a global array for viewdata_t.
  • Loading branch information
skyjake committed Jul 25, 2015
1 parent 0aea58a commit a1c57f0
Show file tree
Hide file tree
Showing 20 changed files with 70 additions and 59 deletions.
4 changes: 4 additions & 0 deletions doomsday/apps/client/include/clientplayer.h
Expand Up @@ -20,6 +20,7 @@
#define CLIENT_CLIENTPLAYER_H

#include <doomsday/player.h>
#include "render/viewports.h"

/**
* Client-side player state.
Expand All @@ -28,6 +29,9 @@ class ClientPlayer : public Player
{
public:
ClientPlayer();

viewdata_t &viewport();
viewdata_t const &viewport() const;

private:
DENG2_PRIVATE(d)
Expand Down
2 changes: 0 additions & 2 deletions doomsday/apps/client/include/render/viewports.h
Expand Up @@ -130,8 +130,6 @@ viewport_t const *R_CurrentViewPort();
*/
void R_UseViewPort(viewport_t const *vp);

viewdata_t const *R_ViewData(int consoleNum);

void R_UpdateViewer(int consoleNum);

void R_ResetViewer();
Expand Down
6 changes: 4 additions & 2 deletions doomsday/apps/client/include/world/p_players.h
Expand Up @@ -44,9 +44,11 @@ struct PlayerImpulse
de::String bindContextName; ///< Symbolic name of the associated binding context.
};

typedef Player player_t; // to aid legacy code
typedef AppPlayer player_t; // to aid legacy code

extern Player *viewPlayer;
#ifdef __CLIENT__
extern ClientPlayer *viewPlayer;
#endif
extern int consolePlayer;
extern int displayPlayer;

Expand Down
19 changes: 17 additions & 2 deletions doomsday/apps/client/src/clientplayer.cpp
Expand Up @@ -18,12 +18,27 @@

#include "clientplayer.h"

using namespace de;

DENG2_PIMPL_NOREF(ClientPlayer)
{

viewdata_t viewport;

Instance()
{
zap(viewport);
}
};

ClientPlayer::ClientPlayer() : d(new Instance)
{}

viewdata_t &ClientPlayer::viewport()
{
return d->viewport;
}

viewdata_t const &ClientPlayer::viewport() const
{

return d->viewport;
}
2 changes: 1 addition & 1 deletion doomsday/apps/client/src/edit_bias.cpp
Expand Up @@ -108,7 +108,7 @@ void SBE_SetHueCircle(bool activate = true)

if(activate)
{
viewdata_t const &viewer = *R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const &viewer = viewPlayer->viewport();
hueCircle->setOrientation(viewer.frontVec, viewer.sideVec, viewer.upVec);
}
}
Expand Down
3 changes: 1 addition & 2 deletions doomsday/apps/client/src/gl/gl_draw.cpp
Expand Up @@ -331,8 +331,7 @@ DENG_EXTERN_C void GL_SetFilterColor(float r, float g, float b, float a)
*/
void GL_DrawFilter(void)
{
const viewdata_t* vd = R_ViewData(displayPlayer);
assert(NULL != vd);
viewdata_t const *vd = &DD_Player(displayPlayer)->viewport();

DENG_ASSERT_IN_MAIN_THREAD();
DENG_ASSERT_GL_CONTEXT_ACTIVE();
Expand Down
2 changes: 1 addition & 1 deletion doomsday/apps/client/src/network/net_demo.cpp
Expand Up @@ -429,7 +429,7 @@ void Demo_WriteLocalCamera(dint plrNum)
Writer_WriteInt16(::msgWriter, y >> 16);
Writer_WriteByte(::msgWriter, y >> 8);

fixed_t z = FLT2FIX(mob->origin[VZ] + R_ViewData(plrNum)->current.origin.z);
fixed_t z = FLT2FIX(mob->origin[VZ] + DD_Player(plrNum)->viewport().current.origin.z);
Writer_WriteInt16(::msgWriter, z >> 16);
Writer_WriteByte(::msgWriter, z >> 8);

Expand Down
8 changes: 4 additions & 4 deletions doomsday/apps/client/src/r_util.cpp
Expand Up @@ -60,14 +60,14 @@ float R_MovementXYZPitch(float momx, float momy, float momz)

angle_t R_ViewPointToAngle(Vector2d point)
{
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
point -= Vector2d(viewData->current.origin);
return M_PointXYToAngle(point.x, point.y);
}

coord_t R_ViewPointDistance(coord_t x, coord_t y)
{
Vector3d const &viewOrigin = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer))->current.origin;
Vector3d const &viewOrigin = viewPlayer->viewport().current.origin;
coord_t viewOriginv1[2] = { viewOrigin.x, viewOrigin.y };
coord_t pointv1[2] = { x, y };
return M_PointDistance(viewOriginv1, pointv1);
Expand All @@ -90,7 +90,7 @@ Vector3d R_ClosestPointOnPlane(Vector3f const &planeNormal_,
void R_ProjectViewRelativeLine2D(coord_t const center[2], dd_bool alignToViewPlane,
coord_t width, coord_t offset, coord_t start[2], coord_t end[2])
{
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
float sinrv, cosrv;

if(alignToViewPlane)
Expand Down Expand Up @@ -121,7 +121,7 @@ void R_ProjectViewRelativeLine2D(coord_t const center[2], dd_bool alignToViewPla
void R_ProjectViewRelativeLine2D(Vector2d const center, bool alignToViewPlane,
coord_t width, coord_t offset, Vector2d &start, Vector2d &end)
{
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
float sinrv, cosrv;

if(alignToViewPlane)
Expand Down
2 changes: 1 addition & 1 deletion doomsday/apps/client/src/render/billboard.cpp
Expand Up @@ -338,7 +338,7 @@ void Rend_DrawPSprite(rendpspriteparams_t const &parms)

// All psprite vertices are co-plannar, so just copy the view front vector.
// @todo: Can we do something better here?
Vector3f const &frontVec = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer))->frontVec;
Vector3f const &frontVec = viewPlayer->viewport().frontVec;
dgl_vertex_t quadNormals[4];
for(dint i = 0; i < 4; ++i)
{
Expand Down
4 changes: 2 additions & 2 deletions doomsday/apps/client/src/render/consoleeffect.cpp
Expand Up @@ -18,6 +18,7 @@

#include "render/consoleeffect.h"
#include "render/viewports.h"
#include "world/p_players.h"
#include "clientapp.h"

using namespace de;
Expand Down Expand Up @@ -46,8 +47,7 @@ int ConsoleEffect::console() const

Rectanglei const &ConsoleEffect::viewRect() const
{
viewdata_t const *vd = R_ViewData(d->console);
return vd->window;
return DD_Player(d->console)->viewport().window;
}

bool ConsoleEffect::isInited() const
Expand Down
2 changes: 1 addition & 1 deletion doomsday/apps/client/src/render/fx/lensflares.cpp
Expand Up @@ -505,7 +505,7 @@ void LensFlares::draw()

if(!viewPlayer) return; /// @todo How'd we get here? -ds

viewdata_t const *viewData = R_ViewData(console());
viewdata_t const *viewData = &DD_Player(console())->viewport();
d->eyeFront = Vector3f(viewData->frontVec);

Rectanglef const rect = viewRect();
Expand Down
2 changes: 1 addition & 1 deletion doomsday/apps/client/src/render/r_draw.cpp
Expand Up @@ -215,7 +215,7 @@ void R_DrawViewBorder()
DENG2_ASSERT(inited);

viewport_t const *port = R_CurrentViewPort();
viewdata_t const *vd = R_ViewData(displayPlayer);
viewdata_t const *vd = &DD_Player(displayPlayer)->viewport();
DENG2_ASSERT(port != 0 && vd != 0);

if(vd->window.isNull()) return;
Expand Down
6 changes: 3 additions & 3 deletions doomsday/apps/client/src/render/r_things.cpp
Expand Up @@ -273,7 +273,7 @@ void R_ProjectSprite(mobj_t &mob)

// If the model is close to the viewpoint we should still to draw it,
// otherwise large models are likely to disappear too early.
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
Vector2d delta(distFromEye, moPos.z + (mob.height / 2) - viewData->current.origin.z);
if(M_ApproxDistance(delta.x, delta.y) > MAX_OBJECT_RADIUS)
return;
Expand Down Expand Up @@ -323,7 +323,7 @@ void R_ProjectSprite(mobj_t &mob)
if(mf->testSubFlag(0, MFF_ALIGN_YAW))
{
// Transform the origin point.
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
Vector2d delta(moPos.y - viewData->current.origin.y,
moPos.x - viewData->current.origin.x);

Expand All @@ -350,7 +350,7 @@ void R_ProjectSprite(mobj_t &mob)

if(mf->testSubFlag(0, MFF_ALIGN_PITCH))
{
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
Vector2d delta(vis->pose.midZ() - viewData->current.origin.z, distFromEye);

pitch = -BANG2DEG(bamsAtan2(delta.x * 10, delta.y * 10));
Expand Down
2 changes: 1 addition & 1 deletion doomsday/apps/client/src/render/rend_halo.cpp
Expand Up @@ -146,7 +146,7 @@ bool H_RenderHalo(Vector3d const &origin, float size, DGLuint tex,
occlusionFactor = (1 + occlusionFactor) / 2;

// viewSideVec is to the left.
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
Vector3f const leftOff = viewData->upVec + viewData->sideVec;
Vector3f const rightOff = viewData->upVec - viewData->sideVec;

Expand Down
6 changes: 3 additions & 3 deletions doomsday/apps/client/src/render/rend_main.cpp
Expand Up @@ -409,7 +409,7 @@ Vector3d Rend_EyeOrigin()

Matrix4f Rend_GetModelViewMatrix(dint consoleNum, bool inWorldSpace)
{
viewdata_t const *viewData = R_ViewData(consoleNum);
viewdata_t const *viewData = &DD_Player(consoleNum)->viewport();

dfloat bodyAngle = viewData->current.angleWithoutHeadTracking() / (dfloat) ANGLE_MAX * 360 - 90;

Expand Down Expand Up @@ -4616,7 +4616,7 @@ void Rend_RenderMap(Map &map)
// Make vissprites of all the visible decorations.
generateDecorationFlares(map);

viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
eyeOrigin = viewData->current.origin;

// Add the backside clipping range (if vpitch allows).
Expand Down Expand Up @@ -4791,7 +4791,7 @@ static void drawBiasEditingVisuals(Map &map)

if(HueCircle *hueCircle = SBE_HueCircle())
{
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();

glDisable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);
Expand Down
4 changes: 2 additions & 2 deletions doomsday/apps/client/src/render/rend_particle.cpp
Expand Up @@ -82,7 +82,7 @@ static dfloat particleDiffuse = 4;

static dfloat pointDist(fixed_t const c[3])
{
viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
dfloat dist = ((viewData->current.origin.y - FIX2FLT(c[1])) * -viewData->viewSin)
- ((viewData->current.origin.x - FIX2FLT(c[0])) * viewData->viewCos);

Expand Down Expand Up @@ -491,7 +491,7 @@ static void drawParticles(dint rtype, bool withBlend)
DENG_ASSERT_IN_MAIN_THREAD();
DENG_ASSERT_GL_CONTEXT_ACTIVE();

viewdata_t const *viewData = R_ViewData(DoomsdayApp::players().indexOf(viewPlayer));
viewdata_t const *viewData = &viewPlayer->viewport();
Vector3f const leftoff = viewData->upVec + viewData->sideVec;
Vector3f const rightoff = viewData->upVec - viewData->sideVec;

Expand Down

0 comments on commit a1c57f0

Please sign in to comment.