00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <thread.h>
00024 #include <math.h>
00025 #include "client.h"
00026 #include "agent.h"
00027 #include "log.h"
00028 #include "world.h"
00029 #include "collision.h"
00030
00031 unsigned long int Agent::agentMaxId=0;
00032
00033
00034
00035
00036
00037 Agent::Agent(Client *_client, const Point3d &_position, const char *creationMessage, unsigned long int messageSize){
00038 cylinder=new Cylinder(_client->getWorld(), NULL, 0x0FFFF, 1, 1, Vector3d(0,0,0), true);
00039 cylinder->setNewAgent(this);
00040 cylinder->movePosition(_position);
00041
00042 cylinderCount=1;
00043
00044
00045 client=_client;
00046 id=agentMaxId++;
00047
00048 client->sendMessage(Message(getId(), true, messageNewAgent, messageSize, creationMessage));
00049 }
00050
00051
00052
00053
00054
00055
00056 Agent::Agent(Client *cli, Cylinder *cyl, const char *creationMessage, unsigned long int messageSize){
00057 log <<"New agent from cylinder"<<endl;
00058 cylinder=cyl;
00059
00060 cylinderCount=1;
00061
00062 client=cli;
00063 id=agentMaxId++;
00064
00065 cyl->setNewAgent(this);
00066
00067 client->sendMessage(Message(getId(), true, messageNewAgent, messageSize, creationMessage));
00068 }
00069
00070
00071 Agent::~Agent(){
00072 delete cylinder;
00073 }
00074
00075
00076
00077
00078
00079
00080
00081 vector<Cylinder *> Agent::performActions(){
00082 vector<Cylinder *> ret;
00083 unsigned int i;
00084 for (i=0;i<256;i++)
00085 if ((*cylinder)[i]!=NULL){
00086 Cylinder *cyl;
00087 cyl=(*cylinder)[i]->performAction();
00088 if (NULL!=cyl)
00089 ret.push_back(cyl);
00090 }
00091 return ret;
00092 }
00093
00094
00095
00096
00097 World *Agent::getWorld(void){
00098 if (client==NULL)
00099 return NULL;
00100 else
00101 return client->getWorld();
00102 }
00103
00104 void Agent::receiveMessage(unsigned int long _agentId, const char *message, unsigned long int size){
00105 client->sendMessage(Message(getId(), true, messageNewAgent, size, message));
00106 }