From: Anders R. <ma...@us...> - 2003-08-16 17:12:36
|
Update of /cvsroot/planeshift/planeshift/src/client In directory sc8-pr-cvs1:/tmp/cvs-serv28237/src/client Modified Files: cmdusers.cpp psclientchar.cpp psengine.cpp psengine.h Log Message: - Added spell casting animations. Now the animation given in the db is played when a character cast a spell. Index: cmdusers.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/cmdusers.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** cmdusers.cpp 7 Aug 2003 22:48:37 -0000 1.24 --- cmdusers.cpp 16 Aug 2003 17:12:33 -0000 1.25 *************** *** 159,179 **** if (!strcmp(cmd,"/greet")) { csRef<iPSEngine> engine = CS_QUERY_REGISTRY(objreg, iPSEngine); ! iCelEntity *ent = engine->GetCelClient()->GetMainActor(); ! if (ent) ! { ! csRef<iPcMesh> pcmeshref; ! pcmeshref = CEL_QUERY_PROPCLASS( ent->GetPropertyClassList(), iPcMesh ); ! if (pcmeshref) ! { ! csRef<iSprite3DState> spstate = ! SCF_QUERY_INTERFACE(pcmeshref->GetMesh()->GetMeshObject(), ! iSprite3DState); ! ! // Player must be standing for anim to happen ! if (!strcmp(spstate->GetCurAction()->GetName(),"stand")) ! spstate->SetOverrideAction(cmd+1); ! } ! } } --- 159,167 ---- if (!strcmp(cmd,"/greet")) { + csRef<iPSEngine> engine = CS_QUERY_REGISTRY(objreg, iPSEngine); ! ! engine->SetAnimation("greet"); ! } Index: psclientchar.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/psclientchar.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** psclientchar.cpp 16 Aug 2003 13:30:54 -0000 1.39 --- psclientchar.cpp 16 Aug 2003 17:12:33 -0000 1.40 *************** *** 504,507 **** --- 504,515 ---- effectName.GetData(),effect_script.GetData()); + csString animation; + tag.GetTagParm("ANIMATION",animation); + if (animation != "") + { + csRef<iPSEngine> engine = CS_QUERY_REGISTRY(objectReg,iPSEngine); + engine->SetAnimation(animation); + } + switch (effect.command) { *************** *** 789,790 **** --- 797,799 ---- bottom.x,bottom.y,bottom.z,sector->QueryObject()->GetName()); } + Index: psengine.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/psengine.cpp,v retrieving revision 1.279 retrieving revision 1.280 diff -C2 -d -r1.279 -r1.280 *** psengine.cpp 7 Aug 2003 23:11:45 -0000 1.279 --- psengine.cpp 16 Aug 2003 17:12:33 -0000 1.280 *************** *** 775,778 **** --- 775,803 ---- } + bool psEngine::SetAnimation(const char * animation) + { + iCelEntity *ent = GetCelClient()->GetMainActor(); + if (ent) + { + csRef<iPcMesh> pcmeshref; + pcmeshref = CEL_QUERY_PROPCLASS( ent->GetPropertyClassList(), iPcMesh ); + if (pcmeshref) + { + csRef<iSprite3DState> spstate = + SCF_QUERY_INTERFACE(pcmeshref->GetMesh()->GetMeshObject(), + iSprite3DState); + + // Player must be standing for anim to happen + if (!strcmp(spstate->GetCurAction()->GetName(),"stand")) + { + spstate->SetOverrideAction(animation); + return true; + } + } + } + return false; + } + + // ---------------------------------------------------------------------------- Index: psengine.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/psengine.h,v retrieving revision 1.84 retrieving revision 1.85 diff -C2 -d -r1.84 -r1.85 *** psengine.h 25 Jul 2003 01:40:56 -0000 1.84 --- psengine.h 16 Aug 2003 17:12:33 -0000 1.85 *************** *** 127,130 **** --- 127,133 ---- static void QuitClientCallback(void* arg); + /// Start a animation + virtual bool SetAnimation(const char * animation); + class psLoadState : public iLoadState { |