コード例 #1
0
void ServerLBA1ModelClass::LoadAnim(entitiesTableStruct* entitiesData, int animNum)
{
	if(animPtr)
		free(animPtr);

	unsigned char* localAnim; // changed unsigned

	m_currentSpeedX = 0;
	m_currentSpeedY = 0;
	m_currentSpeedZ= 0;


	currentKeyFrame=0;
    animsize = loadResource(m_animPath.c_str(),animNum, &localAnim);

	lastCurrentX =0;
	lastCurrentY =0;
	lastCurrentZ =0;

	currentX =0;
	currentY =0;
	currentZ =0;

	cumutime = 0;

	setAnimAtKeyFrame(0,(unsigned char*)localAnim,Elements,true);

	animPtr=(unsigned char*)localAnim;
}
コード例 #2
0
ファイル: anim.cpp プロジェクト: somaen/twin-e
int InitAnim(char newAnim, short int arg_4, unsigned char arg_8, short int actorNum) {
	actor *lactor;
	int animIndex;

	lactor = &actors[actorNum];

	if (lactor->costumeIndex == -1)
		return (0);

	if (lactor->staticFlagsBF.isSpriteActor) // si c'est un sprite
		return (0);

	if (newAnim == lactor->anim && lactor->previousAnimIndex != -1) // le costume est deja loade
		return (1);

	if (arg_8 == 255 && lactor->field_78 != 2)
		arg_8 = lactor->anim;

	animIndex = getAnimIndexForBody(newAnim, actorNum);

	if (animIndex == -1)
		animIndex = getAnimIndexForBody(0, actorNum);

	if (arg_4 != 4 && lactor->field_78 == 2) {
		lactor->field_2 = newAnim;
		return (0);
	}

	if (arg_4 == 3) {
		arg_4 = 2;

		arg_8 = lactor->anim;

		if (arg_8 == 15 || arg_8 == 7 || arg_8 == 8 || arg_8 == 9) {
			arg_8 = 0;
		}
	}

	if (arg_4 == 4)
		arg_4 = 2;

	if (lactor->previousAnimIndex == -1) {  // if no previous animation
		setAnimAtKeyFrame(0, HQR_Get(HQR_Anims, animIndex), bodyPtrTab[lactor->costumeIndex], &lactor->_animTimerData);  // set animation directly to first keyFrame
	} else { // interpolation between animations
		bufAni2 += StockInterAnim((char *) bufAni2, (char *) bodyPtrTab[lactor->costumeIndex], &lactor->_animTimerData);
		if (bufAni1 + 4488 > bufAni2)
			bufAni2 = bufAni1;
	}

	lactor->previousAnimIndex = animIndex;
	lactor->anim = newAnim;
	lactor->field_2 = arg_8;
	lactor->animExtraData = loadTwinsenCostumesVar1;
	lactor->field_78 = arg_4;
	lactor->animPosition = 0;
	lactor->dynamicFlagsBF.bUnk0002 = 0;
	lactor->dynamicFlagsBF.animEnded = 0;
	lactor->dynamicFlagsBF.bUnk0008 = 1;

	if (lactor->animExtraData) {
		GereAnimAction(lactor, actorNum);
	}

	lactor->lastRotationSpeed = 0;
	lactor->lastX = 0;
	lactor->lastY = 0;
	lactor->lastZ = 0;

	return (1);
}