// 指定された矩形領域を塗りつぶす void CMglImage::Paint( RECT* rect, D3DCOLOR color ) { CreateCheck(); // Createチェック if ( m_bRenderTarget == TRUE ) { // 現在のレンダーを保持(勝手に書き換えちゃマズいからなw) IDirect3DSurface8* bkupRender; d3d->GetRenderTarget( &bkupRender ); SetRender(); //d3d->Clear( 0, NULL, D3DCLEAR_TARGET, color, 1.0f, 0 ); // |D3DCLEAR_ZBUFFER m_myudg->Paint( rect, color ); // |D3DCLEAR_ZBUFFER // レンダーを元に戻す MyuAssert( d3d->SetRenderTarget( bkupRender, NULL ), D3D_OK, //m_myudg->lpZbuffer "CMglImage::Clear() レンダーを戻すのに失敗" ); } else { // 別にクリアされたサーフェスを作成してそこからコピー、と言う面倒な処理(´Д`) CMglImage workSurface; workSurface.Init( m_myudg ); workSurface.Create(); // レンダリング先はTRUEにしないと無限再帰してしまう workSurface.Paint( rect, color ); CopyRectToThis( &workSurface ); } }
void CMglTexture::Clear__( D3DCOLOR color ) { CreateCheck(); // Createチェック LockedCheck(); if ( m_bRenderTarget == TRUE ) { // 現在のレンダーを保持(勝手に書き換えちゃマズいからなw) _MGL_IDirect3DSurface* bkupRender; #if _MGL_DXVER == 9 d3d->GetRenderTarget( 0, &bkupRender ); #else d3d->GetRenderTarget( &bkupRender ); #endif SetRender(); //d3d->Clear( 0, NULL, D3DCLEAR_TARGET, color, 1.0f, 0 ); // |D3DCLEAR_ZBUFFER m_myudg->Clear( color ); // |D3DCLEAR_ZBUFFER // D3DCOLOR_FULLALPHA // レンダーを元に戻す #if _MGL_DXVER == 9 MyuAssert( d3d->SetRenderTarget( 0, bkupRender ), D3D_OK, #else MyuAssert( d3d->SetRenderTarget( bkupRender, NULL ), D3D_OK, //m_myudg->lpZbuffer #endif "CMglTexture::Clear() レンダーを戻すのに失敗" ); }
//------------------------------------------------------------------------------------------------------- LightNode::LightNode( LightType lt, LightStyle la ) :LocatableObject(this), m_pShadowCaster(NULL), m_eLightType( lt ), m_eFakeReal( la ), m_HaloSize( 0.12f, 0.25f ), m_isActive(true), m_LightRange(1.0f), m_pLighthalo(NULL), m_MaxScale(1.0), m_isCastShadow(false), m_Color(0.2,0.2,0.2), m_LightAngle(PI/4,PI/3), m_LightAttrib(0), m_isLightChange(true), m_Attenuation(1,0,0,0) { SetRender(false); Engine::Instance().GetEnvironment()->_AddLightNode( this ); m_pLighthalo = NEW Billboard; m_pLighthalo->SetBillCoordnate( vector2f(0,0), vector2f(1,1) ); }
bool GameScene::Init() { bool isValid = BaseScene::Init(); if (isValid) { rapidjson::Document* myDoc = GetDoc(); // Load map. m_map = NEW(Map, ((*myDoc)["map"].GetString())); MapScene* myRender = 0; if (m_map) { SetRender(NEW(MapScene, (m_map))); myRender = reinterpret_cast<MapScene*>(GetRender()); } // MapScene* myRender = reinterpret_cast<MapScene*>(GetRender()); if (myRender) { const char* dirImage = (*myDoc)["background"].GetString(); SpriteFactory::TSpriteNode* myImage = SpriteFactory::Instance().CreateImageNode(dirImage); myRender->SetBackgroundImage(myImage->m_image); myRender->GetCamera().SetBounds(0, 0, myRender->GetMap()->GetWidth(), myRender->GetMap()->GetHeight()); double cameraX = (*myDoc)["camera"]["x"].GetDouble(); double cameraY = (*myDoc)["camera"]["y"].GetDouble(); myRender->GetCamera().SetPosition(cameraX, cameraY); // Load entities types. const rapidjson::Value& myInfo = (*myDoc)["typesEntities"]; unsigned int numInfo = myInfo.Size(); for (unsigned int i = 0; i < numInfo; i++) EntityFactory::Instance().LoadInfo(myInfo[i]); // Load entities. const rapidjson::Value& entities = (*myDoc)["entities"]; unsigned int numEntities = entities.Size(); isValid = true; for (unsigned int i = 0; i < numEntities && isValid; i++) { BaseEntity* myEntity = EntityFactory::Instance().CreateEntity(entities[i]); if (myEntity) { myEntity->AddToScene(this); if (myEntity->GetSprite()) { Sprite* mySprite = myEntity->GetSprite()->m_sprite; mySprite->SetMap(m_map); mySprite->SetCollisionPixelData(NEW(CollisionPixelData, ("./data/sprites/dwarf_col.png"))); mySprite->SetCollision(Sprite::COLLISION_PIXEL); } m_entities.Add(myEntity); isValid = m_entities.Last()->Init(); } else isValid = false; } } } return isValid; }
//コンストラクタ Ita::Ita(float u, float v){ size.x = 0.0; size.y = 0.0; SetRender(u, v); }
//-------------------------------------------------------------------------------------------------------------------------------------- ObjectRoot::ObjectRoot( ) :LocatableObject(this) { SetRender( false ); }