Beispiel #1
0
ZCharacterView::ZCharacterView(const char* szName, MWidget* pParent, MListener* pListener)
	: ZMeshView(szName, pParent, pListener)
{
	SetDrawInfo(false);

	m_fDist = 235.0f;
	m_fMaxDist = 400.0f;
	m_fMinDist = 120.0f;

	m_Eye = rvector(0.0f, 92, -m_fDist);
	m_At = rvector(0, 92, 0);
	m_Up = rvector(0, 1, 0);

	memset(&m_Info, 0, sizeof(ZCharacterViewInfo));

	m_bVisibleEquipment = false;
	m_nVisualWeaponParts = MMCIP_PRIMARY;


	m_bAutoRotate = false;
	m_dwTime = GetGlobalTimeMS();


	for(int i=0; i<MMCIP_END; i++)
	{
		m_ItemSlots[i].m_nItemID = 0;
	}

	RepositionItemSlots();

}
ZEffectIcon::ZEffectIcon(RMesh* pMesh, ZObject* pObj)
    : ZEffectAniMesh(pMesh,rvector(0,0,0),rvector(1,0,0))
{
    if(pObj)
        m_uid = pObj->GetUID();
    m_type = eq_parts_pos_info_etc;
}
Beispiel #3
0
void ZBrain::AdjustWayPointWithBound(list<rvector>& wayPointList, RNavigationMesh* pNavMesh)
{
	// 몹이 코너의 벽모서리 앞에서, 벽에 밀착한 플레이어를 추적하면 waypoint 1개로 길찾기된다, 그러나 코너 앞이므로
	// 바운드볼륨때문에 벽모서리에 걸려서 제자리 걸음을 하게 된다. 이를 방지하기 위해, 자기 바운드 좌우측 지점으로부터
	// 목표물에 길찾기를 해보고 waypoint 1개 이상으로 나오면(즉 벽이 가로막았으면) 사이드 스텝을 먼저 해서 벽코너로부터 몸을 떨어뜨린다
	// * waypoint가 여러개 나왔을 때는 첫번째 waypoint를 가지고 테스트한다

	if (wayPointList.empty()) return;

	const rvector& targetpos = *(wayPointList.begin());

	// 내 중점~첫목표점을 이용해 내가 가고자하는 방향으로부터 바운딩실린더의 좌우측의 점을 얻어내보자
	rvector center = m_pBody->GetPosition();
	rvector dir = targetpos - center;
	dir.z = 0;
	Normalize(dir);

	dir *= m_pBody->GetCollRadius() * 0.8f;	// 자기 충돌 반지름보다 약간 작게 *0.8

	rvector side1 = center + rvector(-dir.y,  dir.x, 0);
	rvector side2 = center + rvector( dir.y, -dir.x, 0);

	// 좌우측 점에서부터 첫지점을 향해 길찾기 해본다. 2개이상이 나오면 몸통 일부가 기둥에 막혀 못움직이므로
	// 그냥 반대쪽으로 한발짝 먼저 움직여주자
	if ( pNavMesh->BuildNavigationPath( side1, targetpos) && pNavMesh->GetWaypointList().size() > 1)
		m_WayPointList.push_front(side2);
	else if ( pNavMesh->BuildNavigationPath( side2, targetpos) && pNavMesh->GetWaypointList().size() > 1)
		m_WayPointList.push_front(side1);
}
void ZEffectBillboardTexAniList::Add(rvector &pos, rvector& vel,int frame,float fAddTime,float fStartSize,float fEndSize,float fLifeTime,
									 ZCharacter* pChar,RMeshPartsPosInfoType partstype)
{
	ZEFFECTBILLBOARDTEXANIITEM *pNewItem = new ZEFFECTBILLBOARDTEXANIITEM;

	push_back(pNewItem);

	pNewItem->fElapsedTime=0;
	pNewItem->velocity = vel;
	pNewItem->normal=-RCameraDirection;
	pNewItem->up=rvector(0,0,1);
	pNewItem->accel = rvector(0,0,0);
	pNewItem->position=pos;
	pNewItem->fStartSize=fStartSize;
	pNewItem->fEndSize=fEndSize;
	pNewItem->fOpacity=1.f;
	pNewItem->dwColor = 0xffffff;
	pNewItem->fAddTime = fAddTime;

	if(fLifeTime==-1)
		pNewItem->fLifeTime = m_fLifeTime;
	else
		pNewItem->fLifeTime = fLifeTime;

	pNewItem->frame = frame;

	if(pChar)	pNewItem->CharUID = pChar->GetUID();
	else 		pNewItem->CharUID = MUID(0,0);

	pNewItem->partstype = partstype;
}
Beispiel #5
0
bool ZActor::ProcessMotion(float fDelta)
{
	if (!m_pVMesh) return false;

	m_pVMesh->Frame();

	rvector pos = m_Position;
	rvector dir = m_Direction;
	dir.z = 0;

	rmatrix world;
	MakeWorldMatrix(&world,rvector(0,0,0), dir,rvector(0,0,1));

	rvector MeshPosition ;
	MeshPosition = pos;

	MakeWorldMatrix(&world,pos,dir,rvector(0,0,1));
	m_pVMesh->SetWorldMatrix(world);

	UpdatePosition(fDelta);

	if(IsActiveModule(ZMID_LIGHTNINGDAMAGE)==false) {

		if (m_pVMesh->isOncePlayDone())
		{
			m_Animation.Input(ZA_ANIM_DONE);
		}
	}

	return true;
}
Beispiel #6
0
_USING_NAMESPACE_REALSPACE2

_NAMESPACE_REALSPACE2_BEGIN

//////////////////////////////////////////////////////////////////////////////////
// RMeshNodeData Class

RMeshNodeData::RMeshNodeData() 
{
	m_id = -1;
	m_u_id = -1;
	m_mtrl_id = -1;

	m_spine_local_pos.x = 0.f;
	m_spine_local_pos.y = 0.f;
	m_spine_local_pos.z = 0.f;

	m_ap_scale = rvector(1.f,1.f,1.f);

	m_axis_scale = rvector(0.f,0.f,0.f);
	m_axis_scale_angle = 0.f;

	m_axis_rot = rvector(0.f,0.f,0.f);
	m_axis_rot_angle = 0.f;

	D3DXMatrixIdentity(&m_mat_base);
	D3DXMatrixIdentity(&m_mat_parent_inv);
	D3DXMatrixIdentity(&m_mat_local);
	D3DXMatrixIdentity(&m_mat_inv);
	D3DXMatrixIdentity(&m_mat_etc);
	D3DXMatrixIdentity(&m_mat_flip);
	D3DXMatrixIdentity(&m_mat_scale);
	D3DXMatrixIdentity(&m_mat_result);

	D3DXMatrixIdentity(&m_mat_add);

	D3DXMatrixIdentity(&m_mat_ref);
	D3DXMatrixIdentity(&m_mat_ref_inv);

	m_point_list		= NULL;
	m_face_normal_list	= NULL;
//	m_point_normal_list = NULL;
	m_point_color_list	= NULL;
	m_face_list			= NULL;
//	m_face_normal		= NULL;
	m_physique			= NULL;

	m_point_num			= 0;
	m_face_num			= 0;
	m_physique_num		= 0;
	m_point_normal_num	= 0;
	m_point_color_num	= 0;

	m_min = rvector( 999.f, 999.f, 999.f);
	m_max = rvector(-999.f,-999.f,-999.f);

}
Beispiel #7
0
bool ZSurvival::OnPeerNPCAttackRange(MCommand* pCommand)
{
	MUID uidOwner;
	pCommand->GetParameter(&uidOwner,	0, MPT_UID);

	MCommandParameter* pParam = pCommand->GetParameter(1);
	if(pParam->GetType()!=MPT_BLOB) return false;	// 문제가 있다

	ZPACKEDSHOTINFO *pinfo =(ZPACKEDSHOTINFO*)pParam->GetPointer();
	rvector pos = rvector(pinfo->posx,pinfo->posy,pinfo->posz);
	rvector to = rvector(pinfo->tox,pinfo->toy,pinfo->toz);


	// rocket 테스트로 넣어봤다.
	ZObject* pOwner = ZGetGame()->m_ObjectManager.GetObject(uidOwner);
	MMatchItemDesc* pDesc = NULL;

	if(pOwner==NULL) return false; // 보통 치트키를 쓸경우...

	if( pOwner->GetItems() )
		if( pOwner->GetItems()->GetSelectedWeapon() )
			pDesc = pOwner->GetItems()->GetSelectedWeapon()->GetDesc();
	if (pDesc)
	{
		if (pDesc->m_nWeaponType.Ref() == MWT_ROCKET)
		{
			rvector dir = to - pos;
			Normalize(dir);
			ZGetGame()->m_WeaponManager.AddRocket(pos,dir,pOwner);
			ZApplication::GetSoundEngine()->PlaySEFire(pDesc, pos.x, pos.y, pos.z, false);

			return true;
		}
		else if (pDesc->m_nWeaponType.Ref() == MWT_SKILL)
		{
			rvector dir = to - pos;
			Normalize(dir);

			ZSkill skill;
			skill.Init(pDesc->m_nGadgetID.Ref(), pOwner);

			ZApplication::GetSoundEngine()->PlaySEFire(pDesc, pos.x, pos.y, pos.z, false);

			ZGetGame()->m_WeaponManager.AddMagic(&skill, pos, dir, pOwner);
			return true;
		}

	}
	else
		return false;

	ZGetGame()->OnPeerShot_Range((MMatchCharItemParts)pinfo->sel_type,uidOwner,ZGetGame()->GetTime(),pos,to);
	

	return true;
}
ZRangeWeaponHitDice::ZRangeWeaponHitDice() :m_fHitProbability(0.0f), 
											m_fGlobalFactor(1.0f), 
											m_fTargetHeight(180.0f),
											m_fTargetSpeed(0.0f), 
											m_TargetPosition(rvector(0,0,0)), 
											m_SourcePosition(rvector(0,0,0)),
											m_fDistance(0.0f)
{

}
Beispiel #9
0
void ZCamera::Init()
{
	m_fAngleX = CAMERA_DEFAULT_ANGLEX;
	m_fAngleZ = CAMERA_DEFAULT_ANGLEZ;
	m_fDist = CAMERA_DEFAULT_DISTANCE;
	m_fCurrentDist = CAMERA_DEFAULT_DISTANCE;
	m_bShocked = false;
	m_Position = rvector(0, 0, 0);
	m_CurrentTarget = rvector(0, 0, 0);
}
Beispiel #10
0
RSBase3D::RSBase3D()
{
	position=rvector(0,0,0);
	m_dir=rvector(0,-1,0);m_up=rvector(0,0,1);
	parent=NULL;
	matm=IdentityMatrix();
	mat=IdentityMatrix();
	MaxScaleFactor=ScaleFactorX=ScaleFactorY=ScaleFactorZ=1.0f;
	RoleFactor=0.0f;LastFrame=0;
	nShadowStyle=RS_SHADOWSTYLE_NONE;
	m_bVisible=true;
}
Beispiel #11
0
int MIsIntersectLineAndRectangle(float *pT,	// 매개 변수 리턴 ( 0.0 ~ 1.0 )
										 rvector& Pos, rvector& Dir,	// Line
										 float fLeft, float fTop, float fRight, float fBottom)	// Rect
{
 	bool bIntersection;
	float fNearestT = 2.0f;
	float t[4];
	/*

	+-- x
	|
	y

          3
		+---+
	  0	|   | 2
		+---+
		  1
	*/
	float fXa1 = Pos.x;
	float fYa1 = Pos.y;
	float fXa2 = Pos.x + Dir.x;
	float fYa2 = Pos.y + Dir.y;

	float t2[4];
	if(fXa2>fXa1){
		bIntersection = MIsIntersectLineAndLine(&t[0], &t2[0], Pos, Dir, rvector(fLeft, fTop, 0), rvector(fLeft, fBottom, 0));
		if(bIntersection==true) fNearestT = min(fNearestT, t[0]);
	}
	if(fYa2<fYa1){
		bIntersection = MIsIntersectLineAndLine(&t[1], &t2[0], Pos, Dir, rvector(fLeft, fBottom, 0), rvector(fRight, fBottom, 0));
		if(bIntersection==true) fNearestT = min(fNearestT, t[1]);
	}
	if(fXa2<fXa1){
		bIntersection = MIsIntersectLineAndLine(&t[2], &t2[0], Pos, Dir, rvector(fRight, fBottom, 0), rvector(fRight, fTop, 0));
		if(bIntersection==true) fNearestT = min(fNearestT, t[2]);
	}
	if(fYa2>fYa1){
		bIntersection = MIsIntersectLineAndLine(&t[3], &t2[0], Pos, Dir, rvector(fRight, fTop, 0), rvector(fLeft, fTop, 0));
		if(bIntersection==true) fNearestT = min(fNearestT, t[3]);
	}

	if(fNearestT<=1.0f){
		*pT = fNearestT;
		if(fNearestT==t[0]) return 0;
		else if(fNearestT==t[1]) return 1;
		else if(fNearestT==t[2]) return 2;
		else if(fNearestT==t[3]) return 3;
	}

	return -1;
}
Beispiel #12
0
ZMapDesc::ZMapDesc()
{
	m_WaitCamPos = rvector(0.0f, 0.0f, 1000.0f);
	m_WaitCamDir = rvector(0.0f, 0.5f, -0.5f);

	m_SmokeSSDrawBackupTime = 0.f;
	m_SmokeSTDrawBackupTime = 0.f;
	m_SmokeTSDrawBackupTime = 0.f;

	m_bRenderedSS = false;
	m_bRenderedST = false;
	m_bRenderedTS = false;
}
Beispiel #13
0
void RSObject::CreateShadowTexture()
{
#define EFFECTIVE_SIZE	0.99f
#define SHADOW_COLOR	0xa0a0a0

	rtexture rt;
	rt.New(256,256,RTEXTUREFORMAT_24);
	rt.Fill(0xffffff);

	rmatrix44 tm;

	int i,j,k;
	float f_max=m_BoundingSphereRadiusXY;

	tm=ScaleMatrix44(128.0f*EFFECTIVE_SIZE/f_max)
		*ViewMatrix44(rvector(0,0,0),rvector(1,2,-1),rvector(0,1,0))
		*TranslateMatrix44(128,128,0);

	for(i=0;i<nMesh;i++)
	{
		CMesh *mesh=meshes+i;
		for(j=0;j<mesh->nFaces;j++)
		{
			CFaces *faces=mesh->faceshead+j;
			for(k=0;k<faces->ni;k+=3)
			{
				rvector a=TransformVector(*(rvector*)(&faces->tnlvertices[faces->indicies[k]].x),tm);
				rvector b=TransformVector(*(rvector*)(&faces->tnlvertices[faces->indicies[k+1]].x),tm);
				rvector c=TransformVector(*(rvector*)(&faces->tnlvertices[faces->indicies[k+2]].x),tm);
#define CHECK(x) _ASSERT((x>=0)&&(x<256))

				rt.FillTriangle(a.x,a.y,b.x,b.y,c.x,c.y,SHADOW_COLOR);
				CHECK(a.x);CHECK(a.y);
				CHECK(b.x);CHECK(b.y);
				CHECK(c.x);CHECK(c.y);
			}
		}
	}

	rtexture newrt1;newrt1.CreateAsHalf(&rt);		// 128
	rtexture newrt2;newrt2.CreateAsHalf(&newrt1);	// 64

	newrt2.FillBoundary(0xffffff);
	newrt2.SaveAsBMP("testtest.bmp");

	m_hShadowTexture=RSCreateTexture(
		newrt2.GetWidth(),newrt2.GetHeight(),
		(char*)newrt2.GetData(),NULL,true,"Object:ShadowTexture");
}
Beispiel #14
0
//////////////////////////////////////////////////////////////////////////
//	setForce
//////////////////////////////////////////////////////////////////////////
void RCharCloth::setForce( rvector& force_ )
{
	if( mInitParticle )
	{
		mForceField = rvector( 0.0f, 0.0f, 0.0f );
	}
	else
	{
		D3DXVECTOR4 vec;
		rmatrix mat = mWorldInv * mLocalInv ;
		mat._41 = mat._42 = mat._43 = 0;
		D3DXVec3Transform(&vec, &force_, &mat );
		mForceField = rvector( vec.x, vec.y, vec.z );
	}
}
Beispiel #15
0
void ZActor::OnBlastDagger(rvector &dir,rvector& pos)
{
	if (!CheckFlag(AF_MY_CONTROL)) return;

	if (m_pNPCInfo->bNeverBlasted) return;

	rvector act_dir = GetDirection();
	act_dir.x = -dir.x;
	act_dir.y = -dir.y;
	SetDirection(act_dir);

	SetVelocity(dir * 300.f + rvector(0,0,100.f));

	m_vAddBlastVel = GetPosition() - pos;
	m_vAddBlastVel.z = 0.f;

	Normalize(m_vAddBlastVel);

	m_fAddBlastVelTime = g_pGame->GetTime();

	m_fDelayTime = 3.0f;

	SetFlag(AF_BLAST_DAGGER, true);
	SetFlag(AF_LAND, false);

	m_Animation.Input(ZA_EVENT_BLAST_DAGGER);
}
ZEFFECTBILLBOARDITEM * ZEffectBillboardList::Add(rvector &pos,rvector &velocity,rvector &accel,float fStartSize,float fEndSize,float fLifeTime,DWORD color,bool bTrainSmoke)
{
	ZEFFECTBILLBOARDITEM *pNewItem = new ZEFFECTBILLBOARDITEM;

	push_back(pNewItem);

	pNewItem->fElapsedTime=0;
	pNewItem->velocity=velocity;
	pNewItem->normal=-RCameraDirection;
	pNewItem->up=rvector(0,0,1);
	pNewItem->accel=accel;
	pNewItem->position=pos;
	pNewItem->fStartSize=fStartSize;
	pNewItem->fEndSize=fEndSize;
	pNewItem->fCurScale = fStartSize;
	pNewItem->fOpacity=1.f;
	pNewItem->dwColor = color;
	pNewItem->bUseTrainSmoke = bTrainSmoke;
	pNewItem->bUseSteamSmoke = false;
	pNewItem->nDir = -1;
	
	if(fLifeTime==-1)
		pNewItem->fLifeTime = m_fLifeTime;
	else
		pNewItem->fLifeTime=fLifeTime;

	return pNewItem;
}
void ZCharacterObject::EnChantWeaponEffect(ZC_ENCHANT etype,int nLevel)
{
    float fSwordSize = m_pVMesh->GetWeaponSize();

    fSwordSize -= 35.f;//¼ÕÀâÀÌ Å©±â Á¤µµ¸¦ »©ÁØ´Ù...

    ZEffectWeaponEnchant* pEWE = NULL;

    if( etype != ZC_ENCHANT_NONE )
        pEWE = ZGetEffectManager()->GetWeaponEnchant( etype );

    if(pEWE) {

        //Ç¥ÁØ »çÀÌÁî´Â īŸ³ª... 105 Á¤µµ..

        float fSIze = fSwordSize / 100.f;

        float fVolSize = 1.f;

        if(nLevel==0) fVolSize = 0.6f;
        else if(nLevel==1) fVolSize = 0.75f;
        else if(nLevel==2) fVolSize = 1.0f;
        else			   fVolSize = 1.25f;

        rvector vScale = rvector(0.7f*fSIze*fVolSize,0.7f*fSIze*fVolSize,1.1f*fSIze);// ¹«±âÀÇ Å©±â¿¡ µû¶ó¼­..
        pEWE->SetUid( m_UID );
        pEWE->SetAlignType(1);
        pEWE->SetScale(vScale);
        pEWE->Draw(timeGetTime());
    }
}
Beispiel #18
0
void ZActor::InitMesh(char* szMeshName, MQUEST_NPC nNPCType)
{
	// for test
	RMesh* pMesh;

	pMesh = ZGetNpcMeshMgr()->Get(szMeshName);
	if(!pMesh) 
	{
		_ASSERT(0);
		mlog("ZActor::InitMesh() -  원하는 모델을 찾을수 없음\n");
		return;
	}

	int nVMID = g_pGame->m_VisualMeshMgr.Add(pMesh);
	if(nVMID==-1) mlog("ZActor::InitMesh() - 캐릭터 생성 실패\n");

	RVisualMesh* pVMesh = g_pGame->m_VisualMeshMgr.GetFast(nVMID);

	SetVisualMesh(pVMesh);

	pVMesh->SetScale(rvector(15,15,15));

	m_Animation.Set(ZA_ANIM_RUN);

	pVMesh->m_FrameInfo[0].m_pAniIdEventSet = ZGetAniEventMgr()->GetAniIDEventSet((int)nNPCType);
}
Beispiel #19
0
static void mrqcof(real x[], real y[], real sig[], int ndata, real a[], 
		   int ma, int lista[], int mfit, 
		   real **alpha, real beta[], real *chisq,
		   void (*funcs)(real,real *,real *,real *)) 
{
  int k,j,i;
  real ymod,wt,sig2i,dy,*dyda;
  
  dyda=rvector(1,ma);
  for (j=1;j<=mfit;j++) {
    for (k=1;k<=j;k++) alpha[j][k]=0.0;
    beta[j]=0.0;
  }
  *chisq=0.0;
  for (i=1;i<=ndata;i++) {
    (*funcs)(x[i],a,&ymod,dyda);
    sig2i=1.0/(sig[i]*sig[i]);
    dy=y[i]-ymod;
    for (j=1;j<=mfit;j++) {
      wt=dyda[lista[j]]*sig2i;
      for (k=1;k<=j;k++)
	alpha[j][k] += wt*dyda[lista[k]];
      beta[j] += dy*wt;
    }
    (*chisq) += dy*dy*sig2i;
  }
  for (j=2;j<=mfit;j++)
    for (k=1;k<=j-1;k++) alpha[k][j]=alpha[j][k];
  free_vector(dyda,1);
}
Beispiel #20
0
ZEffectBase::ZEffectBase(void)
{
	m_fLifeTime=2.f;
	m_fVanishTime=1.f;
	m_pBaseTexture=NULL;
	m_Scale=rvector(1.f,1.f,1.f);
}
Beispiel #21
0
void mrqcof_new(real x[], real y[], real sig[], int ndata, real a[],
                int ia[], int ma, real **alpha, real beta[], real *chisq,
                void (*funcs)(real, real [], real *, real[]))
/* Used by mrqmin to evaluate the linearized fitting matrix alpha, and
 * vector beta as in (15.5.8), and calculate Chi^2.
 */
{
    int  i, j, k, l, m, mfit = 0;
    real ymod, wt, sig2i, dy, *dyda;

    dyda = rvector(1, ma);
    for (j = 1; j <= ma; j++)
    {
        if (ia[j])
        {
            mfit++;
        }
    }
    for (j = 1; j <= mfit; j++) /* Initialize (symmetric) alpha), beta. */
    {
        for (k = 1; k <= j; k++)
        {
            alpha[j][k] = 0.0;
        }
        beta[j] = 0.0;
    }
    *chisq = 0.0;
    for (i = 1; i <= ndata; i++) /* Summation loop over all data. */
    {
        (*funcs)(x[i], a, &ymod, dyda);
        sig2i = 1.0/(sig[i]*sig[i]);
        dy    = y[i]-ymod;
        for (j = 0, l = 1; l <= ma; l++)
        {
            if (ia[l])
            {
                wt = dyda[l]*sig2i;
                for (j++, k = 0, m = 1; m <= l; m++)
                {
                    if (ia[m])
                    {
                        alpha[j][++k] += wt*dyda[m];
                    }
                }
                beta[j] += dy*wt;
            }
        }
        *chisq += dy*dy*sig2i;  /* And find Chi^2. */
    }
    for (j = 2; j <= mfit; j++) /* Fill in the symmetric side. */
    {
        for (k = 1; k < j; k++)
        {
            alpha[k][j] = alpha[j][k];
        }
    }
    free_vector(dyda, 1);
}
Beispiel #22
0
ZObserver::ZObserver()
{
	m_pTargetCharacter = NULL;
	m_bVisible = false;
	m_pIDLResource = NULL;
//	m_nLookType = ZOLM_BACKVIEW;
	m_FreeLookTarget = rvector(0.0f, 0.0f, 0.0f);
	m_nType = ZOM_ANYONE;
}
Beispiel #23
0
void ZActor::Attack_Range(rvector& dir)
{
	m_Animation.Input(ZA_INPUT_ATTACK_RANGE);

	SetDirection(dir);
	rvector pos;
	pos = m_Position + rvector(0, 0, 100);
	ZPostNPCRangeShot(GetUID(), g_pGame->GetTime(), pos, pos + 10000.f*dir, MMCIP_PRIMARY);
}
Beispiel #24
0
rvector ZMapDesc::GetQuestSectorLink(int nIndex)
{
	if ((nIndex < 0) || (nIndex >= MAX_QUEST_MAP_SECTOR_COUNT)) 
	{
		_ASSERT(0);
		return rvector(0,0,0);
	}

	return m_QuestMapDesc.m_vLinks[nIndex];
}
bool ZEffectIcon::Draw(unsigned long int nTime)
{
    ZObject* pObj = ZGetObjectManager()->GetObject(m_uid);

    if(pObj) {
        m_Pos = pObj->GetVisualMesh()->GetHeadPosition()+rvector(0,0,60);
        return ZEffectAniMesh::Draw(nTime);
    }
    return false;
}
ZEffectAniMesh::ZEffectAniMesh(RMesh* pMesh, const rvector& Pos, rvector& dir)
{
    _ASSERT(pMesh);
    m_VMesh.Create(pMesh);
    bool bRet=m_VMesh.SetAnimation("play");
//	_ASSERT(bRet);
    m_VMesh.m_bCalcBoxWithScale = true;

    m_Pos = Pos;
    m_Dir = dir;
    m_DirOrg = dir;

    m_fRotateAngleZ = 0;
    m_fRotateAngleY = 0;
    m_nStartTime = timeGetTime();

    m_Scale = rvector(1.f,1.f,1.f);

    m_nDrawMode = ZEDM_NONE;
    m_nAlignType = 0;
    m_nLifeTime = -1;

    m_nStartAddTime = 0;

    m_bDelay	= false;
    m_isCheck	= false;
    m_bLoopType = false;

    AniFrameInfo* pInfo = m_VMesh.GetFrameInfo(ani_mode_lower);

    if(pInfo && pInfo->m_pAniSet) {
        if(pInfo->m_pAniSet->GetAnimationLoopType() == RAniLoopType_Loop) {
            m_bLoopType = true;
        }
    }

    m_Up = rvector(0.f,0.f,1.f);

    m_vBackupPos = rvector(-999.f,-999.f,-999.f);

    m_nAutoAddEffect = ZEffectAutoAddType_None;
}
Beispiel #27
0
//////////////////////////////////////////////////////////////////////////
// 생성자
//////////////////////////////////////////////////////////////////////////
RCharCloth::RCharCloth(void)
{
	mForceField = rvector( 0,0,0 );
	mInitParticle = true;
	mUpdateStatus	= ALL;
	m_pVertexBuffer	= 0;
	mTime			= 0;
	m_nCntC			= 0;
	mpInitNormal	= 0;
	++gRef;	
}
Beispiel #28
0
_NAMESPACE_REALSPACE2_BEGIN

RWeaponTracks::RWeaponTracks() 
{
	m_pVert = NULL;
	m_pNode = NULL;

	m_max_size				= 0;
	m_current_vertex_size	= 0;
	m_vertex_size			= 0;
	m_spline_vertex_size	= 0;
	m_current_node_size		= 0;
	m_current_spline_vertex_size = 0;

	m_bSpline = true;
//	m_bSpline = false;

	m_vSwordPos[0] = rvector(0,0,0);
	m_vSwordPos[1] = rvector(0,0,0);
}
//////////////////////////////////////////////////////////////////////////
//	Constructor / Desturctor
//////////////////////////////////////////////////////////////////////////
ZShadow::ZShadow()
{
	// normal은 +z
	mNormal = rvector( 0.f, 0.f, 1.f);

	D3DXMatrixIdentity( &mWorldMatLF );
	D3DXMatrixIdentity( &mWorldMatRF );

	bLFShadow = false;
	bRFShadow = false;
}
Beispiel #30
0
void ZMapDesc::DrawSmokeSS(ZMapSmokeSS* pDummy)
{
	if(!pDummy) return;

	float f = pDummy->m_nDelay / 1000.f;

	float _time = GetThisTime();

	if( _time > pDummy->m_fDrawBackupTime + f)
//	if( _time > pDummy->m_fDrawBackupTime + 0.6f)
	{
		rvector addpos = rvector(0,0,0);

		if( rand()%2 )	addpos.x =  rand()%100;
		else			addpos.x = -rand()%100;

		if( rand()%2 )	addpos.y =  rand()%100;
		else			addpos.y = -rand()%100;

//		float fLife       = 6.f + (rand()%5);
		float fLife		  = pDummy->m_fLife + (rand()%5);
		float fStartScale = pDummy->m_fSize + (rand()%50);
		float fEndScale   = pDummy->m_fSize * 10 + (rand()%300);

		ZGetEffectManager()->AddMapSmokeSSEffect(	
			pDummy->m_vPos + addpos ,				// target
			rvector(0,0,500),						// dir				
			pDummy->m_vDir*pDummy->m_fPower,		// acc
			pDummy->m_dwColor,						// 
			pDummy->m_nDelay,						// 갱신 주기에 써야한다.
			fLife ,
			fStartScale ,
			fEndScale 
		);

		pDummy->m_fDrawBackupTime = _time;

	}
}