Alain's code

/****************************************************************\
 ****************************************************************
						Alain's Command section
 ****************************************************************
\****************************************************************/

// Command for add an entity on the GPMS
NLMISC_COMMAND(add_entity,"Add entity to GPMS","entity Id, sheet Id, entity PosX(meters), entity PosY, entity PosZ, entity Theta angle")
{
	// check args, if there s not the right number of parameter, return bad
	if(args.size() != 6) return false;
	
	// get the values
	uint32 Id = atoi(args[0].c_str());
	uint32 SheetId = atoi(args[1].c_str());
	sint32 PosX = atoi(args[2].c_str()) * 1000; //coordinates are in millimeters
	uint32 PosY = atoi(args[3].c_str()) * 1000;
	sint32 PosZ = atoi(args[4].c_str()) * 1000;
	float Theta = (float) atof(args[5].c_str()); //direction of entity in radian (direct angle in radian, front of is on +Y (0 = Y direction), all conversion is now made on client)

	//normaly creature type, but FE not ready for properties of creature type, this constructor set dynamicId and creatorId to serviceId
	// At this time they are no namespace for enum of entity type, this be corrected when i'm change Sid/EntityId class and move it in game_share
	Sid sid( /*Sid::*/npc, Id); 

	//make the message for add entity and send it
	CMessage msgout("ADD_ENTITY");
	msgout.serial( sid );
	msgout.serial( PosX );
	msgout.serial( PosY );
	msgout.serial( PosZ );
	msgout.serial( Theta );
	NLMISC::TGameCycle tick = CTickEventHandler::getGameCycle();
	//msgout.serial( tick ); //Chaine of time is not complete, must be made in shortly
	msgout.serial( SheetId );
	CUnifiedNetwork::getInstance()->send( "GPMS", msgout );

	return true;
}

// Command for remove an entity on the GPMS
NLMISC_COMMAND(remove_entity,"Remove entity to GPMS","entity Id")
{
	// check args, if there s not the right number of parameter, return bad
	if(args.size() != 1) return false;
	
	// get the values
	uint32 Id = atoi(args[0].c_str());

	//normaly creature type, but FE not ready for properties of creature type, this constructor set dynamicId and creatorId to serviceId
	// At this time they are no namespace for enum of entity type, this be corrected when i'm change Sid/EntityId class and move it in game_share
	Sid sid( /*Sid::*/npc, Id); 

	CMessage msgout("REMOVE_ENTITY");
	msgout.serial( sid );
	CUnifiedNetwork::getInstance()->send( "GPMS", msgout );

	return true;
}

// Command for update position of an entity, remember pacs constraintes reduce the max move in one ticks at two cells (2*16 meters)
NLMISC_COMMAND(update_position,"Update position of an entity","entity Id, entity PosX(meters), entity PosY, entity PosZ, entity Theta angle")
{
	// check args, if there s not the right number of parameter, return bad
	if(args.size() != 5) return false;
	
	// get the values
	uint32 Id = atoi(args[0].c_str());
	sint32 PosX = atoi(args[1].c_str()) * 1000; //coordinates are in millimeters
	uint32 PosY = atoi(args[2].c_str()) * 1000;
	sint32 PosZ = atoi(args[3].c_str()) * 1000;
	float Theta = (float) atof(args[4].c_str()); //direction of entity in radian (direct angle in radian, front of is on +Y (0 = Y direction), all conversion is now made on client)

	//normaly creature type, but FE not ready for properties of creature type, this constructor set dynamicId and creatorId to serviceId
	// At this time they are no namespace for enum of entity type, this be corrected when i'm change Sid/EntityId class and move it in game_share
	Sid sid( /*Sid::*/npc, Id); 

	CMessage msgout("UPDATE_ENTITY_POS");
	msgout.serial( sid );
	msgout.serial( PosX );
	msgout.serial( PosY );
	msgout.serial( PosZ );
	msgout.serial( Theta );
	NLMISC::TGameCycle tick = CTickEventHandler::getGameCycle();
	msgout.serial( tick );
	CUnifiedNetwork::getInstance()->send( "GPMS", msgout );

	return true;
}

// Command for teleport an entity to new position, no limit of distance to move
NLMISC_COMMAND(teleportation,"Teleport entity to gived position","entity Id, entity PosX(meters), entity PosY, entity PosZ, entity Theta angle")
{
	// check args, if there s not the right number of parameter, return bad
	if(args.size() != 5) return false;
	
	// get the values
	uint32 Id = atoi(args[0].c_str());
	sint32 PosX = atoi(args[1].c_str()) * 1000; //coordinates are in millimeters
	uint32 PosY = atoi(args[2].c_str()) * 1000;
	sint32 PosZ = atoi(args[3].c_str()) * 1000;
	float Theta = (float) atof(args[4].c_str()); //direction of entity in radian (direct angle in radian, front of is on +Y (0 = Y direction), all conversion is now made on client)

	//normaly creature type, but FE not ready for properties of creature type, this constructor set dynamicId and creatorId to serviceId
	// At this time they are no namespace for enum of entity type, this be corrected when i'm change Sid/EntityId class and move it in game_share
	Sid sid( /*Sid::*/npc, Id); 

	CMessage msgout("ENTITY_TELEPORTATION");
	msgout.serial( sid );
	msgout.serial( PosX );
	msgout.serial( PosY );
	msgout.serial( PosZ );
	msgout.serial( Theta );
	NLMISC::TGameCycle tick = CTickEventHandler::getGameCycle();
	msgout.serial( tick );
	CUnifiedNetwork::getInstance()->send( "GPMS", msgout );

	return true;
}
