bool CItemSpawn::r_LoadVal(CScript & s) { ADDTOCALLSTACK("CitemSpawn:r_LoadVal"); EXC_TRY("LoadVal"); if (g_Serv.IsLoading()) { if (!strnicmp(s.GetKey(), "more2", 5)) //More2 shouldn't be loaded as it's being set with ADDOBJ return true; } int iCmd = FindTableSorted(s.GetKey(), sm_szLoadKeys, COUNTOF(sm_szLoadKeys) - 1); if (iCmd < 0) return CItem::r_LoadVal(s); switch (iCmd) { case ISPW_ADDOBJ: { CGrayUID uid = static_cast<CGrayUID>(s.GetArgVal()); if ( uid.ObjFind() ) AddObj(uid); return true; } case ISPW_DELOBJ: { CGrayUID uid = static_cast<CGrayUID>(s.GetArgVal()); if (uid.ObjFind()) DelObj(uid); return true; } case ISPW_RESET: KillChildren(); return true; case ISPW_START: SetTimeout(0); return true; case ISPW_STOP: KillChildren(); SetTimeout(-1); return true; default: break; } EXC_CATCH; return false; }
bool CItemSpawn::r_LoadVal(CScript & s) { ADDTOCALLSTACK("CitemSpawn:r_LoadVal"); EXC_TRY("LoadVal"); int iCmd = FindTableSorted(s.GetKey(), sm_szLoadKeys, COUNTOF(sm_szLoadKeys) - 1); if ( iCmd < 0 ) return CItem::r_LoadVal(s); switch ( iCmd ) { case ISPW_ADDOBJ: { AddObj(static_cast<CGrayUID>(s.GetArgVal())); return true; } case ISPW_AMOUNT: { SetAmount(static_cast<BYTE>(s.GetArgVal())); return true; } case ISPW_DELOBJ: { DelObj(static_cast<CGrayUID>(s.GetArgVal())); return true; } case ISPW_RESET: KillChildren(); return true; case ISPW_START: SetTimeout(0); return true; case ISPW_STOP: KillChildren(); SetTimeout(-1); return true; default: break; } EXC_CATCH; return false; }
//Private Method: Inorder resetting the tree void NeuralTree::InorderReset(TreeNode* n) { if(n->left != NULL) InorderReset(n->left); if(n->leaf){ if(n->alignment!=NULL) delete n->alignment; n->alignment=NULL; n->members=0; KillChildren(n); } if(n->right != NULL) InorderReset(n->right); }
bool Particle::Update() { TLFXLOG(PARTICLES, ("particle #%p update", this)); Capture(); if (_emitter->IsDying() || _emitter->IsOneShot() || _dead) _releaseSingleParticle = true; if (_emitter->IsSingleParticle() && !_releaseSingleParticle) { _age = _particleManager->GetCurrentTime() - _dob; if (_age > _lifeTime) { _age = 0; _dob = _particleManager->GetCurrentTime(); } } else { _age = _particleManager->GetCurrentTime() - _dob; } base::Update(); if (_age > _lifeTime || _dead == 2) // if dead=2 then that means its reached the end of the line (in kill mode) for line traversal effects { _dead = 1; if (_children.empty()) { _particleManager->ReleaseParticle(this); if (_emitter->IsGroupParticles()) _emitter->GetParentEffect()->RemoveInUse(_layer, this); Reset(); return false; // RemoveChild } else { _emitter->ControlParticle(this); KillChildren(); } return true; } _emitter->ControlParticle(this); return true; }
void widow2_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) { int n; int clipped; // check for gib if (self->health <= self->gib_health) { clipped = min (damage, 100); gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); for (n= 0; n < 2; n++) ThrowWidowGibLoc (self, "models/objects/gibs/bone/tris.md2", clipped, GIB_ORGANIC, NULL, false); for (n= 0; n < 3; n++) ThrowWidowGibLoc (self, "models/objects/gibs/sm_meat/tris.md2", clipped, GIB_ORGANIC, NULL, false); for (n= 0; n < 3; n++) { ThrowWidowGibSized (self, "models/monsters/blackwidow2/gib1/tris.md2", clipped, GIB_METALLIC, NULL, 0, false); ThrowWidowGibSized (self, "models/monsters/blackwidow2/gib2/tris.md2", clipped, GIB_METALLIC, NULL, gi.soundindex ("misc/fhit3.wav"), false); } for (n= 0; n < 2; n++) { ThrowWidowGibSized (self, "models/monsters/blackwidow2/gib3/tris.md2", clipped, GIB_METALLIC, NULL, 0, false); ThrowWidowGibSized (self, "models/monsters/blackwidow/gib3/tris.md2", clipped, GIB_METALLIC, NULL, 0, false); } ThrowGib (self, "models/objects/gibs/chest/tris.md2", clipped, GIB_ORGANIC); ThrowHead (self, "models/objects/gibs/head2/tris.md2", clipped, GIB_ORGANIC); self->deadflag = DEAD_DEAD; return; } if (self->deadflag == DEAD_DEAD) return; gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NONE, 0); self->deadflag = DEAD_DEAD; self->takedamage = DAMAGE_NO; self->count = 0; KillChildren (self); self->monsterinfo.quad_framenum = 0; self->monsterinfo.double_framenum = 0; self->monsterinfo.invincible_framenum = 0; self->monsterinfo.currentmove = &widow2_move_death; }
double BirthDeath(Node *top,int *BD,int *Done) //does either a birth or death step //top: top of tree //BD: on exit, 1 if birth , 0 if death //Done: on exit, 1 if step taken , 0 otherwise { double PGn,Pbot,PBx,PGl,PGr,PDy,Pnog; double PDx,PBy; double temprob; int VarI; int LeftEx,RightEx; double alpha1,alpha2,alpha; double Ly,Lx; Rule *rule=new Rule; Node *n,*tempnode; PBx=PBirth(top,&n,&Pbot); if(Bern(PBx)) { *BD=1; PGn = PGrow(n); Lx = LogLT(n,top); VarI = DrPriVar(n);//draw variable DrPriRule(VarI,n,&LeftEx,&RightEx);//draw rule SpawnChildren(n,LeftEx,RightEx); //create children // this omitted because we will implement it at the metrop level /*if ((((n->LeftC)->DataList).length < 5) || (((n->RightC)->DataList).length < 5)){ // back out if we have less than 5 obs in either new kid; clean up first KillChildren(n); return -1; }*/ PGl = PGrow(n->LeftC); PGr = PGrow(n->RightC); Ly = LogLT(n,top); Pnog = 1.0/((double)(top->NumNogNodes())); PDy = 1.0-PBirth(top,&tempnode,&temprob); alpha1 = (PGn*(1.0-PGl)*(1.0-PGr)*PDy*Pnog)/((1.0-PGn)*PBx*Pbot); alpha2 = alpha1*exp(Ly-Lx); alpha = min(1.0,alpha2); if(Bern(alpha)) { *Done=1; } else { KillChildren(n); *Done=0; } } else { *BD=0; PDx=1-PBx; Pnog = DrNogNode(top,&n); PGl = PGrow(n->LeftC); PGr = PGrow(n->RightC); Lx = LogLT(n,top); CopyRule(&(n->rule),rule); LeftEx=1-((n->LeftC)->VarAvail[(n->rule).Var]); RightEx=1-((n->RightC)->VarAvail[(n->rule).Var]); KillChildren(n); Ly = LogLT(n,top); PBy = PBirth(top,&tempnode,&temprob); PGn = PGrow(n); Pbot=PrBotNode(top,n); alpha1 =((1.0-PGn)*PBy*Pbot)/(PGn*(1.0-PGl)*(1.0-PGr)*PDx*Pnog); alpha2 = alpha1*exp(Ly-Lx); alpha = min(1,alpha2); if(Bern(alpha)) { *Done=1; } else { //put back rule and children CopyRule(rule,&(n->rule)); SpawnChildren(n,LeftEx,RightEx); *Done=0; } } delete rule; return alpha; }