Esempio n. 1
0
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;
}
Esempio n. 3
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);
}
Esempio n. 4
0
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();
}
Esempio n. 5
0
/*--------------------------
  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]);
}
Esempio n. 6
0
/*------------------------------------
  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);
}