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); }
int ActorStateMachine::ChangeState(ActorState s, BOOL forceSet){ if (forceSet == FALSE && this->state == s){ return 0;// keep the past action play }else{ this->state = s; } if (s == STATEIDLE || s == STATERUN || s == STATEDAMAGE || s == STATEDIE ||s == STATEGUARD){ if (s == STATEIDLE){ this->SetNewAction("CombatIdle"); }else if (s == STATERUN){ this->SetNewAction("Run"); }else if (s == STATEDAMAGE){ FnActor actor; actor.Object(this->character); //actor.MoveForward(-MOVE_LENGTH,TRUE, FALSE, 0.0, TRUE); //this->SetNewAction("LightDamage"); this->currentAttackIndex = 0; this->lastAttackIndex = 0; this->SetNewAction("HeavyDamage"); }else if (s == STATEDIE){ this->SetNewAction("Die"); }else if (s == STATEGUARD){ this->SetNewAction("Guard"); } }else if (s == STATEATTACK){ // Serial attack start; this->startAttack = TRUE; }else if (s == STATEVANISH){ FnWorld gw; gw.Object(gID); gw.SetTexturePath("Data\\FXs\\Textures"); gw.SetObjectPath("Data\\FXs\\Models"); float pos[3]; FnActor actor; actor.Object(this->character); actor.GetWorldPosition(pos); fxDie = new eF3DFX(sID); fxDie->SetWorkPath("Data\\FXs"); BOOL beOK = fxDie->Load("dust3"); eF3DBaseFX *fx; int i, numFX = fxDie->NumberFXs(); for (i = 0; i < numFX; i++) { fx = fxDie->GetFX(i); fx->InitPosition(pos); } } return 0; }
/*------------------------------- create the material for shadow C.Wang 0522, 2006 --------------------------------*/ void FuCShadowModify::CreateShadowMaterial(float *color) { FnWorld gw; FnScene scene; scene.Object(mHost); gw.Object(scene.GetWorld()); if (mShadowMat != FAILED_MATERIAL_ID) { gw.DeleteMaterial(mShadowMat); } // create the material float blackColor[3]; blackColor[0] = blackColor[1] = blackColor[2] = 0.0f; mShadowMat = gw.CreateMaterial(blackColor, blackColor, blackColor, 1.0f, color); }
void TFlyObjectEdit::drawText( FnWorld& gw , int x , int y ) { if ( m_selectIndex == -1 ) return; char str[128]; gw.StartMessageDisplay(); sprintf( str , "SelectObjectID = %d ", m_selectObj ); gw.MessageOnScreen( x , y , str , 255, 0, 0 ); { Vec3D pos , front , up ; m_selectObj.GetWorldPosition( &pos[0] ); m_selectObj.GetDirection( &front[0] , &up[0] ); m_selectObj.GetWorldDirection( &front[0] , &up[0] ); sprintf(str , "Pos = ( %2.2f %2.2f %2.2f ) front = ( %.3f %.3f %.3f )", pos.x() , pos.y() , pos.z() , front.x() , front.y() , front.z() ); gw.MessageOnScreen( x , y + 15 , str, 255, 0, 0); } gw.FinishMessageDisplay(); }
/*-------------------------- 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]); }
/*------------------------------------ destructor of classic shadow object C.Wang 0522, 2006 -------------------------------------*/ FuCShadowModify::~FuCShadowModify() { // delete the associated camera FnScene scene; FnWorld gw; scene.Object(mHost); gw.Object(scene.GetWorld()); gw.DeleteViewport(mViewport); mViewport = FAILED_ID; gw.DeleteMaterial(mShadowMat); mShadowMat = FAILED_MATERIAL_ID; gw.DeleteMaterial(mRenderTarget); mRenderTarget = FAILED_MATERIAL_ID; scene.DeleteCamera( m_lightCam.Object() ); m_lightCam.Object( FAILED_ID ); scene.DeleteObject(mSeed); mSeed = FAILED_ID; }
Donzo::Donzo( WORLDid gID, SCENEid sID ) { FnWorld gw; FnScene scene; HP_MAX = 9000; HP = HP_MAX; pos_begin[0]=3469.0; pos_begin[1]=-3208.0; pos_begin[2]=1000.0f; this->gID = gID; this->sID = sID; gw.Object(gID); scene.Object(sID); gw.SetObjectPath("Data\\NTU4\\Characters"); gw.SetTexturePath("Data\\NTU4\\Characters"); gw.SetCharacterPath("Data\\NTU4\\Characters"); gw.SetShaderPath( "Data\\NTU4\\Shaders" ); aID = scene.LoadActor("Donzo"); actor.Object(aID); //-------action--------- //IDLE ourIdleAction = new OurAction(); ourIdleAction->actID = actor.GetBodyAction(NULL, "CombatIdle"); ourIdleAction->frames_num = 0; ourIdleAction->play_speed = 1; ourIdleAction->priority = 0; ourIdleAction->type.value = DonzoAction::ACTION_IDLE(); current_OurAction = ourIdleAction; actor.MakeCurrentAction(0, NULL, ourIdleAction->actID); ourCombatIdleAction = ourIdleAction; //Run ourRunAction = new OurAction(); ourRunAction->actID = actor.GetBodyAction(NULL, "Run"); ourRunAction->frames_num = 0; ourRunAction->play_speed = 1; ourRunAction->priority = 0; ourRunAction->type.value = Action_type::ACTION_WALK(); //Attack ourAttack1Action = new OurAction(); ourAttack1Action->actID = actor.GetBodyAction(NULL, "AttackL1"); ourAttack1Action->isAttack = true; ourAttack1Action->frames_num = 0; ourAttack1Action->play_speed = 1; ourAttack1Action->priority = 5; ourAttack1Action->type.value = Action_type::ACTION_ATTACK(); ourAttack1Action->numOfKeyFrames = 1; ourAttack1Action->keyFrames = new OurFrame*[1]; ourAttack1Action->keyFrames[0] = new OurFrame; ourAttack1Action->keyFrames[0]->frameNO = 10; ourAttack1Action->keyFrames[0]->start_angle = 320; ourAttack1Action->keyFrames[0]->plus_angle = 80; ourAttack1Action->keyFrames[0]->valid_dis = 200; ourAttack1Action->keyFrames[0]->damage_pt = 100; ourHeavyAttack1Action = new OurAction(); ourHeavyAttack1Action->actID = actor.GetBodyAction(NULL, "AttackH"); ourHeavyAttack1Action->isAttack = true; ourHeavyAttack1Action->frames_num = 0; ourHeavyAttack1Action->play_speed = 1; ourHeavyAttack1Action->priority = ourAttack1Action->priority + 10; ourHeavyAttack1Action->type.value = Action_type::ACTION_ATTACK(); ourHeavyAttack1Action->numOfKeyFrames = 3; ourHeavyAttack1Action->keyFrames = new OurFrame*[3]; ourHeavyAttack1Action->keyFrames[0] = new OurFrame; ourHeavyAttack1Action->keyFrames[0]->frameNO = 23; ourHeavyAttack1Action->keyFrames[0]->start_angle = 270; ourHeavyAttack1Action->keyFrames[0]->plus_angle = 100; ourHeavyAttack1Action->keyFrames[0]->valid_dis = 200; ourHeavyAttack1Action->keyFrames[0]->damage_pt = 100; ourHeavyAttack1Action->keyFrames[1] = new OurFrame; ourHeavyAttack1Action->keyFrames[1]->frameNO = 42; ourHeavyAttack1Action->keyFrames[1]->start_angle = 270; ourHeavyAttack1Action->keyFrames[1]->plus_angle = 180; ourHeavyAttack1Action->keyFrames[1]->valid_dis = 200; ourHeavyAttack1Action->keyFrames[1]->damage_pt = 90; ourHeavyAttack1Action->keyFrames[2] = new OurFrame; ourHeavyAttack1Action->keyFrames[2]->frameNO = 70; ourHeavyAttack1Action->keyFrames[2]->start_angle = 0; ourHeavyAttack1Action->keyFrames[2]->plus_angle = 360; ourHeavyAttack1Action->keyFrames[2]->valid_dis = 200; ourHeavyAttack1Action->keyFrames[2]->damage_pt = 80; ourHeavyAttack2Action = new OurAction(); ourHeavyAttack2Action->actID = actor.GetBodyAction(NULL, "HeavyAttack"); ourHeavyAttack2Action->isAttack = true; ourHeavyAttack2Action->frames_num = 0; ourHeavyAttack2Action->play_speed = 1; ourHeavyAttack2Action->priority = ourAttack1Action->priority + 10; ourHeavyAttack2Action->type.value = Action_type::ACTION_ATTACK(); ourHeavyAttack2Action->numOfKeyFrames = 2; ourHeavyAttack2Action->keyFrames = new OurFrame*[2]; ourHeavyAttack2Action->keyFrames[0] = new OurFrame; ourHeavyAttack2Action->keyFrames[0]->frameNO = 31; ourHeavyAttack2Action->keyFrames[0]->start_angle = 0; ourHeavyAttack2Action->keyFrames[0]->plus_angle = 270; ourHeavyAttack2Action->keyFrames[0]->valid_dis = 190; ourHeavyAttack2Action->keyFrames[0]->damage_pt = 80; ourHeavyAttack2Action->keyFrames[1] = new OurFrame; ourHeavyAttack2Action->keyFrames[1]->frameNO = 41; ourHeavyAttack2Action->keyFrames[1]->start_angle = 270; ourHeavyAttack2Action->keyFrames[1]->plus_angle = 180; ourHeavyAttack2Action->keyFrames[1]->valid_dis = 200; ourHeavyAttack2Action->keyFrames[1]->damage_pt = 120; //DamageL ourDamageLAction = new OurAction(); ourDamageLAction->actID = actor.GetBodyAction(NULL, "DamageL"); ourDamageLAction->frames_num = 0; ourDamageLAction->play_speed = 1.5; ourDamageLAction->priority = 100; ourDamageLAction->type.value = DonzoAction::ACTION_DAMAGED(); //fx ourDamageLAction->numOfFxFrames = 1; ourDamageLAction->fxFrames = new OurFxFrame*[1]; ourDamageLAction->fxFrames[0] = new OurFxFrame; ourDamageLAction->fxFrames[0]->frameNO = 1; ourDamageLAction->fxFrames[0]->fxName = AllFx::SmallHurt01; //DamageH ourDamageHAction = new OurAction(); ourDamageHAction->actID = actor.GetBodyAction(NULL, "DamageH"); ourDamageHAction->frames_num = 0; ourDamageHAction->play_speed = 1.5; ourDamageHAction->priority = 100; ourDamageHAction->type.value = DonzoAction::ACTION_DAMAGED(); //fx ourDamageHAction->numOfFxFrames = 1; ourDamageHAction->fxFrames = new OurFxFrame*[1]; ourDamageHAction->fxFrames[0] = new OurFxFrame; ourDamageHAction->fxFrames[0]->frameNO = 1; ourDamageHAction->fxFrames[0]->fxName = AllFx::BigHurt01; //Die ourDieAction = new OurAction(); ourDieAction->actID = actor.GetBodyAction(NULL, "Die"); ourDieAction->frames_num = 0; ourDieAction->play_speed = 1; ourDieAction->priority = 1000; ourDieAction->type.value = DonzoAction::ACTION_DIE(); //fx ourDieAction->numOfFxFrames = 1; ourDieAction->fxFrames = new OurFxFrame*[1]; ourDieAction->fxFrames[0] = new OurFxFrame; ourDieAction->fxFrames[0]->frameNO = 1; ourDieAction->fxFrames[0]->fxName = AllFx::smoke; //blood { FnObject blood; float pos[3], size[2], color[3]; blood_length = 50; blood_width = 2; bloodID = scene.CreateObject(ROOT); blood.Object(bloodID); pos[0] = 0.0f; pos[1] = 0.0f; pos[2] = 100.0f; size[0] = blood_length; size[1] = blood_width; color[0] = 1.0f; color[1] = 0.8; color[2] = 0.2f; blood.Billboard(pos, size, NULL, 0, color); blood.SetParent(actor.GetBaseObject()); } this->blood.Object(bloodID,0); }