Here is the code:
Code:
#pragma once
#ifndef _STD_INC_H_
#define _STD_INC_H_
#include <wchar.h>
#include <windows.h>
#include <list>
#include <map>
#include <vector>
#include "math.h"
#include "optional.h"
#include <d3d9types.h>
#include <d3dx9.h>
#include "DXUT\Common\DXUT.h"
#include "DXUT\Common\DXUTmisc.h"
#include <boost\config.hpp>
#include <boost\shared_ptr.hpp>
using boost::shared_ptr;
#ifdef _DEBUG
#define W_NEW new (_NORMAL_BLOCK, __FILE__, __LINE__)
#else
#define W_NEW new
#define WIN32_LEAN_AND_MEAN
#define VC_LEANMEAN
#endif
const double SIXTYHZ = 1000.0f/60.0f;
typedef unsigned int ActorId;
struct AppMsg
{
HWND m_Hwnd;
UINT m_uMsg;
WPARAM m_wParam;
LPARAM m_lParam;
};
enum AlphaType
{
AlphaOpaque,
AlphaTexture,
AlphaMaterial,
AlphaVertex
};
typedef D3DXCOLOR Color;
class Material
{
private:
D3DMATERIAL9 m_Material;
public:
Material();
~Material() {}
void SetAmbient(const Color &color);
void SetDiffuse(const Color &color);
void SetSpecular(const Color &color, const float power);
void SetEmissive(const Color &color);
void Set(const Color &color);
void SetAlpha(const float alpha);
bool HasAlpha() const;
float GetAlpha() const;
void Use();
};
class SceneNodeProperties
{
friend class SceneNode;
protected:
optional<ActorId> m_ActorId;
std::string m_Name;
mat4x4 m_ToWorld, m_FromWorld;
float m_Radius;
Material m_Material;
AlphaType m_AlphaType;
};
#include "texture.h"
#include "SceneNode.h"
#define fOPAQUE (1.0f)
#define fTRANSPARENT (0.0f)
class ISceneNode;
typedef std::vector<shared_ptr<ISceneNode>> SceneNodeList;
//Those constants is getting redifined
vec3 g_Up(0, 1, 0);
vec3 g_Forward(0, 0, 1);
vec3 g_Right(1, 0, 0);
Color g_White(1.0f, 1.0f, 1.0f, fOPAQUE);
Color g_Black(0.0f, 0.0f, 0.0f, fOPAQUE);
Color g_Red(1.0f, 0.0f, 0.0f, fOPAQUE);
Color g_Green(0.0f, 1.0f, 0.0f, fOPAQUE);
Color g_Blue(0.0f, 0.0f, 1.0f, fOPAQUE);
Color g_Grey50(0.5f, 0.5f, 0.5f, fOPAQUE);
Color g_Transparent(0.0f, 0.0f, 0.0f, fTRANSPARENT);
#include "core_interfaces.h"
#endif
Some of the pieces is inspired by the book: Game Coding Complete by Mike McShaffry