class TestClass{ public: TestClass(){} //... }; int main(){ //以下のようなコードは書けません auto Ptr = new GetType("TestClass"); //... return 0; }
TilingPlate,40,40,1,XM_PIDIV2,0,0,0,0,0,1,1 TilingFixedBox,40,1,1,0,0,0,0,0.5,19.5,1,1 TilingFixedBox,40,1,1,0,0,0,0,0.5,-19.5,1,1 TilingFixedBox,40,1,1,0,XM_PIDIV2,0,19.5,0.5,0,1,1 TilingFixedBox,40,1,1,0,XM_PIDIV2,0,-19.5,0.5,0,1,1 Enemy1,-10,0.25,0,,,,,,,, Enemy1,10,0.25,0,,,,,,,, Enemy1,0,0.25,-10,,,,,,,, Enemy1,0,0.25,10,,,,,,,, Enemy2,-15,0.25,0,,,,,,,, Enemy2,15,0.25,0,,,,,,,, Enemy2,0,0.25,-15,,,,,,,, Enemy2,0,0.25,15,,,,,,,, Enemy3,10,0.25,10,,,,,,,,
void GameStage::OnCreate() { try { //ビューとライトの作成 CreateViewLight(); //オブジェクトのグループを作成する auto Group = CreateSharedObjectGroup(L"EnemyGroup"); //ゲームオブジェクトビルダー GameObjecttCSVBuilder Builder; //ゲームオブジェクトの登録 Builder.Register<TilingPlate>(L"TilingPlate"); Builder.Register<TilingFixedBox>(L"TilingFixedBox"); Builder.Register<Enemy1>(L"Enemy1"); Builder.Register<Enemy2>(L"Enemy2"); Builder.Register<Enemy3>(L"Enemy3"); wstring DataDir; App::GetApp()->GetDataDirectory(DataDir); //CSVからゲームオブジェクトの構築 wstring CSVStr = DataDir + L"GameStage"; CSVStr += Util::IntToWStr(m_StageNum); CSVStr += L".csv"; Builder.Build(GetThis<Stage>(), CSVStr); //プレーヤーの作成 CreatePlayer(); } catch (...) { throw; } }
GameObjecttCSVBuilder Builder;
Builder.Register<TilingPlate>(L"TilingPlate");
Builder.Build(GetThis<Stage>(), CSVStr);
//構築と破棄
TilingPlate::TilingPlate(const shared_ptr<Stage>& StagePtr, const wstring& Line) :
GameObject(StagePtr)
{
try {
//トークン(カラム)の配列
vector<wstring> Tokens;
Util::WStrToTokenVector(Tokens, Line, L',');
//各トークン(カラム)をスケール、回転、位置に読み込む
m_Scale = Vec3(
(float)_wtof(Tokens[1].c_str()),
(float)_wtof(Tokens[2].c_str()),
(float)_wtof(Tokens[3].c_str())
);
Vec3 Rot;
//回転は「XM_PIDIV2」の文字列になっている場合がある
Rot.x = (Tokens[4] == L"XM_PIDIV2") ? XM_PIDIV2 : (float)_wtof(Tokens[4].c_str());
Rot.y = (Tokens[5] == L"XM_PIDIV2") ? XM_PIDIV2 : (float)_wtof(Tokens[5].c_str());
Rot.z = (Tokens[6] == L"XM_PIDIV2") ? XM_PIDIV2 : (float)_wtof(Tokens[6].c_str());
//プレートの回転の引数はクオータニオンになっているので変換
m_Qt.rotationRollPitchYawFromVector(Rot);
m_Position = Vec3(
(float)_wtof(Tokens[7].c_str()),
(float)_wtof(Tokens[8].c_str()),
(float)_wtof(Tokens[9].c_str())
);
m_UPic = (float)_wtof(Tokens[10].c_str());
m_VPic = (float)_wtof(Tokens[11].c_str());
}
catch (...) {
throw;
}
}