From 61c0c9f53d3a57ee7fd5db5faa74c4b51e2da396 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 28 Oct 2017 18:12:50 -0400 Subject: Lots of updates * Networking is finally working * Started moveing physics into the shared domain * Streams now have a readString() and writeString() method * streams are passed to the lua context for networking * Refactored cameras and physboxes to use metatables * Finally wrote the pushvector3* and popvector3* methods * Fixed a few crashes in ;main * Deleted a lot of code --- src/shared/lua_api/stream.cpp | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/shared/lua_api/stream.cpp (limited to 'src/shared/lua_api/stream.cpp') diff --git a/src/shared/lua_api/stream.cpp b/src/shared/lua_api/stream.cpp new file mode 100644 index 0000000..3ec2394 --- /dev/null +++ b/src/shared/lua_api/stream.cpp @@ -0,0 +1,71 @@ +#include +#include +#include +#include "stream.hpp" + +char stx = 0x002; +char etx = 0x003; + +struct stream* stream_create(){ + struct stream* s = (struct stream*)malloc(sizeof(struct stream)); + s->length = 0; + s->data = (byte*)malloc(sizeof(byte)*0); + s->read = 0; + return s; +} +void stream_writeInt(struct stream* s, int number){ + long o = s->length; + s->length += sizeof(int); + s->data = (byte*)realloc(s->data,s->length); + int* ptr = (int*)(s->data + o); + *ptr = number; +} +int stream_readInt(struct stream* s){ + int* ptr = (int*)(s->data + s->read); + s->read += sizeof(int); + return *ptr; +} +void stream_writeData(struct stream* s, const char* d, int len){ + long o = s->length; + s->length += sizeof(char)*len; + s->data = (byte*)realloc(s->data,s->length); + char* ptr = (char*)(s->data + o); + memcpy(ptr,d,len); +} +void stream_readData(struct stream* s, int len, char* out){ + char* ptr = (char*)(s->data + s->read); + memcpy(out,ptr,len); + s->read += len; +} +void stream_writeString(struct stream* s, const char* str, size_t len){ + stream_writeData(s,str,len); + stream_writeData(s,"\0",1);//Null character +} +char* stream_readString(struct stream* s){ + char* ptr = (char*)(s->data + s->read); + s->read += strlen(ptr) + 1;//+1 for null character + return ptr; +} +void stream_writeDouble(struct stream* s, double number){ + long o = s->length; + s->length += sizeof(double); + s->data = (byte*)realloc(s->data,s->length); + double* ptr = (double*)(s->data + o); + *ptr = number; +} + +void stream_print(struct stream* s){ + printf("Length:%ld\nRead:%ld\nData starts at %p\nData:",s->length, s->read, s->data); + long i = 0; + byte* ptr = s->data; + while(i < s->length){ + printf("%4X",*(ptr + i)); + i++; + } + printf("\n"); +} + +void stream_free(struct stream* s){ + free(s->data); + free(s); +} -- cgit v1.2.3-70-g09d2