int Window_( lua_State* L ) { UIWindow* window = new UIWindow; SetName(L, window); SetTopLeftWidthHeight(L, window); SetTooltip(L, window); SetAnim(L, window, UIPanel::NORMAL_ANIM_, "normalAnim"); SetAnim(L, window, UIPanel::DISABLED_ANIM_, "disabledAnim"); SetTextUserData(L, window); AddWidget(L, window); // 配置关闭按钮 if (util::HasField(L, "closeBtn")) { lua_pushstring(L, "closeBtn"); lua_gettable(L, -2); if (lua_istable(L, -1)) SetButton(L, window->GetCloseButton()); lua_pop(L, 1); } SetAlpha(L, window); lua_pushlightuserdata(L, window); return 1; }
int gere_key(t_game *game, t_sprite *SP, Uint8 *keys) { int j; int control[2] = {SDLK_LEFT, SDLK_RIGHT}; Sint16 vec[2][2] = {{-1,0},{1,0}}; Sint16 speed = 2; int speedanim = 100; int move; j = -1; move = 0; while (++j < 2) { if (keys[control[j]]) { move = 1; if (SP->status == STAT_STOP || SP->sens != j) SetAnim(&SP->anim,0 + SP->sprite->nbx * j, 3 ,speedanim); SP->sens = j; SP->pos.x += speed*vec[j][0]; SP->pos.y += speed*vec[j][1]; SP->status = STAT_WALK; } } if (SP->status == STAT_WALK && !move) { SetAnim(&SP->anim, 4, 1, 1); SP->status = STAT_STOP; } case_overflow(game, &game->darien.darien); return (0); }
void Animated::SetAnim(Animated::Anim anim) { if (!m_pModel) { //std::cout << "Warning: Animated: anim set but MD2 model not set yet\n"; return; } // These names match order of Anim enum. The strings are the same in the MD2 model. // We allow MD2s to have anims in any order, so we look up per-model. static const int NUM_ANIMS = 3; static const char* ANIM_NAMES[NUM_ANIMS] = { "stand", "walk", "walk" // because no run, TODO }; if (anim >= NUM_ANIMS) { std::cout << "WARNING Bad anim: " << (int)anim << " for Animated!!\n"; return; } if (m_pModel->IsValidName(ANIM_NAMES[anim])) { int animCode = m_pModel->GetAnimationFromName(ANIM_NAMES[anim]); SetAnim(animCode); } else { std::cout << "WARNING Invalid anim name: " << ANIM_NAMES[anim] << " for Animated!\n"; } }
void C_Anim::Setup(long ID,short Type,long AnimID) { SetID(ID); SetType(Type); SetDefaultFlags(); SetAnim(AnimID); }
bool CGSComboFire::Update(CAnimData& data, float dt, CStateManager& mgr) { if (x8_cueAnimId != -1) { x0_delay -= dt; if (x0_delay <= 0.f) { data.EnableLooping(x4_loopState == 1); CAnimPlaybackParms aparms(x8_cueAnimId, -1, 1.f, true); data.SetAnimation(aparms, false); x0_delay = 0.f; x8_cueAnimId = -1; } } else if (!data.IsAnimTimeRemaining(0.001f, "Whole Body")) { switch (x4_loopState) { case 0: SetAnim(data, xc_gunId, 1, mgr, 0.f); switch (xc_gunId) { case 4: case 0: case 1: x10_24_over = true; break; default: break; } break; case 2: x4_loopState = -1; return true; default: break; } } return false; }
Pato::Pato(float angulo,float force):GameObject(true,"..//Imagenes//Pato.png",4) { time_lastFrame = 0; time_CountPattern = 0; time_nextPattern =(float) (rand()%3+4); Pato::angulo = angulo; Pato::force = force; SetAnim(0,2); isMorir = false; }
int Panel(lua_State* L) { UIPanel* panel = new UIPanel; SetName(L, panel); SetTopLeftWidthHeight(L, panel); SetTooltip(L, panel); SetAnim(L, panel, UIPanel::NORMAL_ANIM_, "normalAnim"); SetAnim(L, panel, UIPanel::DISABLED_ANIM_, "disabledAnim"); SetTextUserData(L, panel); AddWidget(L, panel); SetAlpha(L, panel); lua_pushlightuserdata(L, panel); return 1; }
CParticle::CParticle(ParticleType type, unsigned x, unsigned y, sf::Image explosion) : Animated(true, true, 0.05f) { m_explosion = explosion; switch (type) { case Middle: m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(169, 215, 199, 244))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(34, 215, 64, 244))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(171, 69, 201, 99))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(34, 67, 64, 96))); break; case HorizontalLeft: m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(142, 219, 166, 242))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(4, 217, 32, 244))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(139, 69, 169, 96))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(0, 68, 32, 97))); break; case HorizontalRight: m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(234, 219, 258, 240))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(99, 217, 127, 243))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(235, 70, 267, 98))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(99, 67, 129, 96))); break; case VerticalUp: m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(172, 156, 196, 180))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(35, 152, 63, 180))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(171, 5, 200, 34))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(35, 0, 64, 32))); break; case VerticalDown: m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(171, 247, 195, 272))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(35, 247, 62, 276))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(172, 100, 201, 129))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(34, 99, 64, 129))); break; case Horizontal: m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(201, 218, 231, 242))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(66, 216, 97, 243))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(203, 70, 234, 99))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(66, 67, 97, 97))); break; case Vertical: m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(169, 181, 196, 213))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(34, 182, 63, 213))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(169, 36, 202, 67))); m_anim.PushFrame(Frame(&m_explosion, sf::Rect<int>(33, 33, 65, 65))); break; } SetAnim(&m_anim); m_type = type; SetPosition(x * BLOCK_SIZE, y * BLOCK_SIZE); m_x = x; m_y = y; }
int Progressbar(lua_State* L) { UIProgressbar* progressbar = new UIProgressbar; SetName(L, progressbar); SetTopLeftWidthHeight(L, progressbar); SetTooltip(L, progressbar); SetAnim(L, progressbar, UIProgressbar::BOTTOM_ANIM_, "bottomAnim"); SetAnim(L, progressbar, UIProgressbar::MID_ANIM_, "midAnim"); SetAnim(L, progressbar, UIProgressbar::TOP_ANIM_, "topAnim"); SetTextUserData(L, progressbar); AddWidget(L, progressbar); SetAlpha(L, progressbar); lua_pushlightuserdata(L, progressbar); return 1; }
void KaeruKing::_Move() { SetAnim(mStatus); // 行動 switch( mStatus ){ case JUMP: MapAtHt(); if( mAtari[0] == SP->CHIP_AMHIT || mAtari[0] == SP->CHIP_KGHIT || mCurAshiba ){ //下当たってる mSpY = 0; mSpX = 0; mAccX = 0; mAccY = 0; if( !mCurAshiba ) mY = mShirabe[0] - sMapAtHanteiY[0][0]; mStatus = TAIKI; } else{ mAccY = SP->GRAVITY; } if(mAtari[2] == SP->CHIP_HIT || mAtari[2] == SP->CHIP_KGHIT || mAtari[2] == SP->CHIP_GMNGAIRT || mAtari[2] == SP->CHIP_GMNGAILT ){ // 前当たってる mMuki = !mMuki; mSpX *= -1; } break; case TAIKI: WAIT_TIMER(mTaikiTimer, KTAIKI_TIME) { mStatus = JUMP_START; if( mCurAshiba ) { mCurAshiba->GetOff(this); mCurAshiba = NULL; } } WAIT_END break; case JUMP_START: WAIT_TIMER(mTaikiTimer, KJUMPSTART_TIME) { mStatus = JUMP; mSpX = (mMuki?1:-1)*KJMPSPX; mSpY = -sqrt(2 * SP->GRAVITY * KJMPTAKASA); //SE if( !IsGamenGai() ) GAMECONTROL->GetSoundController()->PlaySE("audio\\se\\se_kaeru_junp.wav"); }
int Button(lua_State* L) { UIButton* btn = new UIButton; SetName(L, btn); SetTopLeftWidthHeight(L, btn); SetTooltip(L, btn); SetAnim(L, btn, UIButton::NORMAL_ANIM_, "normalAnim"); SetAnim(L, btn, UIButton::HOVERED_ANIM_, "hoveredAnim"); SetAnim(L, btn, UIButton::PRESSED_ANIM_, "pressedAnim"); SetAnim(L, btn, UIButton::DISABLED_ANIM_, "disabledAnim"); SetTextUserData(L, btn); SetPressedSoundKey(L, btn); AddWidget(L, btn); SetAlpha(L, btn); lua_pushlightuserdata(L, btn); return 1; }
void LightKobitoBlue::_Move() { LightKobito::_Move(); SetAnim( mStatus ); mSpX += mAccX; mSpY += mAccY; mX += mSpX; mY += mSpY; Teki::Draw(); }
CGEnElement* CGEnMain::DrawElement(float x, float y, float z, CGEnAnim *anim, int frame_in_starttime, UI starttime) { if(!anim) return 0; CLightTex *tex = anim->GetFrameTex(0); if(!tex) return 0; CGEnElement *el = DrawElement(x,y,z,tex); if(el){ SetAnim(el,anim,frame_in_starttime,starttime); } return el; }
CMD2Model::CMD2Model( void ) { m_vertices = 0; m_glcmds = 0; m_lightnormals = 0; num_frames = 0; num_xyz = 0; num_glcmds = 0; m_texid = 0; m_scale = 1.0; SetAnim( 0 ); }
int CGEnMain::SetPicture(CGEnElement *el, CGEnResource *res, int frame_in_starttime, UI starttime) { if(!res||!el) return 0; eResourceType type = res->GetType(); if(type==resAnim) return SetAnim(el,(CGEnAnim*)res,frame_in_starttime,starttime); else if(type==resLightTex) { if(el->mel) el->mel->StopAnim(); return SetLightTex(el,(CLightTex*)res); } return 0; }
void CSkelMeshViewer::AttachAnimSet() { guard(CSkelMeshViewer::AttachAnimSet); FindUE4Animations(); CSkelMeshInstance *MeshInst = static_cast<CSkelMeshInstance*>(Inst); const CAnimSet *PrevAnim = Anim; // find next animation set (code is similar to PAGEDOWN handler) int looped = 0; int ObjIndex = -1; bool found = (PrevAnim == NULL); // whether previous AnimSet was found; NULL -> any while (true) { ObjIndex++; if (ObjIndex >= UObject::GObjObjects.Num()) { ObjIndex = 0; looped++; if (looped > 1) break; // no other objects } const UObject *Obj = UObject::GObjObjects[ObjIndex]; const CAnimSet *NewAnim = GetAnimSet(Obj); if (!NewAnim) continue; if (NewAnim == PrevAnim) { if (found) break; // loop detected found = true; continue; } if (found && NewAnim) { // found desired animation set SetAnim(NewAnim); AnimIndex = -1; appPrintf("Bound %s'%s' to %s'%s'\n", Object->GetClassName(), Object->Name, Obj->GetClassName(), Obj->Name); break; } } unguard; }
KariudoKen::KariudoKen(int rXPx, int rYPx) { KARIKENSX = GI("KARIKENSX"); KARIKENSY = GI("KARIKENSY"); KARIKENSPX = GF("KARIKENSPX"); KARIKENKGHANI = GF("KARIKENKGHANI"); KARIKENWTM1 = GF("KARIKENWTM1"); KARIKENWTM2 = GF("KARIKENWTM2"); mX = rXPx; mY = rYPx - sMapAtHanteiY[0][0] + SP->CHSZY; mSizeX = KARIKENSX; mSizeY = KARIKENSY; mStatus = ARUKI; mKgTimer = 0.0f; mSeFl = false; // 当たり判定 AddFrame(FR_KAMAE); AddFrame(FR_ZANZOU); AddFrame(FR_DOWN); AddRect(FR_KAMAE, SP->GRID_BOGYO, 43, 33, 81, 119); AddIndexedRect( FR_KAMAE, SP->GRID_BOUND, TBOUND_IDX, 38, 22, 83, 120); AddRect(FR_ZANZOU, SP->GRID_BOGYO, 43, 33, 81, 119); AddCircle(FR_ZANZOU, SP->GRID_KOUGEKI, 38, 43, 35); AddCircle(FR_ZANZOU, SP->GRID_KOUGEKI, 33, 69, 35); AddIndexedRect( FR_ZANZOU, SP->GRID_BOUND, TBOUND_IDX, 38, 22, 83, 120); AddRect(FR_DOWN, SP->GRID_BOGYO, 43, 33, 81, 119); AddCircle(FR_DOWN, SP->GRID_BOGYO, 20, 62, 11); AddIndexedRect( FR_DOWN, SP->GRID_BOUND, TBOUND_IDX, 38, 22, 83, 120); //AddCircle(0, GRID_BOGYO, 60, 60, 30); SetAnim(0); }
void GBomb::Explode() { if (anim==1) return; // allready exploding SetAnim(1); GAME_MAXOBJS_TYPE fray_slot; game->IncrementLOID(); fray_slot = game->FindUnusedSlot(); game->RebornObject(game->last_oid, fray_slot, ot_fray); GFray * r1 = (GFray*)game->objs[fray_slot]; r1->owner.Set(owner); r1->xpos.Set(xpos); r1->ypos.Set(ypos); r1->createtime.Set(curtime); r1->ExpandFrayX(power); r1->SetAnim(0); r1->xcenter.Set(xpos); r1->ycenter.Set(ypos); game->IncrementLOID(); fray_slot = game->FindUnusedSlot(); game->RebornObject(game->last_oid, fray_slot, ot_fray); GFray * r2 = (GFray*)game->objs[fray_slot]; r2->owner.Set(owner); r2->xpos.Set(xpos); r2->ypos.Set(ypos); r2->createtime.Set(curtime); r2->ExpandFrayY(power); r2->SetAnim(1); r2->xcenter.Set(xpos); r2->ycenter.Set(ypos); CloneSound(SM_XPLO2, 0, 0); movementx = 0; movementy = 0; state = 0; }
void Dino::Eat(OnFloorCharacter* pet) { Assert(!IsEating()); Assert(!IsDead()); Assert(!pet->IsDead()); Assert(pet->CanBeEaten()); SetAnim("eat"); // Change to eating behaviour SetAI(AITurnToFace::NAME); m_ai->SetTarget(pet); m_ais[AIEatPet::NAME]->SetTarget(pet); // Change texture to bloody version. BlinkCharacter* bc = dynamic_cast<BlinkCharacter*>(GetSceneNode()); Assert(bc); bc->LoadTextures(m_bloodTex[0], m_bloodTex[1]); // TODO Load the textures up front as this will hit frame rate on first load. pet->StartBeingEaten(this); // Pause action and zoom camera on Dino?? }
void Pato::Init_Morir() { SetAnim(2,4); currentframe = 2; isMorir = false; }
CSkelMeshViewer::CSkelMeshViewer(CSkeletalMesh* Mesh0, CApplication* Window) : CMeshViewer(Mesh0->OriginalMesh, Window) , Mesh(Mesh0) , Anim(NULL) , AnimIndex(-1) , IsFollowingMesh(false) , ShowSkel(0) , ShowLabels(false) , ShowAttach(false) , ShowUV(false) , bIsUE4Mesh(false) { guard(CSkelMeshViewer::CSkelMeshViewer); CSkelMeshInstance *SkelInst = new CSkelMeshInstance(); Inst = SkelInst; SkelInst->SetMesh(Mesh); // Automatically attach animation if any CAnimSet* AttachAnim = NULL; if (GForceAnimSet) { AttachAnim = GetAnimSet(GForceAnimSet); if (!AttachAnim) { appPrintf("WARNING: specified wrong AnimSet (%s class) object to attach\n", GForceAnimSet->GetClassName()); GForceAnimSet = NULL; } } else if (Mesh->OriginalMesh->IsA("SkeletalMesh")) // UE2 class { const USkeletalMesh *OriginalMesh = static_cast<USkeletalMesh*>(Mesh->OriginalMesh); if (OriginalMesh->Animation) AttachAnim = OriginalMesh->Animation->ConvertedAnim; } #if UNREAL4 else if (Mesh->OriginalMesh->IsA("SkeletalMesh4")) { // UE4 SkeletalMesh has USkeleton reference, which collects all compatible animations in its PostLoad method const USkeletalMesh4* OriginalMesh = static_cast<USkeletalMesh4*>(Mesh->OriginalMesh); bIsUE4Mesh = true; Skeleton = OriginalMesh->Skeleton; if (Skeleton) AttachAnim = Skeleton->ConvertedAnim; } #endif // UNREAL4 if (AttachAnim) SetAnim(AttachAnim); // compute bounds for the current mesh CVec3 Mins, Maxs; if (Mesh0->Lods.Num()) { const CSkelMeshLod &Lod = Mesh0->Lods[0]; ComputeBounds(&Lod.Verts[0].Position, Lod.NumVerts, sizeof(CSkelMeshVertex), Mins, Maxs); // ... transform bounds SkelInst->BaseTransformScaled.UnTransformPoint(Mins, Mins); SkelInst->BaseTransformScaled.UnTransformPoint(Maxs, Maxs); } else { Mins = Maxs = nullVec3; } // extend bounds with additional meshes for (int i = 0; i < TaggedMeshes.Num(); i++) { CSkelMeshInstance* Inst = TaggedMeshes[i]; if (Inst->pMesh != SkelInst->pMesh) { const CSkeletalMesh *Mesh2 = Inst->pMesh; // the same code for Inst CVec3 Bounds2[2]; const CSkelMeshLod &Lod2 = Mesh2->Lods[0]; ComputeBounds(&Lod2.Verts[0].Position, Lod2.NumVerts, sizeof(CSkelMeshVertex), Bounds2[0], Bounds2[1]); Inst->BaseTransformScaled.UnTransformPoint(Bounds2[0], Bounds2[0]); Inst->BaseTransformScaled.UnTransformPoint(Bounds2[1], Bounds2[1]); ComputeBounds(Bounds2, 2, sizeof(CVec3), Mins, Maxs, true); // include Bounds2 into Mins/Maxs } // reset animation for all meshes TaggedMeshes[i]->TweenAnim(NULL, 0); } InitViewerPosition(Mins, Maxs); #if HIGHLIGHT_CURRENT TimeSinceCreate = -2; // ignore first 2 frames: 1st frame will be called after mesh changing, 2nd frame could load textures etc #endif #if SHOW_BOUNDS appPrintf("Bounds.min = %g %g %g\n", FVECTOR_ARG(Mesh->BoundingBox.Min)); appPrintf("Bounds.max = %g %g %g\n", FVECTOR_ARG(Mesh->BoundingBox.Max)); appPrintf("Origin = %g %g %g\n", VECTOR_ARG(Mesh->MeshOrigin)); appPrintf("Sphere = %g %g %g R=%g\n", FVECTOR_ARG(Mesh->BoundingSphere), Mesh->BoundingSphere.R); #endif // SHOW_BOUNDS unguard; }
void KariudoKen::_Move() { SetAnim( mStatus ); // 自機の位置を取得 int jx = GAMECONTROL->GetJiki()->GetAtHtPointX(); int jy = GAMECONTROL->GetJiki()->GetAtHtPointY(); // ----当たりの処理 MapAtHt(); if( mStatus != SHINDA ) Ataridp(); switch( mStatus ){ case ARUKI: { // ----自機の位置を確認 float sax = jx - CenterX(); float say = jy - CenterY(); float sa = sqrt(sax*sax + say*say); if( sa < KARIKENKGHANI ){ mStatus = WAIT1; } break; } case WAIT1: mSpX = 0; WAIT_TIMER(mKgTimer, KARIKENWTM1); mStatus = KOGEKI; WAIT_END break; case KOGEKI: if( mAniNoX == 2 && !mSeFl ){//SE //SE if( !IsGamenGai() ) GAMECONTROL->GetSoundController()->PlaySE("audio\\se\\se_ken_atack.wav"); mSeFl = true; } mSpX = 0; mMuki = CenterX() < jx; if( mDousaEnd ){ mStatus = WAIT2; mSeFl = false; } break; case WAIT2: mSpX = 0; WAIT_TIMER(mKgTimer, KARIKENWTM2); mStatus = ARUKI; WAIT_END break; } Draw(); mSpX += mAccX; mSpY += mAccY; mX += mSpX + mAshibaSpX; mY += mSpY; // 当たり判定のフレーム if( mStatus != SHINDA ) HtFrame(); }