Changed: Renamed a few classes
Changed: Moved most sensible objects into the OpenArena namespace ~g2k
This commit is contained in:
120
include/camera.h
120
include/camera.h
@@ -9,82 +9,82 @@
|
||||
#include "mygl.h"
|
||||
#include "screen.h"
|
||||
|
||||
|
||||
|
||||
class CameraClass
|
||||
namespace OpenArena
|
||||
{
|
||||
public:
|
||||
//Constructors
|
||||
CameraClass(); //Default Constructor
|
||||
//Purpose:
|
||||
//
|
||||
class Camera
|
||||
{
|
||||
public:
|
||||
//Constructors
|
||||
Camera(); //Default Constructor
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
//CameraClass(const CameraClass&); //Copy Constructor
|
||||
//Purpose:
|
||||
//
|
||||
//Camera(const Camera&); //Copy Constructor
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
//Observer Accessors
|
||||
Vec3f Position();
|
||||
//Purpose:
|
||||
//
|
||||
//Observer Accessors
|
||||
Vec3f Position();
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
Vec3f View();
|
||||
//Purpose:
|
||||
//
|
||||
Vec3f View();
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
Vec3f UpVector();
|
||||
//Purpose:
|
||||
//
|
||||
Vec3f UpVector();
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
Vec3f Strafe();
|
||||
//Purpose:
|
||||
//
|
||||
Vec3f Strafe();
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
//Mutators
|
||||
void PositionCamera(double xpos, double ypos, double zpos,
|
||||
double xview, double yview, double zview,
|
||||
double xup, double yup, double zup);
|
||||
//Purpose:
|
||||
//
|
||||
//Mutators
|
||||
void PositionCamera(double xpos, double ypos, double zpos,
|
||||
double xview, double yview, double zview,
|
||||
double xup, double yup, double zup);
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void PositionCamera(Vec3f pos, Vec3f view, Vec3f up);
|
||||
//Purpose:
|
||||
//
|
||||
void PositionCamera(Vec3f pos, Vec3f view, Vec3f up);
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void RotateView(double angle, double X, double Y, double Z);
|
||||
//Purpose:
|
||||
//
|
||||
void RotateView(double angle, double X, double Y, double Z);
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void SetViewByMouse(SCREEN g_Screen);
|
||||
//Purpose:
|
||||
//
|
||||
void SetViewByMouse(Screen g_Screen);
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void RotateAroundPoint(Vec3f vCenter, double X, double Y, double Z);
|
||||
//Purpose:
|
||||
//
|
||||
void RotateAroundPoint(Vec3f vCenter, double X, double Y, double Z);
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void StrafeCamera(double speed);
|
||||
//Purpose:
|
||||
//
|
||||
void StrafeCamera(double speed);
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void MoveCamera(double speed);
|
||||
//Purpose:
|
||||
//
|
||||
void MoveCamera(double speed);
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void Update();
|
||||
//Purpose:
|
||||
//
|
||||
void Update();
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
void Look();
|
||||
//Purpose:
|
||||
//
|
||||
void Look();
|
||||
//Purpose:
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
Vec3f m_vPosition;
|
||||
Vec3f m_vView;
|
||||
Vec3f m_vUpVector;
|
||||
Vec3f m_vStrafe;
|
||||
private:
|
||||
Vec3f m_vPosition;
|
||||
Vec3f m_vView;
|
||||
Vec3f m_vUpVector;
|
||||
Vec3f m_vStrafe;
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
#include "vector.h"
|
||||
#include "myglTexture.h"
|
||||
|
||||
struct TRIANGLE
|
||||
namespace OpenArena
|
||||
{
|
||||
GL_MY_TEXTURE texture;
|
||||
uint32 texID;
|
||||
Vec3f vertecies[3];
|
||||
Vec2f texCoords[3];
|
||||
Vec3f normal;
|
||||
class Triangle
|
||||
{
|
||||
public:
|
||||
Texture texture;
|
||||
uint32 texID;
|
||||
Vec3f vertecies[3];
|
||||
Vec2f texCoords[3];
|
||||
Vec3f normal;
|
||||
};
|
||||
};
|
||||
|
||||
class POSITION
|
||||
/*//This class seems to never be used and I dont' remember why I made it.
|
||||
class Position
|
||||
{
|
||||
public:
|
||||
GLfloat xrot; // X rotation
|
||||
@@ -21,7 +25,7 @@ public:
|
||||
GLfloat ztrans; // Z translation
|
||||
bool stepRight;
|
||||
bool stepLeft;
|
||||
POSITION()
|
||||
Position()
|
||||
{
|
||||
xtrans = 0.0f;
|
||||
ytrans = 0.0f;
|
||||
@@ -33,3 +37,4 @@ public:
|
||||
private:
|
||||
|
||||
};
|
||||
*/
|
||||
|
||||
135
include/level.h
135
include/level.h
@@ -30,78 +30,81 @@
|
||||
#include "keys.h"
|
||||
|
||||
using namespace std;
|
||||
using OpenArena::Triangle;
|
||||
|
||||
const float piover180 = 0.0174532925f;
|
||||
const string DEFAULT_TEXTURE_NAME = "oa/textures/default.bmp";
|
||||
const unsigned int MAX_CONSOLE_LINES = 30; //The max number of lines to be displayed in the console
|
||||
const unsigned int MAX_CONSOLE_HISTORY_LINES = MAX_CONSOLE_LINES + 20; //The max number of console lines to store in the history
|
||||
const unsigned int MAX_CONSOLE_OUTPUT_LINES = MAX_CONSOLE_LINES;
|
||||
const unsigned int MAX_OUTPUT_TEXT_LINES = 4; //The max number of output lines to be displayed on the screen
|
||||
|
||||
enum {GL_MY_TEXTURE_CONSOLEBACKGROUND=0, NUM_MENU_TEXTURES};
|
||||
|
||||
class LEVEL
|
||||
namespace OpenArena
|
||||
{
|
||||
public:
|
||||
LEVEL();
|
||||
~LEVEL();
|
||||
bool LoadMap(string mapname);
|
||||
bool LoadMap();
|
||||
void SaveMap(string mapname);
|
||||
bool LoadConfig(string cfgname);
|
||||
void LoadConfig();
|
||||
void SaveConfig(string cfgname);
|
||||
void Execute(string cmd);
|
||||
void LoadGLTextures();
|
||||
void Render();
|
||||
void UnloadMap();
|
||||
void UpdateConsole(char);
|
||||
uint32 FPS();
|
||||
void ParseCmds(const char*);
|
||||
void Print(int x, int y, const char* string, unsigned int set);
|
||||
const float piover180 = 0.0174532925f;
|
||||
const string DEFAULT_TEXTURE_NAME = "oa/textures/default.bmp";
|
||||
const unsigned int MAX_CONSOLE_LINES = 30; //The max number of lines to be displayed in the console
|
||||
const unsigned int MAX_CONSOLE_HISTORY_LINES = MAX_CONSOLE_LINES + 20; //The max number of console lines to store in the history
|
||||
const unsigned int MAX_CONSOLE_OUTPUT_LINES = MAX_CONSOLE_LINES;
|
||||
const unsigned int MAX_OUTPUT_TEXT_LINES = 4; //The max number of output lines to be displayed on the screen
|
||||
|
||||
/*Not Yet Implemented
|
||||
void PlayerConnect(); // implement later
|
||||
void PlayerDisconnect(); // implement later
|
||||
*/
|
||||
SCREEN screen;
|
||||
GLFontClass glFont;
|
||||
string nextLevel;
|
||||
PLAYER* defaultPlayer;
|
||||
uint32 numTextures;
|
||||
string* textureNames;
|
||||
enum {GL_MY_TEXTURE_CONSOLEBACKGROUND=0, NUM_MENU_TEXTURES};
|
||||
|
||||
string bgm;
|
||||
#ifdef WIN32
|
||||
HSTREAM bgmStream;
|
||||
#endif
|
||||
unsigned char bgmCDA;
|
||||
string gamedir;
|
||||
float gravity;
|
||||
bool mlook;
|
||||
bool showFPS;
|
||||
bool showConsole;
|
||||
bool sound;
|
||||
float turnSpeed;
|
||||
float moveSpeed;
|
||||
float mouseSpeed;
|
||||
unsigned char maxFPS;
|
||||
//Map
|
||||
TRIANGLE* triangles;
|
||||
uint32 numTriangles;
|
||||
list<PLAYER> players;
|
||||
list<ENTITY> ents;
|
||||
//list<GL_MY_TEXTURE> textures;
|
||||
GL_MY_TEXTURE* textures;
|
||||
GL_MY_TEXTURE menuTextures[NUM_MENU_TEXTURES];
|
||||
class Level
|
||||
{
|
||||
public:
|
||||
Level();
|
||||
~Level();
|
||||
bool LoadMap(string mapname);
|
||||
bool LoadMap();
|
||||
void SaveMap(string mapname);
|
||||
bool LoadConfig(string cfgname);
|
||||
void LoadConfig();
|
||||
void SaveConfig(string cfgname);
|
||||
void Execute(string cmd);
|
||||
void LoadGLTextures();
|
||||
void Render();
|
||||
void UnloadMap();
|
||||
void UpdateConsole(char);
|
||||
uint32 FPS();
|
||||
void ParseCmds(const char*);
|
||||
void Print(int x, int y, const char* string, unsigned int set);
|
||||
|
||||
/*Not Yet Implemented
|
||||
void PlayerConnect(); // implement later
|
||||
void PlayerDisconnect(); // implement later
|
||||
*/
|
||||
Screen screen;
|
||||
Font glFont;
|
||||
string nextLevel;
|
||||
Player* defaultPlayer;
|
||||
uint32 numTextures;
|
||||
string* textureNames;
|
||||
|
||||
string bgm;
|
||||
#ifdef WIN32
|
||||
HSTREAM bgmStream;
|
||||
#endif
|
||||
unsigned char bgmCDA;
|
||||
string gamedir;
|
||||
float gravity;
|
||||
bool mlook;
|
||||
bool showFPS;
|
||||
bool showConsole;
|
||||
bool sound;
|
||||
float turnSpeed;
|
||||
float moveSpeed;
|
||||
float mouseSpeed;
|
||||
unsigned char maxFPS;
|
||||
//Map
|
||||
Triangle* triangles;
|
||||
uint32 numTriangles;
|
||||
list<Player> players;
|
||||
list<ENTITY> ents;
|
||||
//list<GL_MY_TEXTURE> textures;
|
||||
Texture* textures;
|
||||
Texture menuTextures[NUM_MENU_TEXTURES];
|
||||
|
||||
|
||||
|
||||
private:
|
||||
void ConsolePrint(string);
|
||||
string consoleHistory[MAX_CONSOLE_HISTORY_LINES];
|
||||
string consoleOutput[MAX_CONSOLE_OUTPUT_LINES];
|
||||
string outputText[MAX_OUTPUT_TEXT_LINES];
|
||||
private:
|
||||
void ConsolePrint(string);
|
||||
string consoleHistory[MAX_CONSOLE_HISTORY_LINES];
|
||||
string consoleOutput[MAX_CONSOLE_OUTPUT_LINES];
|
||||
string outputText[MAX_OUTPUT_TEXT_LINES];
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -22,8 +22,11 @@ using namespace std;
|
||||
static HINSTANCE hInstance; // Application instance
|
||||
#endif
|
||||
extern OpenArena::Window g_Screen;
|
||||
int InitGL(GLvoid);
|
||||
|
||||
bool LoadGLTexture(string , GLuint&, GLuint = GL_LINEAR, GLuint = GL_LINEAR);
|
||||
void FreeGLTexture(GLuint&);
|
||||
//This doesn't need to be here I think
|
||||
//int InitGL(GLvoid);
|
||||
namespace OpenArena
|
||||
{
|
||||
bool LoadGLTexture(string , GLuint&, GLuint = GL_LINEAR, GLuint = GL_LINEAR);
|
||||
void FreeGLTexture(GLuint&);
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -3,27 +3,29 @@
|
||||
|
||||
#include "mygl.h"
|
||||
|
||||
class GLFontClass
|
||||
namespace OpenArena
|
||||
{
|
||||
private:
|
||||
short screenWidth;
|
||||
short screenHeight;
|
||||
unsigned int base;
|
||||
unsigned int texture;
|
||||
bool status;
|
||||
class Font
|
||||
{
|
||||
private:
|
||||
short screenWidth;
|
||||
short screenHeight;
|
||||
unsigned int base;
|
||||
unsigned int texture;
|
||||
bool status;
|
||||
|
||||
public:
|
||||
GLFontClass();
|
||||
~GLFontClass();
|
||||
bool BuildFont(const char*);
|
||||
bool FreeFont();
|
||||
void Print(int, int, const char*, unsigned int = 0);
|
||||
bool Loaded();
|
||||
void SetScreenDimensions(short, short);
|
||||
void SetScreenWidth(short);
|
||||
void SetScreenHeight(short);
|
||||
short ScreenWidth();
|
||||
short ScreenHeight();
|
||||
public:
|
||||
Font();
|
||||
~Font();
|
||||
bool BuildFont(const char*);
|
||||
bool FreeFont();
|
||||
void Print(int, int, const char*, unsigned int = 0);
|
||||
bool Loaded();
|
||||
void SetScreenDimensions(short, short);
|
||||
void SetScreenWidth(short);
|
||||
void SetScreenHeight(short);
|
||||
short ScreenWidth();
|
||||
short ScreenHeight();
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,29 +7,31 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
class GL_MY_TEXTURE
|
||||
namespace OpenArena
|
||||
{
|
||||
public:
|
||||
GL_MY_TEXTURE();
|
||||
~GL_MY_TEXTURE();
|
||||
string Filename();
|
||||
GLuint ID();
|
||||
bool Load(string filename);
|
||||
bool Load(string filename, GLuint min, GLuint mag);
|
||||
void Free();
|
||||
bool Loaded();
|
||||
bool operator<(const GL_MY_TEXTURE&);
|
||||
bool operator<=(const GL_MY_TEXTURE&);
|
||||
bool operator==(const GL_MY_TEXTURE&);
|
||||
bool operator!=(const GL_MY_TEXTURE&);
|
||||
bool operator>=(const GL_MY_TEXTURE&);
|
||||
bool operator>(const GL_MY_TEXTURE&);
|
||||
class Texture
|
||||
{
|
||||
public:
|
||||
Texture();
|
||||
~Texture();
|
||||
string Filename();
|
||||
GLuint ID();
|
||||
bool Load(string filename);
|
||||
bool Load(string filename, GLuint min, GLuint mag);
|
||||
void Free();
|
||||
bool Loaded();
|
||||
bool operator<(const Texture&);
|
||||
bool operator<=(const Texture&);
|
||||
bool operator==(const Texture&);
|
||||
bool operator!=(const Texture&);
|
||||
bool operator>=(const Texture&);
|
||||
bool operator>(const Texture&);
|
||||
|
||||
private:
|
||||
GLuint minFilter;
|
||||
GLuint magFilter;
|
||||
string filename;
|
||||
GLuint id;
|
||||
private:
|
||||
GLuint minFilter;
|
||||
GLuint magFilter;
|
||||
string filename;
|
||||
GLuint id;
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -4,23 +4,25 @@
|
||||
#include "camera.h"
|
||||
#include "ctrls.h"
|
||||
|
||||
class PLAYER
|
||||
namespace OpenArena
|
||||
{
|
||||
public:
|
||||
void Load();
|
||||
void Save();
|
||||
void CreateCharacter();
|
||||
//void FirePrimary(ENTITY& ent);
|
||||
//void FireSecondary();
|
||||
void AddItem(unsigned int item);
|
||||
void RemoveItem(unsigned int item);
|
||||
class Player
|
||||
{
|
||||
public:
|
||||
void Load();
|
||||
void Save();
|
||||
void CreateCharacter();
|
||||
//void FirePrimary(ENTITY& ent);
|
||||
//void FireSecondary();
|
||||
void AddItem(unsigned int item);
|
||||
void RemoveItem(unsigned int item);
|
||||
|
||||
ControlSchemeClass controls;
|
||||
CameraClass camera;
|
||||
ControlSchemeClass controls;
|
||||
Camera camera;
|
||||
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,26 +3,27 @@
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
class SCREEN
|
||||
namespace OpenArena
|
||||
{
|
||||
public:
|
||||
SCREEN()
|
||||
class Screen
|
||||
{
|
||||
width=640;
|
||||
height=480;
|
||||
bpp=16;
|
||||
fullscreen=false;
|
||||
name = "";
|
||||
}
|
||||
public:
|
||||
Screen()
|
||||
{
|
||||
width=640;
|
||||
height=480;
|
||||
bpp=16;
|
||||
fullscreen=false;
|
||||
name = "";
|
||||
}
|
||||
|
||||
short width;
|
||||
short height;
|
||||
char bpp;
|
||||
bool fullscreen;
|
||||
string name;
|
||||
short width;
|
||||
short height;
|
||||
char bpp;
|
||||
bool fullscreen;
|
||||
string name;
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#ifndef __texture_h__
|
||||
#define __texture_h__
|
||||
|
||||
struct TextureImage
|
||||
class TextureImage
|
||||
{
|
||||
public:
|
||||
unsigned char* data;
|
||||
unsigned int bpp;
|
||||
unsigned int sizeX;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenArena
|
||||
typedef void (*ResizeFunc)(GLsizei width, GLsizei height);
|
||||
typedef int (*InitFunc)();
|
||||
|
||||
class Window: public SCREEN
|
||||
class Window: public Screen
|
||||
{
|
||||
public:
|
||||
Window();
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
#include "level.h"
|
||||
|
||||
static LEVEL level;
|
||||
static OpenArena::Level level;
|
||||
|
||||
#endif
|
||||
|
||||
255
src/camera.cpp
255
src/camera.cpp
@@ -10,8 +10,8 @@
|
||||
// To implement an OpenGL Camera
|
||||
//
|
||||
// Summary of Methods:
|
||||
// CameraClass
|
||||
// -CameraClass();
|
||||
// Camera
|
||||
// -Camera();
|
||||
// Initalize PDM's. Sets position to 0,0,0 up to 0,1,0 and view to 0,0,-1
|
||||
// -Vec3f Position();
|
||||
// Returns a copy of the position vector.
|
||||
@@ -29,7 +29,7 @@
|
||||
// Sets the position, up, and view vectors to those passed in.
|
||||
// -void RotateView(double angle, double X, double Y, double Z);
|
||||
// Rotates the view angle degrees on the axis specified by X, Y, and Z.
|
||||
// -void SetViewByMouse(SCREEN g_Screen);
|
||||
// -void SetViewByMouse(Screen g_Screen);
|
||||
// Rotates the pitch and yaw of the view based on the mouse.
|
||||
// -void RotateAroundPoint(double angle, double X, double Y, double Z, Vec3f vCenter);
|
||||
// Rotates the view angle degrees around a point vCenter on the axis specified by X, Y, Z.
|
||||
@@ -46,148 +46,151 @@
|
||||
|
||||
#include "../include/camera.h"
|
||||
|
||||
CameraClass::CameraClass()
|
||||
namespace OpenArena
|
||||
{
|
||||
m_vPosition = Vec3f(0,0,0);
|
||||
m_vView = Vec3f(0,0,-1);
|
||||
m_vUpVector = Vec3f(0,1,0);
|
||||
}
|
||||
|
||||
void CameraClass::PositionCamera(double xpos, double ypos, double zpos,
|
||||
double xview, double yview, double zview,
|
||||
double xup, double yup, double zup)
|
||||
{
|
||||
m_vPosition = Vec3f(xpos, ypos, zpos);
|
||||
m_vView = Vec3f(xview, yview, zview);
|
||||
m_vUpVector = Vec3f(xup, yup, zup);
|
||||
}
|
||||
|
||||
void CameraClass::PositionCamera(Vec3f pos, Vec3f view, Vec3f up)
|
||||
{
|
||||
m_vPosition = pos;
|
||||
m_vView = view;
|
||||
m_vUpVector = up;
|
||||
}
|
||||
|
||||
void CameraClass::SetViewByMouse(SCREEN g_Screen)
|
||||
{
|
||||
//Most of this is sorta right for linux I think but since I don't know how yet it's currently windows only
|
||||
#ifdef WIN32
|
||||
static double currentRotX = 0.0f;
|
||||
POINT mpos;
|
||||
POINT middle;
|
||||
|
||||
double angleZ;
|
||||
|
||||
middle.x = g_Screen.width / 2;
|
||||
middle.y = g_Screen.height / 2;
|
||||
|
||||
GetCursorPos(&mpos);
|
||||
SetCursorPos(middle.x, middle.y);
|
||||
|
||||
if(mpos.x != middle.x || mpos.y != middle.y)
|
||||
Camera::Camera()
|
||||
{
|
||||
angleZ = double(middle.y - mpos.y) / 1000.0f;
|
||||
currentRotX -= angleZ;
|
||||
|
||||
if(currentRotX > 1.0f)
|
||||
currentRotX = 1.0f;
|
||||
else if(currentRotX < -1.0f)
|
||||
currentRotX = -1.0f;
|
||||
else
|
||||
{
|
||||
Vec3f axis = (m_vView - m_vPosition).cross(m_vUpVector);
|
||||
axis.normalize();
|
||||
|
||||
RotateView(angleZ, axis.x, axis.y, axis.z);
|
||||
|
||||
//need to switch these two when I figure out stuff for flight
|
||||
//till then I think the first is faster
|
||||
|
||||
RotateView(double(middle.x - mpos.x) / 1000.0f, 0, 1, 0);
|
||||
//RotateView(double(middle.x - mpos.x) / 1000.0f, m_vUpVector.x, m_vUpVector.y, m_vUpVector.z);
|
||||
}
|
||||
m_vPosition = Vec3f(0,0,0);
|
||||
m_vView = Vec3f(0,0,-1);
|
||||
m_vUpVector = Vec3f(0,1,0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void CameraClass::MoveCamera(double speed)
|
||||
{
|
||||
Vec3f heading = (m_vView - m_vPosition).normalized();
|
||||
void Camera::PositionCamera(double xpos, double ypos, double zpos,
|
||||
double xview, double yview, double zview,
|
||||
double xup, double yup, double zup)
|
||||
{
|
||||
m_vPosition = Vec3f(xpos, ypos, zpos);
|
||||
m_vView = Vec3f(xview, yview, zview);
|
||||
m_vUpVector = Vec3f(xup, yup, zup);
|
||||
}
|
||||
|
||||
m_vPosition.x += heading.x * speed;
|
||||
m_vPosition.z += heading.z * speed;
|
||||
m_vView.x += heading.x * speed;
|
||||
m_vView.z += heading.z * speed;
|
||||
}
|
||||
void Camera::PositionCamera(Vec3f pos, Vec3f view, Vec3f up)
|
||||
{
|
||||
m_vPosition = pos;
|
||||
m_vView = view;
|
||||
m_vUpVector = up;
|
||||
}
|
||||
|
||||
void CameraClass::RotateView(double angle, double x, double y, double z)
|
||||
{
|
||||
Vec3f nView;
|
||||
Vec3f cView;
|
||||
void Camera::SetViewByMouse(Screen g_Screen)
|
||||
{
|
||||
//Most of this is sorta right for linux I think but since I don't know how yet it's currently windows only
|
||||
#ifdef WIN32
|
||||
static double currentRotX = 0.0f;
|
||||
POINT mpos;
|
||||
POINT middle;
|
||||
|
||||
cView = m_vView - m_vPosition;
|
||||
double angleZ;
|
||||
|
||||
double cosTheta = cos(angle);
|
||||
double sinTheta = sin(angle);
|
||||
middle.x = g_Screen.width / 2;
|
||||
middle.y = g_Screen.height / 2;
|
||||
|
||||
nView.x = (cosTheta + (1 - cosTheta) * x * x) * cView.x +
|
||||
((1 - cosTheta) * x * y - z * sinTheta) * cView.y +
|
||||
((1 - cosTheta) * x * z + y * sinTheta) * cView.z;
|
||||
GetCursorPos(&mpos);
|
||||
SetCursorPos(middle.x, middle.y);
|
||||
|
||||
nView.y = (cosTheta + (1 - cosTheta) * y * y) * cView.y +
|
||||
((1- cosTheta) * x * y + z * sinTheta) * cView.x +
|
||||
((1 - cosTheta) * y * z - x * sinTheta) * cView.z;
|
||||
if(mpos.x != middle.x || mpos.y != middle.y)
|
||||
{
|
||||
angleZ = double(middle.y - mpos.y) / 1000.0f;
|
||||
currentRotX -= angleZ;
|
||||
|
||||
nView.z = (cosTheta + (1 - cosTheta) * z * z) * cView.z+
|
||||
((1 - cosTheta) * x * z - y * sinTheta) * cView.x +
|
||||
((1 - cosTheta) * y * z + x * sinTheta) * cView.y;
|
||||
if(currentRotX > 1.0f)
|
||||
currentRotX = 1.0f;
|
||||
else if(currentRotX < -1.0f)
|
||||
currentRotX = -1.0f;
|
||||
else
|
||||
{
|
||||
Vec3f axis = (m_vView - m_vPosition).cross(m_vUpVector);
|
||||
axis.normalize();
|
||||
|
||||
m_vView.x = m_vPosition.x + nView.x;
|
||||
m_vView.y = m_vPosition.y + nView.y;
|
||||
m_vView.z = m_vPosition.z + nView.z;
|
||||
}
|
||||
RotateView(angleZ, axis.x, axis.y, axis.z);
|
||||
|
||||
void CameraClass::StrafeCamera(double speed)
|
||||
{
|
||||
m_vPosition.x += m_vStrafe.x * speed;
|
||||
m_vPosition.z += m_vStrafe.z * speed;
|
||||
m_vView.x += m_vStrafe.x * speed;
|
||||
m_vView.z += m_vStrafe.z * speed;
|
||||
}
|
||||
//need to switch these two when I figure out stuff for flight
|
||||
//till then I think the first is faster
|
||||
|
||||
RotateView(double(middle.x - mpos.x) / 1000.0f, 0, 1, 0);
|
||||
//RotateView(double(middle.x - mpos.x) / 1000.0f, m_vUpVector.x, m_vUpVector.y, m_vUpVector.z);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void Camera::MoveCamera(double speed)
|
||||
{
|
||||
Vec3f heading = (m_vView - m_vPosition).normalized();
|
||||
|
||||
m_vPosition.x += heading.x * speed;
|
||||
m_vPosition.z += heading.z * speed;
|
||||
m_vView.x += heading.x * speed;
|
||||
m_vView.z += heading.z * speed;
|
||||
}
|
||||
|
||||
void Camera::RotateView(double angle, double x, double y, double z)
|
||||
{
|
||||
Vec3f nView;
|
||||
Vec3f cView;
|
||||
|
||||
cView = m_vView - m_vPosition;
|
||||
|
||||
double cosTheta = cos(angle);
|
||||
double sinTheta = sin(angle);
|
||||
|
||||
nView.x = (cosTheta + (1 - cosTheta) * x * x) * cView.x +
|
||||
((1 - cosTheta) * x * y - z * sinTheta) * cView.y +
|
||||
((1 - cosTheta) * x * z + y * sinTheta) * cView.z;
|
||||
|
||||
nView.y = (cosTheta + (1 - cosTheta) * y * y) * cView.y +
|
||||
((1- cosTheta) * x * y + z * sinTheta) * cView.x +
|
||||
((1 - cosTheta) * y * z - x * sinTheta) * cView.z;
|
||||
|
||||
nView.z = (cosTheta + (1 - cosTheta) * z * z) * cView.z+
|
||||
((1 - cosTheta) * x * z - y * sinTheta) * cView.x +
|
||||
((1 - cosTheta) * y * z + x * sinTheta) * cView.y;
|
||||
|
||||
m_vView.x = m_vPosition.x + nView.x;
|
||||
m_vView.y = m_vPosition.y + nView.y;
|
||||
m_vView.z = m_vPosition.z + nView.z;
|
||||
}
|
||||
|
||||
void Camera::StrafeCamera(double speed)
|
||||
{
|
||||
m_vPosition.x += m_vStrafe.x * speed;
|
||||
m_vPosition.z += m_vStrafe.z * speed;
|
||||
m_vView.x += m_vStrafe.x * speed;
|
||||
m_vView.z += m_vStrafe.z * speed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CameraClass::Update()
|
||||
{
|
||||
m_vStrafe =((m_vView - m_vPosition).cross(m_vUpVector)).normalized();
|
||||
//SetViewByMouse(); //TODO take this whole function out asap
|
||||
void Camera::Update()
|
||||
{
|
||||
m_vStrafe =((m_vView - m_vPosition).cross(m_vUpVector)).normalized();
|
||||
//SetViewByMouse(); //TODO take this whole function out asap
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void CameraClass::Look()
|
||||
{
|
||||
gluLookAt(m_vPosition.x, m_vPosition.y, m_vPosition.z,
|
||||
m_vView.x, m_vView.y, m_vView.z,
|
||||
m_vUpVector.x, m_vUpVector.y, m_vUpVector.z);
|
||||
}
|
||||
void Camera::Look()
|
||||
{
|
||||
gluLookAt(m_vPosition.x, m_vPosition.y, m_vPosition.z,
|
||||
m_vView.x, m_vView.y, m_vView.z,
|
||||
m_vUpVector.x, m_vUpVector.y, m_vUpVector.z);
|
||||
}
|
||||
|
||||
Vec3f CameraClass::Position()
|
||||
{
|
||||
return m_vPosition;
|
||||
}
|
||||
Vec3f Camera::Position()
|
||||
{
|
||||
return m_vPosition;
|
||||
}
|
||||
|
||||
Vec3f CameraClass::Strafe()
|
||||
{
|
||||
return m_vStrafe;
|
||||
}
|
||||
Vec3f Camera::Strafe()
|
||||
{
|
||||
return m_vStrafe;
|
||||
}
|
||||
|
||||
Vec3f CameraClass::UpVector()
|
||||
{
|
||||
return m_vUpVector;
|
||||
}
|
||||
Vec3f Camera::UpVector()
|
||||
{
|
||||
return m_vUpVector;
|
||||
}
|
||||
|
||||
Vec3f CameraClass::View()
|
||||
{
|
||||
return m_vView;
|
||||
}
|
||||
Vec3f Camera::View()
|
||||
{
|
||||
return m_vView;
|
||||
}
|
||||
};
|
||||
|
||||
2263
src/level.cpp
2263
src/level.cpp
File diff suppressed because it is too large
Load Diff
102
src/mygl.cpp
102
src/mygl.cpp
@@ -1,65 +1,67 @@
|
||||
|
||||
#include "../include/mygl.h"
|
||||
|
||||
void FreeGLTexture(GLuint& texture)
|
||||
namespace OpenArena
|
||||
{
|
||||
glDeleteTextures(1, &texture);
|
||||
}
|
||||
|
||||
bool LoadGLTexture(string fn, GLuint& texture, GLuint mag, GLuint min)
|
||||
{
|
||||
if(Right(tolower(fn), 4) == ".bmp")
|
||||
void FreeGLTexture(GLuint& texture)
|
||||
{
|
||||
TextureImage* texImage = NULL;
|
||||
if(texImage = LoadBMP(fn.c_str()))
|
||||
{
|
||||
glGenTextures(1, &texture);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, 3, texImage->sizeX, texImage->sizeY, 0, texImage->type, GL_UNSIGNED_BYTE, texImage->data);
|
||||
glDeleteTextures(1, &texture);
|
||||
}
|
||||
|
||||
if(texImage) //Just in case somehow the file was empty or unloadable
|
||||
bool LoadGLTexture(string fn, GLuint& texture, GLuint mag, GLuint min)
|
||||
{
|
||||
if(Right(tolower(fn), 4) == ".bmp")
|
||||
{
|
||||
TextureImage* texImage = NULL;
|
||||
if(texImage = LoadBMP(fn.c_str()))
|
||||
{
|
||||
if(texImage->data)
|
||||
free(texImage->data);
|
||||
free(texImage);
|
||||
glGenTextures(1, &texture);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, 3, texImage->sizeX, texImage->sizeY, 0, texImage->type, GL_UNSIGNED_BYTE, texImage->data);
|
||||
|
||||
if(texImage) //Just in case somehow the file was empty or unloadable
|
||||
{
|
||||
if(texImage->data)
|
||||
free(texImage->data);
|
||||
free(texImage);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if(Right(tolower(fn), 4) == ".tga")
|
||||
{
|
||||
TextureImage* texImage = NULL;
|
||||
if(texImage = LoadTGA(fn.c_str()))
|
||||
{
|
||||
glGenTextures(1, &texture);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, 3, texImage->sizeX, texImage->sizeY, 0, texImage->type, GL_UNSIGNED_BYTE, texImage->data);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
if(texImage) //Just in case somehow the file was empty or unloadable
|
||||
{
|
||||
if(texImage->data)
|
||||
free(texImage->data);
|
||||
free(texImage);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if(Right(tolower(fn), 4) == ".tga")
|
||||
{
|
||||
TextureImage* texImage = NULL;
|
||||
if(texImage = LoadTGA(fn.c_str()))
|
||||
{
|
||||
glGenTextures(1, &texture);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, 3, texImage->sizeX, texImage->sizeY, 0, texImage->type, GL_UNSIGNED_BYTE, texImage->data);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
if(texImage) //Just in case somehow the file was empty or unloadable
|
||||
{
|
||||
if(texImage->data)
|
||||
free(texImage->data);
|
||||
free(texImage);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
OpenArena::Window g_Screen;
|
||||
|
||||
197
src/myglFont.cpp
197
src/myglFont.cpp
@@ -25,118 +25,121 @@
|
||||
|
||||
#include "../include/myglFont.h"
|
||||
|
||||
GLFontClass::GLFontClass()
|
||||
namespace OpenArena
|
||||
{
|
||||
status = 0;
|
||||
base = 0;
|
||||
texture = 0;
|
||||
screenWidth = 1;
|
||||
screenHeight = 1;
|
||||
}
|
||||
|
||||
GLFontClass::~GLFontClass()
|
||||
{
|
||||
FreeFont();
|
||||
}
|
||||
|
||||
bool GLFontClass::BuildFont(const char* texName)
|
||||
{
|
||||
FreeFont();
|
||||
|
||||
if(LoadGLTexture(texName, texture, GL_NEAREST, GL_NEAREST))
|
||||
Font::Font()
|
||||
{
|
||||
float x, y;
|
||||
base = glGenLists(256);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
for(short i = 0; i<256; i++)
|
||||
status = 0;
|
||||
base = 0;
|
||||
texture = 0;
|
||||
screenWidth = 1;
|
||||
screenHeight = 1;
|
||||
}
|
||||
|
||||
Font::~Font()
|
||||
{
|
||||
FreeFont();
|
||||
}
|
||||
|
||||
bool Font::BuildFont(const char* texName)
|
||||
{
|
||||
FreeFont();
|
||||
|
||||
if(LoadGLTexture(texName, texture, GL_NEAREST, GL_NEAREST))
|
||||
{
|
||||
x = i%16/16.0f;
|
||||
y = i/16/16.0f;
|
||||
glNewList(base+i, GL_COMPILE);
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f(x, 1-y-0.0625f);
|
||||
glVertex2i(0,0);
|
||||
glTexCoord2f(x+0.0625f, 1-y-0.0625f);
|
||||
glVertex2i(16,0);
|
||||
glTexCoord2f(x+0.0625f, 1-y);
|
||||
glVertex2i(16,16);
|
||||
glTexCoord2f(x, 1-y);
|
||||
glVertex2i(0,16);
|
||||
glEnd();
|
||||
glTranslated(16,0,0);
|
||||
glEndList();
|
||||
float x, y;
|
||||
base = glGenLists(256);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
for(short i = 0; i<256; i++)
|
||||
{
|
||||
x = i%16/16.0f;
|
||||
y = i/16/16.0f;
|
||||
glNewList(base+i, GL_COMPILE);
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f(x, 1-y-0.0625f);
|
||||
glVertex2i(0,0);
|
||||
glTexCoord2f(x+0.0625f, 1-y-0.0625f);
|
||||
glVertex2i(16,0);
|
||||
glTexCoord2f(x+0.0625f, 1-y);
|
||||
glVertex2i(16,16);
|
||||
glTexCoord2f(x, 1-y);
|
||||
glVertex2i(0,16);
|
||||
glEnd();
|
||||
glTranslated(16,0,0);
|
||||
glEndList();
|
||||
}
|
||||
status = true;
|
||||
}
|
||||
status = true;
|
||||
return status;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
bool GLFontClass::FreeFont()
|
||||
{
|
||||
if(status)
|
||||
bool Font::FreeFont()
|
||||
{
|
||||
glDeleteLists(base, 256);
|
||||
status = false;
|
||||
if(status)
|
||||
{
|
||||
glDeleteLists(base, 256);
|
||||
status = false;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
void GLFontClass::Print(int x, int y, const char* str, unsigned int set)
|
||||
{
|
||||
if(status)
|
||||
void Font::Print(int x, int y, const char* str, unsigned int set)
|
||||
{
|
||||
if(set>1)
|
||||
set = 1;
|
||||
if(status)
|
||||
{
|
||||
if(set>1)
|
||||
set = 1;
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
//glDisable(GL_DEPTH_TEST);
|
||||
//glEnable(GL_BLEND);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho(0,screenWidth,0,screenHeight,-1,1);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glTranslated(x, y, 0);
|
||||
glListBase(base-32+(128*set));
|
||||
glCallLists(strlen(str), GL_BYTE, str);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPopMatrix();
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
//glDisable(GL_BLEND);
|
||||
//glEnable(GL_DEPTH_TEST);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
//glDisable(GL_DEPTH_TEST);
|
||||
//glEnable(GL_BLEND);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho(0,screenWidth,0,screenHeight,-1,1);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glTranslated(x, y, 0);
|
||||
glListBase(base-32+(128*set));
|
||||
glCallLists(strlen(str), GL_BYTE, str);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPopMatrix();
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
//glDisable(GL_BLEND);
|
||||
//glEnable(GL_DEPTH_TEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool GLFontClass::Loaded()
|
||||
{
|
||||
return status;
|
||||
}
|
||||
bool Font::Loaded()
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
void GLFontClass::SetScreenDimensions(short x, short y)
|
||||
{
|
||||
screenWidth = x;
|
||||
screenHeight = y;
|
||||
}
|
||||
void Font::SetScreenDimensions(short x, short y)
|
||||
{
|
||||
screenWidth = x;
|
||||
screenHeight = y;
|
||||
}
|
||||
|
||||
void GLFontClass::SetScreenWidth(short x)
|
||||
{
|
||||
screenWidth = x;
|
||||
}
|
||||
void Font::SetScreenWidth(short x)
|
||||
{
|
||||
screenWidth = x;
|
||||
}
|
||||
|
||||
void GLFontClass::SetScreenHeight(short y)
|
||||
{
|
||||
screenHeight = y;
|
||||
}
|
||||
void Font::SetScreenHeight(short y)
|
||||
{
|
||||
screenHeight = y;
|
||||
}
|
||||
|
||||
short GLFontClass::ScreenWidth()
|
||||
{
|
||||
return screenWidth;
|
||||
}
|
||||
short Font::ScreenWidth()
|
||||
{
|
||||
return screenWidth;
|
||||
}
|
||||
|
||||
short GLFontClass::ScreenHeight()
|
||||
{
|
||||
return screenHeight;
|
||||
}
|
||||
short Font::ScreenHeight()
|
||||
{
|
||||
return screenHeight;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,107 +1,111 @@
|
||||
#include "../include/myglTexture.h"
|
||||
using namespace OpenArena;
|
||||
|
||||
GL_MY_TEXTURE::GL_MY_TEXTURE()
|
||||
namespace OpenArena
|
||||
{
|
||||
id=0xFFFFFFFF;
|
||||
filename = "";
|
||||
minFilter = GL_LINEAR;
|
||||
magFilter = GL_LINEAR;
|
||||
}
|
||||
|
||||
GL_MY_TEXTURE::~GL_MY_TEXTURE()
|
||||
{
|
||||
Free();
|
||||
}
|
||||
|
||||
string GL_MY_TEXTURE::Filename()
|
||||
{
|
||||
return filename;
|
||||
}
|
||||
|
||||
GLuint GL_MY_TEXTURE::ID()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::Loaded()
|
||||
{
|
||||
return filename != "";
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::Load(string fn)
|
||||
{
|
||||
if(Loaded())
|
||||
Free();
|
||||
|
||||
if(LoadGLTexture(fn.c_str(), id, minFilter, magFilter))
|
||||
{
|
||||
filename = fn;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
Texture::Texture()
|
||||
{
|
||||
id=0xFFFFFFFF;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::Load(string fn, GLuint min, GLuint mag)
|
||||
{
|
||||
if(Loaded())
|
||||
Free();
|
||||
|
||||
if(LoadGLTexture(fn.c_str(), id, min, mag))
|
||||
{
|
||||
filename = fn;
|
||||
minFilter = min;
|
||||
magFilter = mag;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
id=0xFFFFFFFF;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void GL_MY_TEXTURE::Free()
|
||||
{
|
||||
if(Loaded())
|
||||
{
|
||||
FreeGLTexture(id);
|
||||
filename = "";
|
||||
minFilter = GL_LINEAR;
|
||||
magFilter = GL_LINEAR;
|
||||
filename = "";
|
||||
id = 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::operator<(const GL_MY_TEXTURE& rtOp)
|
||||
{
|
||||
return id<rtOp.id;
|
||||
}
|
||||
Texture::~Texture()
|
||||
{
|
||||
Free();
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::operator<=(const GL_MY_TEXTURE& rtOp)
|
||||
{
|
||||
return id<=rtOp.id;
|
||||
}
|
||||
string Texture::Filename()
|
||||
{
|
||||
return filename;
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::operator==(const GL_MY_TEXTURE& rtOp)
|
||||
{
|
||||
return id==rtOp.id;
|
||||
}
|
||||
GLuint Texture::ID()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::operator!=(const GL_MY_TEXTURE& rtOp)
|
||||
{
|
||||
return id!=rtOp.id;
|
||||
}
|
||||
bool Texture::Loaded()
|
||||
{
|
||||
return filename != "";
|
||||
}
|
||||
|
||||
bool GL_MY_TEXTURE::operator>=(const GL_MY_TEXTURE& rtOp)
|
||||
{
|
||||
return id>=rtOp.id;
|
||||
}
|
||||
bool Texture::Load(string fn)
|
||||
{
|
||||
if(Loaded())
|
||||
Free();
|
||||
|
||||
bool GL_MY_TEXTURE::operator>(const GL_MY_TEXTURE& rtOp)
|
||||
{
|
||||
return id>rtOp.id;
|
||||
}
|
||||
if(LoadGLTexture(fn.c_str(), id, minFilter, magFilter))
|
||||
{
|
||||
filename = fn;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
id=0xFFFFFFFF;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool Texture::Load(string fn, GLuint min, GLuint mag)
|
||||
{
|
||||
if(Loaded())
|
||||
Free();
|
||||
|
||||
if(LoadGLTexture(fn.c_str(), id, min, mag))
|
||||
{
|
||||
filename = fn;
|
||||
minFilter = min;
|
||||
magFilter = mag;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
id=0xFFFFFFFF;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void Texture::Free()
|
||||
{
|
||||
if(Loaded())
|
||||
{
|
||||
FreeGLTexture(id);
|
||||
minFilter = GL_LINEAR;
|
||||
magFilter = GL_LINEAR;
|
||||
filename = "";
|
||||
id = 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
bool Texture::operator<(const Texture& rtOp)
|
||||
{
|
||||
return id<rtOp.id;
|
||||
}
|
||||
|
||||
bool Texture::operator<=(const Texture& rtOp)
|
||||
{
|
||||
return id<=rtOp.id;
|
||||
}
|
||||
|
||||
bool Texture::operator==(const Texture& rtOp)
|
||||
{
|
||||
return id==rtOp.id;
|
||||
}
|
||||
|
||||
bool Texture::operator!=(const Texture& rtOp)
|
||||
{
|
||||
return id!=rtOp.id;
|
||||
}
|
||||
|
||||
bool Texture::operator>=(const Texture& rtOp)
|
||||
{
|
||||
return id>=rtOp.id;
|
||||
}
|
||||
|
||||
bool Texture::operator>(const Texture& rtOp)
|
||||
{
|
||||
return id>rtOp.id;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
#include "../include/player.h"
|
||||
|
||||
void PLAYER::Load()
|
||||
namespace OpenArena
|
||||
{
|
||||
}
|
||||
void Player::Load()
|
||||
{
|
||||
}
|
||||
|
||||
void PLAYER::Save()
|
||||
{
|
||||
}
|
||||
void Player::Save()
|
||||
{
|
||||
}
|
||||
|
||||
void PLAYER::AddItem(unsigned int item)
|
||||
{
|
||||
// inventory = inventory | item;
|
||||
}
|
||||
void Player::AddItem(unsigned int item)
|
||||
{
|
||||
// inventory = inventory | item;
|
||||
}
|
||||
|
||||
void PLAYER::RemoveItem(unsigned int item)
|
||||
{
|
||||
// inventory = inventory & ~item;
|
||||
}
|
||||
void Player::RemoveItem(unsigned int item)
|
||||
{
|
||||
// inventory = inventory & ~item;
|
||||
}
|
||||
|
||||
void PLAYER::CreateCharacter()
|
||||
{
|
||||
}
|
||||
void Player::CreateCharacter()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user