示例#1
0
void saiki(std::list<AnimParameter*>& list, std::list<AnimParameter*>::iterator& f){
	if (f == list.begin()) return;
	auto cp = *f;
	auto d = --f;
	auto dp = *d;
	saiki(list, f);
	if (cp->beforeAnimBlend >= 1.0f){
		list.remove(dp);
		delete (dp);
	}
}
示例#2
0
文件: test.c 项目: chokudai/TopCoder
int saiki(int now, int nowi, int nowj){
    int i;
    int ni,nj;
    if(now==(1<<(count-1))-1) return 1;
    if(now&1) return 0;
    if(dp[now][board[nowi][nowj]-1]!=0) return dp[now][board[nowi][nowj]-1]-1;
    int res = 0;
    for(i=0;i<4;i++){
        ni = nowi; nj = nowj;
        for(;;){
            ni += vx[i]; nj += vy[i];;
            if(ok(ni,nj)==0) break;
            if(board[ni][nj]!=0){
                if((now>>(board[ni][nj]-1))&1) break;
                else res += saiki(now+(1<<(board[ni][nj]-1)),ni,nj);
            }
        }
    }
示例#3
0
void Graphic::BindAnimation(ActorPtr actor, SHADER_ID id, float frameTime){
	Matrix4 animMat[BONEMAXCOUNT];
	auto ite = animParameter[actor].begin();
	auto i = (*ite);
	animation.AnimBlend(animMat, i->animMat, i->animTime, i->animMat2, i->animTime2, i->animBlend, i->roopFlag);
	i->animTime += (*i->updateAnimTime)  * frameTime;
	if (i->updateAnimTime2 != NULL)
		i->animTime2 += (*i->updateAnimTime2) * frameTime;

	if (i->beforeAnimBlend < 1.0f)
		i->beforeAnimBlend += (*i->beforeAnimBlendTime) * frameTime;
	else i->beforeAnimBlend = 1.0f;


	for (ite++; ite != animParameter[actor].end(); ++ite){
		i = (*ite);
		Matrix4 animMat2[BONEMAXCOUNT];
		animation.AnimBlend(animMat2, i->animMat, i->animTime, i->animMat2, i->animTime2, i->animBlend, i->roopFlag);
		animation.AnimBlend(animMat, animMat2, i->beforeAnimBlend, i->animMat);

		i->animTime += (*i->updateAnimTime)  * frameTime;
		if (i->updateAnimTime2 != NULL)
			i->animTime2 += (*i->updateAnimTime2) * frameTime;

		if (i->beforeAnimBlend < 1.0f)
			i->beforeAnimBlend += (*i->beforeAnimBlendTime) * frameTime;
		else i->beforeAnimBlend = 1.0f;

	}

	saiki(animParameter[actor], --animParameter[actor].end());

	animation.BindAnim(&shader[id], animMat);

	animBind = true;
}