Fusion360-Addons/usr/Src/Core/RacknetVSL.cpp
2021-10-31 19:39:29 +01:00

313 lines
7.0 KiB
C++

#include "InitMan.h"
#include "CKAll.h"
#include "VSLManagerSDK.h"
#ifdef RACKNET
#include <network/rNetServer.h>
#include "network/racknet/NetworkStructures.h"
#include "network/racknet/PacketEnumerations.h"
#include "network/laser_point.h"
#include "network/rNetStructs.h"
#pragma comment (lib,"RakNet.lib")
extern InitMan *_im;
static rNetServer *server = NULL;
unsigned char GetPacketIdentifier(Packet *p);
laser_pointers *lPointers;
lpoint pointers[5];
boolean recieved =false;
int packetDelay;
int prevPacketCount;
int pCount =0;
int GetPacketDT();
//////////////////////////////////////////////////////////////////////////
BOOL rNetServerCreate(const char*server_name,int server_port);
BOOL rNetServerStart(){
return server->start();
}
void rNetServerDestroy(){
if(server->realInterface){
server->destroy();
}
}
int rNetServerGetClientCount(){
return server->GetClientCount();
}
int rNetServerGetBytesReceivedPerSecond(){
return server->realInterface->GetBytesReceivedPerSecond();
return -1;
}
int GetPacketOutputBufferSize(){
return server->realInterface->GetPacketOutputBufferSize();
}
int rGetPacketsPerSecond(){
int just = server->realInterface->GetReceivedPacketCount();
int res = just - prevPacketCount;
prevPacketCount = just;
return res;
}
int rGetPaketCount(){
return server->realInterface->GetReceivedPacketCount();
}
//////////////////////////////////////////////////////////////////////////
lpoint GetCoord(int index){
if(recieved){
return pointers[index];
}
return lpoint(-1,-1,-1);
}
VxRect rNetRecieve(){
Packet* p = server->realInterface->Receive();
if (p!=0){
recieved =true;
lPointers = ((laser_pointers*)p->data);
/*
for (int i = 0 ; i < 10 ; i++){
pointers[i].x = lPointers->LArray[i].x;
pointers[i].y = lPointers->LArray[i].y;
}
//Vx2DVector coord = GetLPCoord(0);
char buffer[400];
lpoint coord = GetCoord(0);
sprintf(buffer,"x : %d, y: %d",coord.x,coord.y);
_im->m_Context->OutputToConsole(buffer,false);
*/
VxRect m (lPointers->LArray[0].x,lPointers->LArray[0].y,lPointers->LArray[0].x,lPointers->LArray[0].x);
// server->realInterface->DeallocatePacket(p);
// server->realInterface->DesynchronizeAllMemory();
pCount =1;
return m;
}
pCount = -1;
recieved = false;
return VxRect(-1,-1,-1,-1);
}
/************************************************************************/
/* */
/************************************************************************/
Vx2DVector GetLPCoord(int index){
if (recieved)
return Vx2DVector((const float)pointers[index].x,(const float)pointers[index].y);
return Vx2DVector(-1,-1);
}
laser_pointers& GetLaserPointerArray(){
/*
Packet* p = server->realInterface->Receive();
if (p!=0){
recieved =true;
laser_pointers *tmpArray = ((laser_pointers*)p->data);
for (int i = 0 ; i < 99 ; i++){
pointers[i].x = tmpArray->LArray[i].x;
pointers[i].y = tmpArray->LArray[i].y;
}
char buffer[400];
SYSTEMTIME time;
GetSystemTime(&time);
packetDelay = time.wMilliseconds - tmpArray->sStamp.miliseconds;
WORD sDT = time.wSecond - tmpArray->sStamp.seconds;
//sprintf(buffer,"dtSec : %d, dtMSec: %d", sDT, msDT );
sprintf(buffer,"x : %f, y: %f", pointers[0].x ,pointers[0].y);
_im->m_Context->OutputToConsole(buffer,false);
server->realInterface->DeallocatePacket(p);
server->realInterface->DesynchronizeAllMemory();
return laser_pointers();
}
recieved = false ; */
return laser_pointers();
}
void
laser_pointers::GetCoord(Vx2DVector& target,int index){
if (lPointers){
target.x = (float)pointers[index].x;
target.y = (float)pointers[index].y;
}
}
void
InitMan::RegisterRacknetVSL(){
STARTVSLBIND(m_Context)
/************************************************************************/
/* Variable|Parameter Stuff */
/************************************************************************/
DECLAREFUN_C_2(BOOL,rNetServerCreate,const char*, int )
DECLAREFUN_C_0(BOOL,rNetServerStart)
DECLAREFUN_C_0(void,rNetServerDestroy)
DECLAREFUN_C_0(int,rGetPaketCount)
DECLAREFUN_C_0(int,GetPacketDT)
DECLAREFUN_C_0(int,rGetPacketsPerSecond)
DECLAREFUN_C_0(int,rNetServerGetClientCount)
DECLAREFUN_C_0(int,rNetServerGetBytesReceivedPerSecond)
DECLAREFUN_C_0(VxRect,rNetRecieve)
DECLAREFUN_C_0(int,GetPacketOutputBufferSize)
DECLAREOBJECTTYPE(lpoint)
DECLAREMEMBER(lpoint,int,x)
DECLAREMEMBER(lpoint,int,y)
DECLAREFUN_C_1(lpoint,GetCoord,int)
DECLAREPOINTERTYPE(laser_pointers)
DECLAREMETHODC_1(laser_pointers,lpoint,GetPointByIndex,int)
DECLAREFUN_C_0(laser_pointers&,GetLaserPointerArray)
DECLAREMETHODC_2(laser_pointers,void,GetCoord,Vx2DVector&,int)
DECLAREFUN_C_1(Vx2DVector,GetLPCoord,int)
STOPVSLBIND
}
CKERROR InitMan::PostProcess(){
/*
if (server->realInterface && server->isStarted){
Packet* p = server->realInterface->Receive();
if (p!=0){
lPointers = ((laser_pointers*)p->data);
m_Context->OutputToConsole("processing incoming packets",false);
/*
char buffer[400];
SYSTEMTIME time;
GetSystemTime(&time);
packetDelay = time.wMilliseconds - lPointers->sStamp.miliseconds;
WORD sDT = time.wSecond - lPointers->sStamp.seconds;
*/
/*
for (int i = 0 ; i < 4 ; i++)
{
//pointers[i].x = lPointers->LArray[i].x;
//pointers[i].y = lPointers->LArray[i].y;
}*/
/*
char buffer[400];
lpoint coord = GetCoord(0);
sprintf(buffer,"x : %d, y: %d",coord.x,coord.y);
m_Context->OutputToConsole(buffer,false);
*/
//server->realInterface->DeallocatePacket(p);
//server->realInterface->DesynchronizeAllMemory();
//}
return CK_OK;
//}
}
/************************************************************************/
/* */
/************************************************************************/
unsigned char GetPacketIdentifier(Packet *p)
{
if (p==0)
return 255;
if ((unsigned char)p->data[0] == ID_TIMESTAMP)
{
assert(p->length > sizeof(unsigned char) + sizeof(unsigned long));
return (unsigned char) p->data[sizeof(unsigned char) + sizeof(unsigned long)];
}
else
return (unsigned char) p->data[0];
}
//////////////////////////////////////////////////////////////////////////
BOOL rNetServerCreate(const char*server_name,int server_port){
server = new rNetServer(server_name,server_port);
lPointers = new laser_pointers();
return true;
}
//////////////////////////////////////////////////////////////////////////
int GetPacketDT(){
return packetDelay;
}
#endif