From: Andrew C. <ac...@us...> - 2003-04-27 03:15:02
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1:/tmp/cvs-serv29917 Modified Files: pscel.cpp Log Message: Fixed up some small issues Index: pscel.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/pscel.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** pscel.cpp 25 Apr 2003 04:24:53 -0000 1.7 --- pscel.cpp 27 Apr 2003 03:14:52 -0000 1.8 *************** *** 77,81 **** ! psCel *celPSObject::cel; --- 77,81 ---- ! psCel *celPSObject::cel = NULL; *************** *** 91,96 **** bl = b_layer; netpersist = net; ! database = db; ! msghandler = msgh; } --- 91,96 ---- bl = b_layer; netpersist = net; ! database = db; ! msghandler = msgh; } *************** *** 98,106 **** { csRef<iCelEntity> ent = pl->CreateEntity(); ! if (obj) ! { ! csHashKey key = ent->GetID(); ! entities.Put(key,obj); ! } return (csPtr<iCelEntity>) ent; } --- 98,106 ---- { csRef<iCelEntity> ent = pl->CreateEntity(); ! if (obj) ! { ! csHashKey key = ent->GetID(); ! entities.Put(key,obj); ! } return (csPtr<iCelEntity>) ent; } *************** *** 108,113 **** void psCel::RemoveEntity(celPSObject *which) { ! csHashKey key = which->GetEntity()->GetID(); ! entities.DeleteAll(key); } --- 108,113 ---- void psCel::RemoveEntity(celPSObject *which) { ! csHashKey key = which->GetEntity()->GetID(); ! entities.DeleteAll(key); } *************** *** 129,137 **** celPSObject *psCel::GetObjectFromEntityList(iCelEntityList *list,int i) { ! iCelEntity *ent = list->Get(i); ! if (ent) ! return FindObject( ent->GetID() ); ! else ! return NULL; } --- 129,137 ---- celPSObject *psCel::GetObjectFromEntityList(iCelEntityList *list,int i) { ! iCelEntity *ent = list->Get(i); ! if (ent) ! return FindObject( ent->GetID() ); ! else ! return NULL; } *************** *** 143,147 **** if (!pl->CreatePropertyClass (list, "pcinventory")) ! return NULL; csRef<iPcInventory> listinv = --- 143,147 ---- if (!pl->CreatePropertyClass (list, "pcinventory")) ! return NULL; csRef<iPcInventory> listinv = *************** *** 170,193 **** #endif ! // Get list of interested clients ! celPSObject *obj = FindObject(candidate->GetID()); ! if (obj) ! { ! if (obj->GetProxList()->FindClient(clientnum)) ! { ! // This was subscribed, so add to temp list ! listinv->AddEntity(candidate); #ifdef PSNETPERSISTDEBUG ! printf("Added\n"); #endif ! } #ifdef PSNETPERSISTDEBUG ! else ! { ! printf("Not added.\n"); ! } #endif ! } ! } //list->IncRef (); return csPtr<iCelEntity> (list); --- 170,193 ---- #endif ! // Get list of interested clients ! celPSObject *obj = FindObject(candidate->GetID()); ! if (obj) ! { ! if (obj->GetProxList()->FindClient(clientnum)) ! { ! // This was subscribed, so add to temp list ! listinv->AddEntity(candidate); #ifdef PSNETPERSISTDEBUG ! printf("Added\n"); #endif ! } #ifdef PSNETPERSISTDEBUG ! else ! { ! printf("Not added.\n"); ! } #endif ! } ! } //list->IncRef (); return csPtr<iCelEntity> (list); *************** *** 207,211 **** { if (!this->cel) ! this->cel = cel; csRef<iCelPropertyClass> pc; --- 207,213 ---- { if (!this->cel) ! this->cel = cel; ! ! proxlist = NULL; csRef<iCelPropertyClass> pc; *************** *** 215,220 **** if (!InitMesh(name,factname,filename,pos,rotangle,room,NULL)) { ! Error1("Could not create Item because mesh could not be Init'd."); ! entity = NULL; return; } --- 217,222 ---- if (!InitMesh(name,factname,filename,pos,rotangle,room,NULL)) { ! Error1("Could not create Item because mesh could not be Init'd."); ! entity = NULL; return; } *************** *** 222,227 **** if (!InitProximityList(DEF_PROX_DIST,clientnum,objID)) { ! Error1("Could not create Item because prox list could not be Init'd."); ! entity = NULL; return; } --- 224,229 ---- if (!InitProximityList(DEF_PROX_DIST,clientnum,objID)) { ! Error1("Could not create Item because prox list could not be Init'd."); ! entity = NULL; return; } *************** *** 230,234 **** celPSObject::~celPSObject() { ! cel->RemoveEntity(this); } --- 232,237 ---- celPSObject::~celPSObject() { ! cel->RemoveEntity(this); ! delete proxlist; } *************** *** 348,352 **** float celPSObject::RangeTo(celPSObject* obj) { ! return proxlist->RangeTo(obj ); } --- 351,355 ---- float celPSObject::RangeTo(celPSObject* obj) { ! return proxlist->RangeTo(obj ); } *************** *** 355,359 **** proxlist = new ProximityList(cel->object_reg,this); ! proxlist->Initialize(clientnum,objID); // store these for fast access later bool subscribed_self=false; --- 358,362 ---- proxlist = new ProximityList(cel->object_reg,this); ! proxlist->Initialize(clientnum,objID); // store these for fast access later bool subscribed_self=false; *************** *** 374,381 **** { celPSObject *nearobj = cel->GetObjectFromEntityList(nearlist,i); ! if (!nearobj) ! continue; ! ProximityList *listnear = nearobj->GetProxList(); /** --- 377,384 ---- { celPSObject *nearobj = cel->GetObjectFromEntityList(nearlist,i); ! if (!nearobj) ! continue; ! ProximityList *listnear = nearobj->GetProxList(); /** *************** *** 384,401 **** * instead. */ ! float range = proxlist->RangeTo(nearobj); ! if (GetClientID()) ! { ! if (GetClientID()==nearobj->GetClientID()) ! subscribed_self=true; #ifdef PSPROXDEBUG ! printf(" %s subscribing to %s\n",GetName(),nearobj->GetName() ); #endif ! proxlist->MutualSubscribe(nearobj->GetClientID(),nearobj,range); ! count++; ! } ! else if (listnear->GetClientID()) ! listnear->MutualSubscribe(GetClientID(),this,range); } } --- 387,404 ---- * instead. */ ! float range = proxlist->RangeTo(nearobj); ! if (GetClientID()) ! { ! if (GetClientID()==nearobj->GetClientID()) ! subscribed_self=true; #ifdef PSPROXDEBUG ! printf(" %s subscribing to %s\n",GetName(),nearobj->GetName() ); #endif ! proxlist->MutualSubscribe(nearobj->GetClientID(),nearobj,range); ! count++; ! } ! else if (listnear->GetClientID()) ! listnear->MutualSubscribe(GetClientID(),this,range); } } *************** *** 443,451 **** for (int i=0; i<nearlist->GetCount(); i++) { ! celPSObject *nearobj = cel->GetObjectFromEntityList(nearlist,i); ! if (!nearobj) ! continue; ! ProximityList *nearlist = nearobj->GetProxList(); /* Attempt a mutual subscription. --- 446,454 ---- for (int i=0; i<nearlist->GetCount(); i++) { ! celPSObject *nearobj = cel->GetObjectFromEntityList(nearlist,i); ! if (!nearobj) ! continue; ! ProximityList *nearlist = nearobj->GetProxList(); /* Attempt a mutual subscription. *************** *** 454,458 **** * the subscription already existed, or could not be processed. */ ! float range = proxlist->RangeTo(nearobj); if (proxlist->MutualSubscribe(nearobj->GetClientID(),nearobj,range)) --- 457,461 ---- * the subscription already existed, or could not be processed. */ ! float range = proxlist->RangeTo(nearobj); if (proxlist->MutualSubscribe(nearobj->GetClientID(),nearobj,range)) *************** *** 511,515 **** // Notify client to remove entity which is too far away now ! psDisconnectMessage msg(GetClientID() , obj->GetEntity()->GetID(),""); cel->msghandler->SendMessage(msg.msg); --- 514,518 ---- // Notify client to remove entity which is too far away now ! psDisconnectMessage msg(GetClientID() , obj->GetEntity()->GetID(),""); cel->msghandler->SendMessage(msg.msg); *************** *** 559,594 **** void celPSObject::GetPosition(csVector3& pos, float& yrot,iSector*& sector) { ! // Position ! pos = pcmesh->GetMesh()->GetMovable()->GetPosition(); ! // rotation ! csMatrix3 transf = pcmesh->GetMesh()->GetMovable()->GetTransform().GetT2O(); ! yrot = Matrix2YRot(transf); ! // Sector ! if (pcmesh->GetMesh()->GetMovable()->GetSectors()->GetCount()) ! sector = pcmesh->GetMesh()->GetMovable()->GetSectors()->Get(0); ! else ! sector = NULL; } float celPSObject::Matrix2YRot(const csMatrix3& mat) { ! csVector3 vec(0,0,1); ! vec = mat * vec; ! return GetAngle (vec.z, vec.x); } float celPSObject::GetAngle(float x, float y) { ! if ( x > 1.0 ) x = 1.0; ! if ( x < -1.0 ) x = -1.0; ! float angle = acos(x); ! if (y < 0) ! angle = 2*PI - angle; ! return angle; } --- 562,597 ---- void celPSObject::GetPosition(csVector3& pos, float& yrot,iSector*& sector) { ! // Position ! pos = pcmesh->GetMesh()->GetMovable()->GetPosition(); ! // rotation ! csMatrix3 transf = pcmesh->GetMesh()->GetMovable()->GetTransform().GetT2O(); ! yrot = Matrix2YRot(transf); ! // Sector ! if (pcmesh->GetMesh()->GetMovable()->GetSectors()->GetCount()) ! sector = pcmesh->GetMesh()->GetMovable()->GetSectors()->Get(0); ! else ! sector = NULL; } float celPSObject::Matrix2YRot(const csMatrix3& mat) { ! csVector3 vec(0,0,1); ! vec = mat * vec; ! return GetAngle (vec.z, vec.x); } float celPSObject::GetAngle(float x, float y) { ! if ( x > 1.0 ) x = 1.0; ! if ( x < -1.0 ) x = -1.0; ! float angle = acos(x); ! if (y < 0) ! angle = 2*PI - angle; ! return angle; } *************** *** 616,620 **** charmanager, entity, ! this, cel->object_reg, msghandler); --- 619,623 ---- charmanager, entity, ! this, cel->object_reg, msghandler); *************** *** 872,887 **** celPSNPC::celPSNPC(psCel *cel, ! const char* name, ! const char* factname, ! const char* filename, ! iSector* room, ! const csVector3& pos, ! float rotangle, ! int clientnum, ! int objID, ! int pID) : celPSActor(cel,name,factname,filename,room,pos,rotangle,clientnum,objID,pID) { ! npcdialog = NULL; } --- 875,890 ---- celPSNPC::celPSNPC(psCel *cel, ! const char* name, ! const char* factname, ! const char* filename, ! iSector* room, ! const csVector3& pos, ! float rotangle, ! int clientnum, ! int objID, ! int pID) : celPSActor(cel,name,factname,filename,room,pos,rotangle,clientnum,objID,pID) { ! npcdialog = NULL; } *************** *** 899,903 **** npcdlg->Initialize(database,NPCID); ! npcdialog = npcdlg; } } --- 902,906 ---- npcdlg->Initialize(database,NPCID); ! npcdialog = npcdlg; } } |