/*-------------------------- set rendering target data C.Wang 0522, 2006 ---------------------------*/ void FuCShadowModify::SetRenderTarget(int w, float *bgColor) { FnScene scene; FnWorld gw; FnViewport vp; char shadowName[256]; scene.Object(mHost); gw.Object(scene.GetWorld()); gw.DeleteMaterial(mRenderTarget); gw.DeleteViewport(mViewport); // create the viewport with the associated size mViewport = gw.CreateViewport(0, 0, w, w); // create the render target material mRenderTarget = gw.CreateMaterial(NULL, NULL, NULL, 1.0f, NULL); // generate a unique shadow texture name sprintf(shadowName, "shadow%d", mRenderTarget); FnMaterial mat; mat.Object(mRenderTarget); mat.AddRenderTargetTexture(0, 0, shadowName, TEXTURE_32, mViewport); mat.SetTextureAddressMode(0, CLAMP_TEXTURE); // set render target vp.Object(mViewport); vp.SetRenderTarget(mRenderTarget, 0, 0, 0); vp.SetBackgroundColor(bgColor[0], bgColor[1], bgColor[2]); }
MiniMap::MiniMap(WORLDid gID, SCENEid sMiniID, Lyubu *lyubu, int x_pos, int y_pos, int width, int height ) { FnWorld gw; FnScene scene; FnViewport vp; FnCamera camera; FnObject camStand; FnTerrain terrain; //adr_turn = this->turn; /* pos_begin[0]=3569.0; pos_begin[1]=-3208.0; pos_begin[2]=1000.0f; */ gw.Object(gID); //miniMap gw.SetObjectPath("Data\\NTU4\\Scenes"); FnScene miniScene; miniScene.Object(sMiniID); miniTerrainID = miniScene.CreateObject(ROOT); FnObject miniTerrain; miniTerrain.Object(miniTerrainID); miniTerrain.Load("terrain"); miniTerrain.SetOpacity(0.8f); // create a camera stand for minimap miniMapStandID = miniScene.CreateObject(ROOT); gw.SetObjectPath("Data\\NTU4\\Characters"); anchorID = miniScene.CreateObject(miniMapStandID); FnObject anchor; anchor.Object(anchorID); anchor.Load("arrowGreen"); float pos[]={0,0,10}; anchor.SetPosition(pos); // create a camera for minimap miniMapCameraID = miniScene.CreateCamera(miniMapStandID); FnCamera miniCamera; miniCamera.Object(miniMapCameraID); miniCamera.Translate(0.0f, 0.0f, 5000.0f, REPLACE); miniCamera.SetNear(5.0f); miniCamera.SetFar(100000.0f); miniCamera.Rotate(Z_AXIS, 180.0f, LOCAL); // create a light for minimap camera FnLight miniLight; miniLight.Object(miniScene.CreateLight(miniMapCameraID)); miniLight.SetIntensity(1.0f); miniLight.SetRange(9500.0f); vpMiniMapID = gw.CreateViewport(x_pos, y_pos, width, height); }