//=========================================================================
//	シーンクラスヘッダー[ scene.cpp ]
//	作成日：2017/04/26
//	作成者：小暮大樹
//=========================================================================
#pragma once
//=========================================================================
//	インクルードファイル
//=========================================================================
#include	"main.h"

//=========================================================================
//	定数定義
//=========================================================================
#define	PRIORITY_ALL		( 8 )	//優先順位総数
#define PRIORITY_DEFAULT	( 3 )	//DEFAULTの優先順位

//=========================================================================
//	CSceneクラス
//=========================================================================
class	CScene
{
public:
	CScene( int nPriority = PRIORITY_DEFAULT ); //コンストラクタ
	//~CScene(){};	//デストラクタ

	static	void	UpdateAll( void );	//一括更新
	static	void	DrawAll( void );	//一括描画
	static	void	ReleaseAll( void );	//一括Release

	virtual	void	Init( void )	= 0 ; 
	virtual	void	Uninit( void )	= 0 ;
	virtual	void	Update( void )	= 0 ;
	virtual	void	Draw( void )	= 0 ;

	//シーンの破棄
	void Release( void );

	//取得関数
	const	D3DXVECTOR3&	GetPosition	( void ) const { return m_Pos; };	//位置の取得
	const	D3DXVECTOR3&	GetSize		( void ) const { return m_Size; };		//サイズの取得
	const	float&			GetLength	( void ) const { return m_fLength; };
	const	float&			GetAngle	( void ) const { return m_fAngle; };

	const	LPDIRECT3DTEXTURE9		GetTexture( void ) const { return m_pTexture; };	//テクスチャの取得

	//譲渡関数
	void	SetPosition( const D3DXVECTOR3& pos ){ m_Pos = pos; };		//位置の設定
	void	SetSize( const D3DXVECTOR3& size ){ m_Size = size; };		//大きさの設定
	void	SetLength( const float& length ){ m_fLength = length; };	//半径の半分の長さの設定
	void	SetRotate( const D3DXVECTOR3& rot ){ m_fRot = rot; };		//回転量
	void	SetAngle( const float& angle ){ m_fAngle = angle; };		//対角線の角度の設定

protected:
	LPDIRECT3DTEXTURE9		m_pTexture;	//テクスチャインターフェースのための変数
	LPDIRECT3DVERTEXBUFFER9	m_pVtxBuffer;	//テクスチャーバッファーのための変数


private:
	D3DXVECTOR3	m_Pos;		// 位置
	D3DXVECTOR3	m_Size;		// サイズ
	float		m_fRadius;	// 半径
	D3DXVECTOR3	m_fRot;		// 回転
	float		m_fLength;	// 対角線の半分の長さ
	float		m_fAngle;	// 対角線の角度

	static CScene *m_Top[ PRIORITY_ALL ];	//リスト構造先頭
	CScene *m_Next;			//次のやつ
	CScene *m_Prev;			//前のやつ
	bool	m_bDelete;		//削除フラグ

	static int m_nNumScene;	//オブジェクトの総数
	int m_nPriority;		//オブジェクトの優先度
};