Vertex and Light structures

dev-ui
Piotr Dziwinski 2012-06-20 19:34:54 +02:00
parent 4ecc4bb4c0
commit 11df0ebf94
2 changed files with 135 additions and 0 deletions

View File

@ -20,6 +20,7 @@
#include "graphics/d3d/d3dengine.h"
#include "graphics/common/color.h"
class CInstanceManager;
@ -56,6 +57,93 @@ struct Light
};
// temporary!
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;
};
}; // namespace Gfx
class CLight
{

View File

@ -0,0 +1,47 @@
#pragma once
#include "math/vector.h"
#include "math/point.h"
namespace Gfx {
/**
* \struct Vertex Vertex of a primitive
*
* This structure was created as analog to DirectX's D3DVERTEX.
*
* It contains:
* - vertex coordinates (x,y,z) as Math::Vector,
* - normal coordinates (nx,ny,nz) as Math::Vector
* - texture coordinates (u,v) as Math::Point.
*/
struct Vertex
{
Math::Vector coord;
Math::Vector normal;
Math::Point texCoord;
Vertex(Math::Vector aCoord = Math::Vector(),
Math::Vector aNormal = Math::Vector(),
Math::Point aTexCoord = Math::Point())
: coord(aCoord), normal(aNormal), texCoord(aTexCoord) {}
};
/**
* \struct VertexTex2 Vertex with secondary texture coordinates
*
* In addition to fields from Gfx::Vector, it contains
* secondary texture coordinates (u2, v2) as Math::Point
*/
struct VertexTex2 : public Gfx::Vertex
{
Math::Point texCoord2;
VertexTex2(Math::Vector aCoord = Math::Vector(),
Math::Vector aNormal = Math::Vector(),
Math::Point aTexCoord = Math::Point(),
Math::Point aTexCoord2 = Math::Point())
: Vertex(aCoord, aNormal, aTexCoord), texCoord2(aTexCoord2) {}
};
};