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); }
/*------------------------------------- constructor of classic shadow object C.Wang 0608, 2007 --------------------------------------*/ FuCShadowModify::FuCShadowModify(SCENEid sID, int rgID) { // initialize the shadow mHost = sID; mShadowMat = FAILED_MATERIAL_ID; mViewport = FAILED_ID; mRenderTarget = FAILED_MATERIAL_ID; // create the camera FnScene scene; FnObject seed; scene.Object(sID); m_lightCam.Object( scene.CreateCamera(ROOT) ); // backup the rendering group int oldRG = scene.GetCurrentRenderGroup(); if (rgID >= 0) { // set current rendering group scene.SetCurrentRenderGroup(rgID); } // create the seed object for displaying the shadow mSeed = scene.CreateObject(ROOT); seed.Object(mSeed); seed.BindPostRenderFunction(FuShadowDisplayCallback); seed.SetRenderOption(ALPHA, TRUE); FuCShadowModify **s = (FuCShadowModify **)seed.InitData(sizeof(FuCShadowModify *)); *s = this; mShadowHeightOffset = 0.4f; mShadowSize = 50.0f; // recover current rendering group scene.SetCurrentRenderGroup(oldRG); }