184 lines
4.4 KiB
C++
184 lines
4.4 KiB
C++
#include "remoteplayer.h"
|
||
#include <iostream>
|
||
#include <cstring>
|
||
#include "texture.h"
|
||
#include <thread>
|
||
#include <queue>
|
||
|
||
|
||
|
||
RemotePlayer::RemotePlayer(netprot::PlayerInfo pinfo) : m_pinfo(pinfo), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous(), m_texture_front(), Player(Vector3f(0, 0, 0), 0, 0) {
|
||
|
||
LoadTexture(m_texture_front, TEXTURE_PATH "AssetOtherPlayer/FinalPNGStanding/BlueFrontRight.png", false, false);
|
||
|
||
}
|
||
|
||
RemotePlayer::~RemotePlayer()
|
||
{
|
||
|
||
}
|
||
|
||
void RemotePlayer::Init()
|
||
{
|
||
|
||
}
|
||
|
||
void RemotePlayer::Feed(const netprot::Output out) {
|
||
|
||
current.position = out.position;
|
||
current.direction = out.direction;
|
||
current.states = out.states;
|
||
current.id = out.id;
|
||
|
||
if (current.position != previous.position)
|
||
{
|
||
Vector3f positionDelta = current.position - previous.position;
|
||
m_position = current.position + positionDelta;
|
||
m_direction = current.direction;
|
||
|
||
}
|
||
|
||
if(current.direction != previous.direction)
|
||
{
|
||
m_direction = current.direction;
|
||
current.direction = current.direction;
|
||
}
|
||
|
||
if (current.states.shooting) {
|
||
m_animstate = Anim::SHOOTING;
|
||
}
|
||
else if (current.states.jumping) {
|
||
m_animstate = Anim::JUMPING;
|
||
}
|
||
else if (current.states.dead) {
|
||
m_animstate = Anim::DEAD;
|
||
}
|
||
else if(current.states.powerup){
|
||
m_animstate = Anim::POWERUP;
|
||
}
|
||
else if (current.states.still) {
|
||
m_animstate = Anim::STILL;
|
||
}
|
||
else if (current.states.running) {
|
||
m_animstate = Anim::RUNNING;
|
||
}
|
||
|
||
previous.direction = current.direction;
|
||
previous.position = current.position;
|
||
previous.states = current.states;
|
||
previous.id = current.id;
|
||
}
|
||
|
||
void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, float elapsedTime)
|
||
{
|
||
m_texture_front.Bind();
|
||
shader.Use();
|
||
|
||
//float x = current.position.x;
|
||
//float y = current.position.y;
|
||
//float z = current.position.z;
|
||
|
||
float x = 128.0f;
|
||
float y = 21.0f;
|
||
float z = 128.0f;
|
||
|
||
float quadSize = 300.0f;
|
||
glBegin(GL_QUADS);
|
||
glNormal3f(0, 0, 1);
|
||
|
||
// Face avant
|
||
glTexCoord2f(0, 0);
|
||
glVertex3f(x - quadSize / 2, y - quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(1, 0);
|
||
glVertex3f(x + quadSize / 2, y - quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(1, 1);
|
||
glVertex3f(x + quadSize / 2, y + quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(0, 1);
|
||
glVertex3f(x - quadSize / 2, y + quadSize / 2, z + quadSize / 2);
|
||
|
||
// Face arri<72>re
|
||
glTexCoord2f(0, 0);
|
||
glVertex3f(x + quadSize / 2, y - quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(1, 0);
|
||
glVertex3f(x - quadSize / 2, y - quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(1, 1);
|
||
glVertex3f(x - quadSize / 2, y + quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(0, 1);
|
||
glVertex3f(x + quadSize / 2, y + quadSize / 2, z - quadSize / 2);
|
||
|
||
// Face droite
|
||
glTexCoord2f(0, 0);
|
||
glVertex3f(x + quadSize / 2, y - quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(1, 0);
|
||
glVertex3f(x + quadSize / 2, y - quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(1, 1);
|
||
glVertex3f(x + quadSize / 2, y + quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(0, 1);
|
||
glVertex3f(x + quadSize / 2, y + quadSize / 2, z + quadSize / 2);
|
||
|
||
// Face gauche
|
||
glTexCoord2f(0, 0);
|
||
glVertex3f(x - quadSize / 2, y - quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(1, 0);
|
||
glVertex3f(x - quadSize / 2, y - quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(1, 1);
|
||
glVertex3f(x - quadSize / 2, y + quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(0, 1);
|
||
glVertex3f(x - quadSize / 2, y + quadSize / 2, z - quadSize / 2);
|
||
|
||
// Face sup<75>rieure
|
||
glTexCoord2f(0, 0);
|
||
glVertex3f(x - quadSize / 2, y + quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(1, 0);
|
||
glVertex3f(x + quadSize / 2, y + quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(1, 1);
|
||
glVertex3f(x + quadSize / 2, y + quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(0, 1);
|
||
glVertex3f(x - quadSize / 2, y + quadSize / 2, z - quadSize / 2);
|
||
|
||
// Face inf<6E>rieure
|
||
glTexCoord2f(0, 0);
|
||
glVertex3f(x - quadSize / 2, y - quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(1, 0);
|
||
glVertex3f(x + quadSize / 2, y - quadSize / 2, z - quadSize / 2);
|
||
|
||
glTexCoord2f(1, 1);
|
||
glVertex3f(x + quadSize / 2, y - quadSize / 2, z + quadSize / 2);
|
||
|
||
glTexCoord2f(0, 1);
|
||
glVertex3f(x - quadSize / 2, y - quadSize / 2, z + quadSize / 2);
|
||
|
||
glEnd();
|
||
|
||
}
|
||
|
||
bool RemotePlayer::LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError)
|
||
{
|
||
texture.Load(filename, useMipmaps);
|
||
if (!texture.IsValid()) {
|
||
std::cerr << "Unable to load texture (" << filename << ")" << std::endl;
|
||
if (stopOnError)
|
||
return false;
|
||
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|