From 8bb223e67955904c14e26a980927d313272ed22b Mon Sep 17 00:00:00 2001 From: Piotr Dziwinski Date: Fri, 22 Jun 2012 16:31:55 +0200 Subject: Templates for new implementation - added template of classes/structs for new implementation - changed #include paths - updated README files --- src/graphics/common/README.txt | 5 + src/graphics/common/camera.cpp | 23 ++ src/graphics/common/camera.h | 27 ++ src/graphics/common/cloud.cpp | 23 ++ src/graphics/common/cloud.h | 27 ++ src/graphics/common/color.cpp | 44 +-- src/graphics/common/color.h | 19 +- src/graphics/common/engine.cpp | 23 ++ src/graphics/common/engine.h | 712 ++++++++++++++++++++++++++++++++++++++ src/graphics/common/light.cpp | 22 ++ src/graphics/common/light.h | 108 ++++++ src/graphics/common/lightning.cpp | 23 ++ src/graphics/common/lightning.h | 27 ++ src/graphics/common/material.h | 26 ++ src/graphics/common/model.cpp | 23 ++ src/graphics/common/model.h | 27 ++ src/graphics/common/particle.cpp | 23 ++ src/graphics/common/particle.h | 27 ++ src/graphics/common/planet.cpp | 23 ++ src/graphics/common/planet.h | 27 ++ src/graphics/common/pyro.cpp | 23 ++ src/graphics/common/pyro.h | 27 ++ src/graphics/common/terrain.cpp | 23 ++ src/graphics/common/terrain.h | 27 ++ src/graphics/common/text.cpp | 23 ++ src/graphics/common/text.h | 27 ++ src/graphics/common/vertex.h | 21 +- src/graphics/common/water.cpp | 23 ++ src/graphics/common/water.h | 27 ++ 29 files changed, 1450 insertions(+), 30 deletions(-) create mode 100644 src/graphics/common/README.txt create mode 100644 src/graphics/common/camera.cpp create mode 100644 src/graphics/common/camera.h create mode 100644 src/graphics/common/cloud.cpp create mode 100644 src/graphics/common/cloud.h create mode 100644 src/graphics/common/engine.cpp create mode 100644 src/graphics/common/engine.h create mode 100644 src/graphics/common/light.cpp create mode 100644 src/graphics/common/light.h create mode 100644 src/graphics/common/lightning.cpp create mode 100644 src/graphics/common/lightning.h create mode 100644 src/graphics/common/material.h create mode 100644 src/graphics/common/model.cpp create mode 100644 src/graphics/common/model.h create mode 100644 src/graphics/common/particle.cpp create mode 100644 src/graphics/common/particle.h create mode 100644 src/graphics/common/planet.cpp create mode 100644 src/graphics/common/planet.h create mode 100644 src/graphics/common/pyro.cpp create mode 100644 src/graphics/common/pyro.h create mode 100644 src/graphics/common/terrain.cpp create mode 100644 src/graphics/common/terrain.h create mode 100644 src/graphics/common/text.cpp create mode 100644 src/graphics/common/text.h create mode 100644 src/graphics/common/water.cpp create mode 100644 src/graphics/common/water.h (limited to 'src/graphics/common') diff --git a/src/graphics/common/README.txt b/src/graphics/common/README.txt new file mode 100644 index 0000000..495a453 --- /dev/null +++ b/src/graphics/common/README.txt @@ -0,0 +1,5 @@ +src/graphics/common + +Universal structs and classes used in graphics engine + +Concrete implementation in OpenGL is in graphics/opengl directory. diff --git a/src/graphics/common/camera.cpp b/src/graphics/common/camera.cpp new file mode 100644 index 0000000..9990d01 --- /dev/null +++ b/src/graphics/common/camera.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// camera.cpp + +#include "graphics/common/camera.h" + + +// TODO implementation diff --git a/src/graphics/common/camera.h b/src/graphics/common/camera.h new file mode 100644 index 0000000..14838ba --- /dev/null +++ b/src/graphics/common/camera.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// camera.h + +#pragma once + + +namespace Gfx { + +// TODO CCamera + +}; // namespace Gfx diff --git a/src/graphics/common/cloud.cpp b/src/graphics/common/cloud.cpp new file mode 100644 index 0000000..707f641 --- /dev/null +++ b/src/graphics/common/cloud.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// cloud.cpp + +#include "graphics/common/cloud.h" + + +// TODO implementation diff --git a/src/graphics/common/cloud.h b/src/graphics/common/cloud.h new file mode 100644 index 0000000..3e190ec --- /dev/null +++ b/src/graphics/common/cloud.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// cloud.h + +#pragma once + + +namespace Gfx { + +// TODO CCloud + +}; // namespace Gfx diff --git a/src/graphics/common/color.cpp b/src/graphics/common/color.cpp index 1741f04..dd502f9 100644 --- a/src/graphics/common/color.cpp +++ b/src/graphics/common/color.cpp @@ -18,64 +18,66 @@ #include "graphics/common/color.h" +#include "math/func.h" + // Returns the color corresponding long. long Gfx::RetColor(float intensity) { long color; - + if ( intensity <= 0.0f ) return 0x00000000; if ( intensity >= 1.0f ) return 0xffffffff; - + color = (int)(intensity*255.0f)<<24; color |= (int)(intensity*255.0f)<<16; color |= (int)(intensity*255.0f)<<8; color |= (int)(intensity*255.0f); - + return color; } // Returns the color corresponding long. -long Gfx::RetColor(Color intensity) +long Gfx::RetColor(Gfx::Color intensity) { long color; - + color = (int)(intensity.a*255.0f)<<24; color |= (int)(intensity.r*255.0f)<<16; color |= (int)(intensity.g*255.0f)<<8; color |= (int)(intensity.b*255.0f); - + return color; } // Returns the color corresponding Color. -Color Gfx::RetColor(long intensity) +Gfx::Color Gfx::RetColor(long intensity) { - Color color; - + Gfx::Color color; + color.r = (float)((intensity>>16)&0xff)/256.0f; color.g = (float)((intensity>>8 )&0xff)/256.0f; color.b = (float)((intensity>>0 )&0xff)/256.0f; color.a = (float)((intensity>>24)&0xff)/256.0f; - + return color; } // RGB to HSV conversion. -void Gfx::RGB2HSV(Color src, ColorHSV &dest) +void Gfx::RGB2HSV(Gfx::Color src, Gfx::ColorHSV &dest) { float min, max, delta; - + min = Math::Min(src.r, src.g, src.b); max = Math::Max(src.r, src.g, src.b); - + dest.v = max; // intensity - + if ( max == 0.0f ) { dest.s = 0.0f; // saturation @@ -85,7 +87,7 @@ void Gfx::RGB2HSV(Color src, ColorHSV &dest) { delta = max-min; dest.s = delta/max; // saturation - + if ( src.r == max ) // between yellow & magenta { dest.h = (src.g-src.b)/delta; @@ -98,7 +100,7 @@ void Gfx::RGB2HSV(Color src, ColorHSV &dest) { dest.h = 4.0f+(src.r-src.g)/delta; } - + dest.h *= 60.0f; // in degrees if ( dest.h < 0.0f ) dest.h += 360.0f; dest.h /= 360.0f; // 0..1 @@ -107,15 +109,15 @@ void Gfx::RGB2HSV(Color src, ColorHSV &dest) // HSV to RGB conversion. -void Gfx::HSV2RGB(ColorHSV src, Color &dest) +void Gfx::HSV2RGB(Gfx::ColorHSV src, Gfx::Color &dest) { int i; float f,v,p,q,t; - + src.h = Math::Norm(src.h)*360.0f; src.s = Math::Norm(src.s); src.v = Math::Norm(src.v); - + if ( src.s == 0.0f ) // zero saturation? { dest.r = src.v; @@ -128,12 +130,12 @@ void Gfx::HSV2RGB(ColorHSV src, Color &dest) src.h /= 60.0f; i = (int)src.h; // integer part (0 .. 5) f = src.h-i; // fractional part - + v = src.v; p = src.v*(1.0f-src.s); q = src.v*(1.0f-(src.s*f)); t = src.v*(1.0f-(src.s*(1.0f-f))); - + switch (i) { case 0: dest.r=v; dest.g=t; dest.b=p; break; diff --git a/src/graphics/common/color.h b/src/graphics/common/color.h index 1f04594..146e515 100644 --- a/src/graphics/common/color.h +++ b/src/graphics/common/color.h @@ -19,20 +19,23 @@ #pragma once -// TODO namespace Gfx { struct Color { - - float r, g, b, a; - + float r, g, b, a; + + Color(float aR = 0.0f, float aG = 0.0f, float aB = 0.0f, float aA = 0.0f) + : r(aR), g(aG), b(aB), a(aA) {} }; struct ColorHSV { - float h,s,v; + float h, s, v; + + ColorHSV(float aH = 0.0f, float aS = 0.0f, float aV = 0.0f) + : h(aH), s(aS), v(aV) {} }; @@ -40,8 +43,8 @@ long RetColor(float intensity); long RetColor(Color intensity); Color RetColor(long intensity); -void RGB2HSV(Color src, ColorHSV &dest); -void HSV2RGB(ColorHSV src, Color &dest); +void RGB2HSV(Color src, ColorHSV &dest); +void HSV2RGB(ColorHSV src, Color &dest); -}; +}; // namespace Gfx diff --git a/src/graphics/common/engine.cpp b/src/graphics/common/engine.cpp new file mode 100644 index 0000000..acd0995 --- /dev/null +++ b/src/graphics/common/engine.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// engine.cpp + +#include "graphics/common/engine.h" + + +// TODO implementation diff --git a/src/graphics/common/engine.h b/src/graphics/common/engine.h new file mode 100644 index 0000000..724ec74 --- /dev/null +++ b/src/graphics/common/engine.h @@ -0,0 +1,712 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// engine.h + +#pragma once + + +#include "math/point.h" +#include "math/vector.h" +#include "math/matrix.h" + + +namespace Gfx { + +/* + +TODO + +class CApplication; +class CInstanceManager; +class CObject; +class CLight; +class CText; +class CParticule; +class CWater; +class CCloud; +class CBlitz; +class CPlanet; +class CSound; +class CTerrain; + + +//const int MAXOBJECT = 1200; +//const int MAXSHADOW = 500; +//const int MAXGROUNDSPOT = 100; + + +enum ObjectType +{ + //! Object doesn't exist + OBJTYPE_NULL = 0, + //! Terrain + OBJTYPE_TERRAIN = 1, + //! Fixed object + OBJTYPE_FIX = 2, + //! Moving object + OBJTYPE_VEHICULE = 3, + //! Part of a moving object + OBJTYPE_DESCENDANT = 4, + //! Fixed object type quartz + OBJTYPE_QUARTZ = 5, + //! Fixed object type metal + OBJTYPE_METAL = 6 +}; + +enum TriangleType +{ + //! triangles + TRIANGLE_TYPE_6T = 1, + //! surfaces + TRIANGLE_TYPE_6S = 2 +}; + +enum Mapping +{ + MAPPING_X = 1, + MAPPING_Y = 2, + MAPPING_Z = 3, + MAPPING_1X = 4, + MAPPING_1Y = 5, + MAPPING_1Z = 6 +}; + +enum MouseType +{ + MOUSE_HIDE = 0, // no mouse + MOUSE_NORM = 1, + MOUSE_WAIT = 2, + MOUSE_EDIT = 3, + MOUSE_HAND = 4, + MOUSE_CROSS = 5, + MOUSE_SHOW = 6, + MOUSE_NO = 7, + MOUSE_MOVE = 8, // + + MOUSE_MOVEH = 9, // - + MOUSE_MOVEV = 10, // | + MOUSE_MOVED = 11, // / + MOUSE_MOVEI = 12, // \ // + MOUSE_SCROLLL = 13, // << + MOUSE_SCROLLR = 14, // >> + MOUSE_SCROLLU = 15, // ^ + MOUSE_SCROLLD = 16, // v + MOUSE_TARGET = 17 +}; + +enum ShadowType +{ + SHADOW_NORM = 0, + SHADOW_WORM = 1 +}; + +enum RenderState +{ + //! Normal opaque materials + RSTATE_NORMAL = 0, + //! The transparent texture (black = no) + RSTATE_TTEXTURE_BLACK = (1<<0), + //! The transparent texture (white = no) + RSTATE_TTEXTURE_WHITE = (1<<1), + //! The transparent diffuse color + RSTATE_TDIFFUSE = (1<<2), + //! Texture wrap + RSTATE_WRAP = (1<<3), + //! Texture borders with solid color + RSTATE_CLAMP = (1<<4), + //! Light texture (ambient max) + RSTATE_LIGHT = (1<<5), + //! Double black texturing + RSTATE_DUAL_BLACK = (1<<6), + //! Double white texturing + RSTATE_DUAL_WHITE = (1<<7), + //! Part 1 (no change in. MOD!) + RSTATE_PART1 = (1<<8), + //! Part 2 + RSTATE_PART2 = (1<<9), + //! Part 3 + RSTATE_PART3 = (1<<10), + //! Part 4 + RSTATE_PART4 = (1<<11), + //! Double-sided face + RSTATE_2FACE = (1<<12), + //! Image using alpha channel + RSTATE_ALPHA = (1<<13), + //! Always use 2nd floor texturing + RSTATE_SECOND = (1<<14), + //! Causes the fog + RSTATE_FOG = (1<<15), + //! The transparent color (black = no) + RSTATE_TCOLOR_BLACK = (1<<16), + //! The transparent color (white = no) + RSTATE_TCOLOR_WHITE = (1<<17) +}; + + +struct Triangle +{ + Gfx::VertexTex2 triangle[3]; + Gfx::Material material; + int state; + char texName1[20]; + char texName2[20]; +}; + + +struct ObjLevel6 +{ + int totalPossible; + int totalUsed; + Gfx::Material material; + int state; + Gfx::TriangleType type; + Math::VertexTex2 vertex[1]; +}; + +struct ObjLevel5 +{ + int totalPossible; + int totalUsed; + int reserve; + Gfx::ObjLevel6* table[1]; +}; + +struct ObjLevel4 +{ + int totalPossible; + int totalUsed; + float min, max; + Gfx::ObjLevel5* table[1]; +}; + +struct ObjLevel3 +{ + int totalPossible; + int totalUsed; + int objRank; + Gfx::ObjLevel4* table[1]; +}; + +struct ObjLevel2 +{ + int totalPossible; + int totalUsed; + char texName1[20]; + char texName2[20]; + Gfx::ObjLevel3* table[1]; +}; + +struct ObjLevel1 +{ + int totalPossible; + int totalUsed; + Gfx::ObjLevel2* table[1]; +}; + + +struct Object +{ + bool used; // true -> object exists + bool visible; // true -> visible object + bool drawWorld; // true -> shape behind the interface + bool drawFront; // true -> shape before the interface + int totalTriangle; // number of triangles used + Gfx::ObjectType type; // type of the object (TYPE*) + Math::Matrix transform; // transformation matrix + float distance; // distance point of view - original + Math::Vector bboxMin; // bounding box of the object + Math::Vector bboxMax; // (the origin 0, 0, 0 is always included) + float radius; // radius of the sphere at the origin + int shadowRank; // rank of the associated shadow + float transparency; // transparency of the object (0 .. 1) +}; + +struct Shadow +{ + bool used; // true -> object exists + bool hide; // true -> invisible shadow (object carried by ex.) + int objRank; // rank of the object + Gfx::ShadowType type; // type of shadow + Math::Vector pos; // position for the shadow + Math::Vector normal; // normal terrain + float angle; // angle of the shadow + float radius; // radius of the shadow + float intensity; // intensity of the shadow + float height; // height from the ground +}; + +struct GroundSpot +{ + bool used; // true -> object exists + Gfx::Color color; // color of the shadow + float min, max; // altitudes min / max + float smooth; // transition area + Math::Vector pos; // position for the shadow + float radius; // radius of the shadow + Math::Vector drawPos; // drawn to position the shade + float drawRadius; // radius of the shadow drawn +}; + +struct GroundMark +{ + bool used; // true -> object exists + bool draw; // true -> drawn mark + int phase; // 1 = increase, 2 = fixed, 3 = decrease + float delay[3]; // time for 3 phases + float fix; // fixed time + Math::Vector pos; // position for marks + float radius; // radius of marks + float intensity; // color intensity + Math::Vector drawPos; // drawn in position marks + float drawRadius; // radius marks drawn + float drawIntensity; // current drawn + int dx, dy; // dimensions table + char* table; // pointer to the table +}; + + + +class CGfxEngine +{ +public: + CGfxEngine(CInstanceManager *iMan, CApplication *app); + ~CGfxEngine(); + + void SetDevice(Gfx::Device *device); + Gfx::Device* RetDevice(); + + void SetTerrain(Gfx::CTerrain* terrain); + + bool WriteProfile(); + + void SetPause(bool bPause); + bool RetPause(); + + void SetMovieLock(bool bLock); + bool RetMovieLock(); + + void SetShowStat(bool bShow); + bool RetShowStat(); + + void SetRenderEnable(bool bEnable); + + int OneTimeSceneInit(); + int InitDeviceObjects(); + int DeleteDeviceObjects(); + int RestoreSurfaces(); + int Render(); + int FrameMove(float rTime); + void StepSimul(float rTime); + int FinalCleanup(); + void AddStatisticTriangle(int nb); + int RetStatisticTriangle(); + void SetHiliteRank(int *rankList); + bool GetHilite(Math::Point &p1, Math::Point &p2); + bool GetSpriteCoord(int &x, int &y); + void SetInfoText(int line, char* text); + char * RetInfoText(int line); + //LRESULT MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + void FirstExecuteAdapt(bool bFirst); + //int GetVidMemTotal(); + //bool IsVideo8MB(); + //bool IsVideo32MB(); + + bool EnumDevices(char *bufDevices, int lenDevices, char *bufModes, int lenModes, int &totalDevices, int &selectDevices, int &totalModes, int &selectModes); + bool RetFullScreen(); + bool ChangeDevice(char *device, char *mode, bool bFull); + + Math::Matrix* RetMatView(); + Math::Matrix* RetMatLeftView(); + Math::Matrix* RetMatRightView(); + + void TimeInit(); + void TimeEnterGel(); + void TimeExitGel(); + float TimeGet(); + + int RetRestCreate(); + int CreateObject(); + void FlushObject(); + bool DeleteObject(int objRank); + bool SetDrawWorld(int objRank, bool bDraw); + bool SetDrawFront(int objRank, bool bDraw); + bool AddTriangle(int objRank, Math::VertexTex2* vertex, int nb, const Gfx::Material &mat, int state, char* texName1, char* texName2, float min, float max, bool bGlobalUpdate); + bool AddSurface(int objRank, Math::VertexTex2* vertex, int nb, const Gfx::Material &mat, int state, char* texName1, char* texName2, float min, float max, bool bGlobalUpdate); + bool AddQuick(int objRank, Gfx::ObjLevel6* buffer, char* texName1, char* texName2, float min, float max, bool bGlobalUpdate); + Gfx::ObjLevel6* SearchTriangle(int objRank, const Gfx::Material &mat, int state, char* texName1, char* texName2, float min, float max); + void ChangeLOD(); + bool ChangeSecondTexture(int objRank, char* texName2); + int RetTotalTriangles(int objRank); + int GetTriangles(int objRank, float min, float max, Gfx::Triangle* buffer, int size, float percent); + bool GetBBox(int objRank, Math::Vector &min, Math::Vector &max); + bool ChangeTextureMapping(int objRank, const Gfx::Material &mat, int state, char* texName1, char* texName2, float min, float max, Gfx::Maping mode, float au, float bu, float av, float bv); + bool TrackTextureMapping(int objRank, const Gfx::Material &mat, int state, char* texName1, char* texName2, float min, float max, Gfx::Maping mode, float pos, float factor, float tl, float ts, float tt); + bool SetObjectTransform(int objRank, const Math::Matrix &transform); + bool GetObjectTransform(int objRank, Math::Matrix &transform); + bool SetObjectType(int objRank, Gfx::ObjectType type); + Gfx::ObjectType RetObjectType(int objRank); + bool SetObjectTransparency(int objRank, float value); + + bool ShadowCreate(int objRank); + void ShadowDelete(int objRank); + bool SetObjectShadowHide(int objRank, bool bHide); + bool SetObjectShadowType(int objRank, Gfx::ShadowType type); + bool SetObjectShadowPos(int objRank, const Math::Vector &pos); + bool SetObjectShadowNormal(int objRank, const Math::Vector &n); + bool SetObjectShadowAngle(int objRank, float angle); + bool SetObjectShadowRadius(int objRank, float radius); + bool SetObjectShadowIntensity(int objRank, float intensity); + bool SetObjectShadowHeight(int objRank, float h); + float RetObjectShadowRadius(int objRank); + + void GroundSpotFlush(); + int GroundSpotCreate(); + void GroundSpotDelete(int rank); + bool SetObjectGroundSpotPos(int rank, const Math::Vector &pos); + bool SetObjectGroundSpotRadius(int rank, float radius); + bool SetObjectGroundSpotColor(int rank, const Gfx::Color &color); + bool SetObjectGroundSpotMinMax(int rank, float min, float max); + bool SetObjectGroundSpotSmooth(int rank, float smooth); + + int GroundMarkCreate(Math::Vector pos, float radius, float delay1, float delay2, float delay3, int dx, int dy, char* table); + bool GroundMarkDelete(int rank); + + void Update(); + + void SetViewParams(const Math::Vector &vEyePt, const Math::Vector &vLookatPt, const Math::Vector &vUpVec, float fEyeDistance); + + bool FreeTexture(char* name); + bool LoadTexture(char* name, int stage=0); + bool LoadAllTexture(); + + void SetLimitLOD(int rank, float limit); + float RetLimitLOD(int rank, bool bLast=false); + + void SetTerrainVision(float vision); + + void SetGroundSpot(bool bMode); + bool RetGroundSpot(); + void SetShadow(bool bMode); + bool RetShadow(); + void SetDirty(bool bMode); + bool RetDirty(); + void SetFog(bool bMode); + bool RetFog(); + bool RetStateColor(); + + void SetSecondTexture(int texNum); + int RetSecondTexture(); + + void SetRankView(int rank); + int RetRankView(); + + void SetDrawWorld(bool bDraw); + void SetDrawFront(bool bDraw); + + void SetAmbiantColor(const Gfx::Color &color, int rank=0); + Gfx::Color RetAmbiantColor(int rank=0); + + void SetWaterAddColor(const Gfx::Color &color); + Gfx::Color RetWaterAddColor(); + + void SetFogColor(const Gfx::Color &color, int rank=0); + Gfx::Color RetFogColor(int rank=0); + + void SetDeepView(float length, int rank=0, bool bRef=false); + float RetDeepView(int rank=0); + + void SetFogStart(float start, int rank=0); + float RetFogStart(int rank=0); + + void SetBackground(char *name, Gfx::Color up=0, Gfx::Color down=0, Gfx::Color cloudUp=0, Gfx::Color cloudDown=0, bool bFull=false, bool bQuarter=false); + void RetBackground(char *name, Gfx::Color &up, Gfx::Color &down, Gfx::Color &cloudUp, Gfx::Color &cloudDown, bool &bFull, bool &bQuarter); + void SetFrontsizeName(char *name); + void SetOverFront(bool bFront); + void SetOverColor(const Gfx::Color &color=0, int mode=RSTATE_TCOLOR_BLACK); + + void SetParticuleDensity(float value); + float RetParticuleDensity(); + float ParticuleAdapt(float factor); + + void SetClippingDistance(float value); + float RetClippingDistance(); + + void SetObjectDetail(float value); + float RetObjectDetail(); + + void SetGadgetQuantity(float value); + float RetGadgetQuantity(); + + void SetTextureQuality(int value); + int RetTextureQuality(); + + void SetTotoMode(bool bPresent); + bool RetTotoMode(); + + void SetLensMode(bool bPresent); + bool RetLensMode(); + + void SetWaterMode(bool bPresent); + bool RetWaterMode(); + + void SetBlitzMode(bool bPresent); + bool RetBlitzMode(); + + void SetSkyMode(bool bPresent); + bool RetSkyMode(); + + void SetBackForce(bool bPresent); + bool RetBackForce(); + + void SetPlanetMode(bool bPresent); + bool RetPlanetMode(); + + void SetLightMode(bool bPresent); + bool RetLightMode(); + + void SetEditIndentMode(bool bAuto); + bool RetEditIndentMode(); + + void SetEditIndentValue(int value); + int RetEditIndentValue(); + + void SetSpeed(float speed); + float RetSpeed(); + + void SetTracePrecision(float factor); + float RetTracePrecision(); + + void SetFocus(float focus); + float RetFocus(); + Math::Vector RetEyePt(); + Math::Vector RetLookatPt(); + float RetEyeDirH(); + float RetEyeDirV(); + Math::Point RetDim(); + void UpdateMatProj(); + + void ApplyChange(); + + void FlushPressKey(); + void ResetKey(); + void SetKey(int keyRank, int option, int key); + int RetKey(int keyRank, int option); + + void SetJoystick(bool bEnable); + bool RetJoystick(); + + void SetDebugMode(bool bMode); + bool RetDebugMode(); + bool RetSetupMode(); + + bool IsVisiblePoint(const Math::Vector &pos); + + int DetectObject(Math::Point mouse); + void SetState(int state, Gfx::Color color=0xffffffff); + void SetTexture(char *name, int stage=0); + void SetMaterial(const Gfx::Material &mat); + + void MoveMousePos(Math::Point pos); + void SetMousePos(Math::Point pos); + Math::Point RetMousePos(); + void SetMouseType(Gfx::MouseType type); + Gfx::MouseType RetMouseType(); + void SetMouseHide(bool bHide); + bool RetMouseHide(); + void SetNiceMouse(bool bNice); + bool RetNiceMouse(); + bool RetNiceMouseCap(); + + CText* RetText(); + + bool ChangeColor(char *name, Gfx::Color colorRef1, Gfx::Color colorNew1, Gfx::Color colorRef2, Gfx::Color colorNew2, float tolerance1, float tolerance2, Math::Point ts, Math::Point ti, Math::Point *pExclu=0, float shift=0.0f, bool bHSV=false); + bool OpenImage(char *name); + bool CopyImage(); + bool LoadImage(); + bool ScrollImage(int dx, int dy); + bool SetDot(int x, int y, Gfx::Color color); + bool CloseImage(); + bool WriteScreenShot(char *filename, int width, int height); + //bool GetRenderDC(HDC &hDC); + //bool ReleaseRenderDC(HDC &hDC); + //PBITMAPINFO CreateBitmapInfoStruct(HBITMAP hBmp); + //bool CreateBMPFile(LPTSTR pszFile, PBITMAPINFO pbi, HBITMAP hBMP, HDC hDC); + +protected: + void MemSpace1(Gfx::ObjLevel1 *&p, int nb); + void MemSpace2(Gfx::ObjLevel2 *&p, int nb); + void MemSpace3(Gfx::ObjLevel3 *&p, int nb); + void MemSpace4(Gfx::ObjLevel4 *&p, int nb); + void MemSpace5(Gfx::ObjLevel5 *&p, int nb); + void MemSpace6(Gfx::ObjLevel6 *&p, int nb); + + Gfx::ObjLevel2* AddLevel1(Gfx::ObjLevel1 *&p1, char* texName1, char* texName2); + Gfx::ObjLevel3* AddLevel2(Gfx::ObjLevel2 *&p2, int objRank); + Gfx::ObjLevel4* AddLevel3(Gfx::ObjLevel3 *&p3, float min, float max); + Gfx::ObjLevel5* AddLevel4(Gfx::ObjLevel4 *&p4, int reserve); + Gfx::ObjLevel6* AddLevel5(Gfx::ObjLevel5 *&p5, Gfx::TriangleType type, const Gfx::Material &mat, int state, int nb); + + bool IsVisible(int objRank); + bool DetectBBox(int objRank, Math::Point mouse); + bool DetectTriangle(Math::Point mouse, Math::VertexTex2 *triangle, int objRank, float &dist); + bool TransformPoint(Math::Vector &p2D, int objRank, Math::Vector p3D); + void ComputeDistance(); + void UpdateGeometry(); + void RenderGroundSpot(); + void DrawShadow(); + void DrawBackground(); + void DrawBackgroundGradient(Gfx::Color up, Gfx::Color down); + void DrawBackgroundImageQuarter(Math::Point p1, Math::Point p2, char *name); + void DrawBackgroundImage(); + void DrawPlanet(); + void DrawFrontsize(); + void DrawOverColor(); + bool GetBBox2D(int objRank, Math::Point &min, Math::Point &max); + void DrawHilite(); + void DrawMouse(); + void DrawSprite(Math::Point pos, Math::Point dim, int icon); + +protected: + CInstanceManager* m_iMan; + CApplication* m_app; + Gfx::Device* m_device; + CText* m_text; + CLight* m_light; + CParticule* m_particule; + CWater* m_water; + CCloud* m_cloud; + CBlitz* m_blitz; + CPlanet* m_planet; + CSound* m_sound; + CTerrain* m_terrain; + + int m_blackSrcBlend[2]; + int m_blackDestBlend[2]; + int m_whiteSrcBlend[2]; + int m_whiteDestBlend[2]; + int m_diffuseSrcBlend[2]; + int m_diffuseDestBlend[2]; + int m_alphaSrcBlend[2]; + int m_alphaDestBlend[2]; + + Math::Matrix m_matProj; + Math::Matrix m_matLeftView; + Math::Matrix m_matRightView; + Math::Matrix m_matView; + float m_focus; + + Math::Matrix m_matWorldInterface; + Math::Matrix m_matProjInterface; + Math::Matrix m_matViewInterface; + + long m_baseTime; + long m_stopTime; + float m_absTime; + float m_lastTime; + float m_speed; + bool m_bPause; + bool m_bRender; + bool m_bMovieLock; + + POINT m_dim; + POINT m_lastDim; + Gfx::ObjLevel1* m_objectPointer; + int m_objectParamTotal; + Gfx::Object* m_objectParam; + int m_shadowTotal; + Gfx::Shadow* m_shadow; + Gfx::GroundSpot* m_groundSpot; + Gfx::GroundMark m_groundMark; + Math::Vector m_eyePt; + Math::Vector m_lookatPt; + float m_eyeDirH; + float m_eyeDirV; + int m_rankView; + Gfx::Color m_ambiantColor[2]; + Gfx::Color m_backColor[2]; + Gfx::Color m_fogColor[2]; + float m_deepView[2]; + float m_fogStart[2]; + Gfx::Color m_waterAddColor; + int m_statisticTriangle; + bool m_bUpdateGeometry; + char m_infoText[10][200]; + int m_alphaMode; + bool m_bStateColor; + bool m_bForceStateColor; + bool m_bGroundSpot; + bool m_bShadow; + bool m_bDirty; + bool m_bFog; + bool m_bFirstGroundSpot; + int m_secondTexNum; + char m_backgroundName[50]; + Gfx::Color m_backgroundColorUp; + Gfx::Color m_backgroundColorDown; + Gfx::Color m_backgroundCloudUp; + Gfx::Color m_backgroundCloudDown; + bool m_bBackgroundFull; + bool m_bBackgroundQuarter; + bool m_bOverFront; + Gfx::Color m_overColor; + int m_overMode; + char m_frontsizeName[50]; + bool m_bDrawWorld; + bool m_bDrawFront; + float m_limitLOD[2]; + float m_particuleDensity; + float m_clippingDistance; + float m_lastClippingDistance; + float m_objectDetail; + float m_lastObjectDetail; + float m_terrainVision; + float m_gadgetQuantity; + int m_textureQuality; + bool m_bTotoMode; + bool m_bLensMode; + bool m_bWaterMode; + bool m_bSkyMode; + bool m_bBackForce; + bool m_bPlanetMode; + bool m_bLightMode; + bool m_bEditIndentMode; + int m_editIndentValue; + float m_tracePrecision; + + int m_hiliteRank[100]; + bool m_bHilite; + Math::Point m_hiliteP1; + Math::Point m_hiliteP2; + + int m_lastState; + Gfx::Color m_lastColor; + char m_lastTexture[2][50]; + Gfx::Material m_lastMaterial; + + Math::Point m_mousePos; + Gfx::MouseType m_mouseType; + bool m_bMouseHide; + bool m_bNiceMouse; + + //LPDIRECTDRAWSURFACE7 m_imageSurface; + //DDSURFACEDESC2 m_imageDDSD; + //WORD* m_imageCopy; + //int m_imageDX; + //int m_imageDY; +};*/ + +}; // namespace Gfx diff --git a/src/graphics/common/light.cpp b/src/graphics/common/light.cpp new file mode 100644 index 0000000..d938256 --- /dev/null +++ b/src/graphics/common/light.cpp @@ -0,0 +1,22 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// light.cpp + +#include "graphics/common/light.h" + +// TODO implementation \ No newline at end of file diff --git a/src/graphics/common/light.h b/src/graphics/common/light.h new file mode 100644 index 0000000..024ef58 --- /dev/null +++ b/src/graphics/common/light.h @@ -0,0 +1,108 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// light.h + +#pragma once + + +namespace Gfx { + +/** \enum LightType Type of light */ +enum LightType +{ + LT_Point, + LT_Spot, + LT_Directional +}; + +/** + * \struct Light Light + * + * This structure was created as analog to DirectX's D3DLIGHT. + * + * It contains analogous fields as the D3DLIGHT struct. + */ +struct Light +{ + //! Type of light source + Gfx::LightType type; + //! Color of light + Gfx::Color color; + //! Position in world space + Math::Vector position; + //! Direction in world space + Math::Vector direction; + //! Cutoff range + float range; + //! Falloff + float falloff; + //! Constant attenuation + float attenuation0; + //! Linear attenuation + float attenuation1; + //! Quadratic attenuation + float attenuation2; + //! Inner angle of spotlight cone + float theta; + //! Outer angle of spotlight cone + float phi; + + Light() : type(LT_Point), range(0.0f), falloff(0.0f), + attenuation0(0.0f), attenuation1(0.0f), attenuation2(0.0f), + theta(0.0f), phi(0.0f) {} +}; + +struct LightProg +{ + float starting; + float ending; + float current; + float progress; + float speed; +}; + +/** + * \struct SceneLight Dynamic light in 3D scene + * + * TODO documentation + */ +struct SceneLight +{ + //! true -> light exists + bool used; + //! true -> light turned on + bool enable; + + //! Type of all objects included + D3DTypeObj incluType; + //! Type of all objects excluded + D3DTypeObj excluType; + + //! Configuration of the light + Gfx::Light light; + + //! intensity (0 .. 1) + Gfx::LightProg intensity; + Gfx::LightProg colorRed; + Gfx::LightProg colorGreen; + Gfx::LightProg colorBlue; +}; + +// TODO CLight + +}; // namespace Gfx diff --git a/src/graphics/common/lightning.cpp b/src/graphics/common/lightning.cpp new file mode 100644 index 0000000..076fcb4 --- /dev/null +++ b/src/graphics/common/lightning.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// lightning.cpp (aka blitz.cpp) + +#include "graphics/common/lightning.h" + + +// TODO implementation diff --git a/src/graphics/common/lightning.h b/src/graphics/common/lightning.h new file mode 100644 index 0000000..a7fab45 --- /dev/null +++ b/src/graphics/common/lightning.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// lightning.h (aka blitz.h) + +#pragma once + + +namespace Gfx { + +// TODO CLightning (aka CBlitz) + +}; // namespace Gfx diff --git a/src/graphics/common/material.h b/src/graphics/common/material.h new file mode 100644 index 0000000..d6e2b41 --- /dev/null +++ b/src/graphics/common/material.h @@ -0,0 +1,26 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// material.h + +#pragma once + + +namespace Gfx { + +// TODO struct Material + +}; // namespace Gfx diff --git a/src/graphics/common/model.cpp b/src/graphics/common/model.cpp new file mode 100644 index 0000000..c415fb8 --- /dev/null +++ b/src/graphics/common/model.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// model.cpp + +#include "graphics/common/model.h" + + +// TODO implementation diff --git a/src/graphics/common/model.h b/src/graphics/common/model.h new file mode 100644 index 0000000..a086c73 --- /dev/null +++ b/src/graphics/common/model.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// model.h + +#pragma once + + +namespace Gfx { + +// TODO CModel + +}; // namespace Gfx diff --git a/src/graphics/common/particle.cpp b/src/graphics/common/particle.cpp new file mode 100644 index 0000000..322c2d0 --- /dev/null +++ b/src/graphics/common/particle.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// particle.cpp (aka particule.cpp) + +#include "graphics/common/particle.h" + + +// TODO implementation diff --git a/src/graphics/common/particle.h b/src/graphics/common/particle.h new file mode 100644 index 0000000..f550399 --- /dev/null +++ b/src/graphics/common/particle.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// particle.h (aka particule.h) + +#pragma once + + +namespace Gfx { + +// TODO CParticle (aka CParticule) + +}; // namespace Gfx diff --git a/src/graphics/common/planet.cpp b/src/graphics/common/planet.cpp new file mode 100644 index 0000000..4fa17a1 --- /dev/null +++ b/src/graphics/common/planet.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// planet.cpp + +#include "graphics/common/planet.h" + + +// TODO implementation diff --git a/src/graphics/common/planet.h b/src/graphics/common/planet.h new file mode 100644 index 0000000..537ca0b --- /dev/null +++ b/src/graphics/common/planet.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// planet.h + +#pragma once + + +namespace Gfx { + +// TODO CPlanet + +}; // namespace Gfx diff --git a/src/graphics/common/pyro.cpp b/src/graphics/common/pyro.cpp new file mode 100644 index 0000000..6b5b1af --- /dev/null +++ b/src/graphics/common/pyro.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// pyro.cpp + +#include "graphics/common/pyro.h" + + +// TODO implementation diff --git a/src/graphics/common/pyro.h b/src/graphics/common/pyro.h new file mode 100644 index 0000000..4c5c318 --- /dev/null +++ b/src/graphics/common/pyro.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// pyro.h + +#pragma once + + +namespace Gfx { + +// TODO CPyro + +}; // namespace Gfx diff --git a/src/graphics/common/terrain.cpp b/src/graphics/common/terrain.cpp new file mode 100644 index 0000000..9b61dfc --- /dev/null +++ b/src/graphics/common/terrain.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// terrain.cpp + +#include "graphics/common/terrain.h" + + +// TODO implementation diff --git a/src/graphics/common/terrain.h b/src/graphics/common/terrain.h new file mode 100644 index 0000000..b527735 --- /dev/null +++ b/src/graphics/common/terrain.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// terrain.h + +#pragma once + + +namespace Gfx { + +// TODO CTerrain + +}; // namespace Gfx diff --git a/src/graphics/common/text.cpp b/src/graphics/common/text.cpp new file mode 100644 index 0000000..0c5eb66 --- /dev/null +++ b/src/graphics/common/text.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// text.cpp + +#include "graphics/common/text.h" + + +// TODO implementation diff --git a/src/graphics/common/text.h b/src/graphics/common/text.h new file mode 100644 index 0000000..08fc6dd --- /dev/null +++ b/src/graphics/common/text.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// text.h + +#pragma once + + +namespace Gfx { + +// TODO CText + +}; // namespace Gfx diff --git a/src/graphics/common/vertex.h b/src/graphics/common/vertex.h index b54b56e..9368b4b 100644 --- a/src/graphics/common/vertex.h +++ b/src/graphics/common/vertex.h @@ -1,5 +1,24 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// vertex.h + #pragma once + #include "math/vector.h" #include "math/point.h" @@ -44,4 +63,4 @@ struct VertexTex2 : public Gfx::Vertex : Vertex(aCoord, aNormal, aTexCoord), texCoord2(aTexCoord2) {} }; -}; +}; // namespace Gfx diff --git a/src/graphics/common/water.cpp b/src/graphics/common/water.cpp new file mode 100644 index 0000000..5172b9f --- /dev/null +++ b/src/graphics/common/water.cpp @@ -0,0 +1,23 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// water.cpp + +#include "graphics/common/water.h" + + +// TODO implementation diff --git a/src/graphics/common/water.h b/src/graphics/common/water.h new file mode 100644 index 0000000..239b1b2 --- /dev/null +++ b/src/graphics/common/water.h @@ -0,0 +1,27 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// water.h + +#pragma once + + +namespace Gfx { + +// TODO CWater + +}; // namespace Gfx -- cgit v1.2.3-1-g7c22