| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- #include "PhysicsService.h"
- #include "..\common_h\data_swizzle.h"
- //============================================================================================
- //PhysicsService::ErrorStream
- //============================================================================================
- PhysicsService::ErrorStream::ErrorStream()
- {
- enabledWarnings = true;
- }
- void PhysicsService::ErrorStream::EnableWarnings(bool enable)
- {
- enabledWarnings = enable;
- }
- void PhysicsService::ErrorStream::reportError(NxErrorCode e, const char* message, const char* file, int line)
- {
- bool isTraceAsError = false;
- const char * error = "unknown error";
- switch(e)
- {
- case NXE_INVALID_PARAMETER:
- error = "invalid parameter";
- isTraceAsError = true;
- break;
- case NXE_INVALID_OPERATION:
- error = "invalid operation";
- isTraceAsError = true;
- break;
- case NXE_OUT_OF_MEMORY:
- error = "out of memory";
- isTraceAsError = true;
- break;
- case NXE_DB_INFO:
- if (!enabledWarnings)
- return;
- error = "info";
- break;
- case NXE_DB_WARNING:
- if (!enabledWarnings)
- return;
- error = "warning";
- break;
- }
- if (isTraceAsError)
- api->Error("PhysX error: %s, (\"%s\", %s, %d)", error, message, file, line);
- else
- api->Trace("PhysX error: %s, (\"%s\", %s, %d)", error, message, file, line);
- }
- NxAssertResponse PhysicsService::ErrorStream::reportAssertViolation(const char * message, const char * file, int line)
- {
- __Storm_Assert__(false, file, line, message);
- return NX_AR_BREAKPOINT;
- }
- void PhysicsService::ErrorStream::print(const char * message)
- {
- api->Trace(message);
- }
- //============================================================================================
- //PhysicsService::MemoryReadStream
- //============================================================================================
- PhysicsService::MemoryReadStream::MemoryReadStream(const void * _source, dword _size)
- {
- current = 0;
- sourceSize = _size;
- source = (byte *)_source;
- if(!_source) sourceSize = 0;
- }
- PhysicsService::MemoryReadStream::~MemoryReadStream()
- {
- }
- NxU8 PhysicsService::MemoryReadStream::readByte() const
- {
- NxU8 v;
- return readData(v);
- }
- NxU16 PhysicsService::MemoryReadStream::readWord() const
- {
- NxU16 v;
- readData(v);
- return v;
- }
- NxU32 PhysicsService::MemoryReadStream::readDword() const
- {
- NxU32 v;
- readData(v);
- return v;
- }
- float PhysicsService::MemoryReadStream::readFloat() const
- {
- float v;
- readData(v);
- return v;
- }
- double PhysicsService::MemoryReadStream::readDouble() const
- {
- double v;
- readData(v);
- return v;
- }
- void PhysicsService::MemoryReadStream::readBuffer(void * buffer, NxU32 size) const
- {
- Assert(current + size <= sourceSize);
- memcpy(buffer, source + current, size);
- current += size;
- }
- template<class T> __forceinline T & PhysicsService::MemoryReadStream::readData(T & v) const
- {
- Assert(current + sizeof(T) <= sourceSize);
- //v = *(T *)(source + current);
- //current += sizeof(T);
- byte * ptr = (byte *)&v;
- for(long i = 0; i < sizeof(T); i++)
- {
- *ptr++ = source[current++];
- }
- return v;
- }
- NxStream & PhysicsService::MemoryReadStream::storeByte(NxU8 b)
- {
- Assert(false);
- return *this;
- }
- NxStream & PhysicsService::MemoryReadStream::storeWord(NxU16 w)
- {
- Assert(false);
- return *this;
- }
- NxStream & PhysicsService::MemoryReadStream::storeDword(NxU32 d)
- {
- Assert(false);
- return *this;
- }
- NxStream & PhysicsService::MemoryReadStream::storeFloat(NxReal f)
- {
- Assert(false);
- return *this;
- }
- NxStream & PhysicsService::MemoryReadStream::storeDouble(NxF64 f)
- {
- Assert(false);
- return *this;
- }
- NxStream & PhysicsService::MemoryReadStream::storeBuffer(const void * buffer, NxU32 size)
- {
- Assert(false);
- return *this;
- }
- //============================================================================================
- //PhysicsService::MemoryWriteStream
- //============================================================================================
- PhysicsService::MemoryWriteStream::MemoryWriteStream() : data(_FL_)
- {
- }
- PhysicsService::MemoryWriteStream::~MemoryWriteStream()
- {
- }
- NxU8 PhysicsService::MemoryWriteStream::readByte() const
- {
- Assert(false);
- return 0;
- }
- NxU16 PhysicsService::MemoryWriteStream::readWord() const
- {
- Assert(false);
- return 0;
- }
- NxU32 PhysicsService::MemoryWriteStream::readDword() const
- {
- Assert(false);
- return 0;
- }
- float PhysicsService::MemoryWriteStream::readFloat() const
- {
- Assert(false);
- return 0;
- }
- double PhysicsService::MemoryWriteStream::readDouble() const
- {
- Assert(false);
- return 0;
- }
- void PhysicsService::MemoryWriteStream::readBuffer(void * buffer, NxU32 size) const
- {
- Assert(false);
- }
- NxStream & PhysicsService::MemoryWriteStream::storeByte(NxU8 b)
- {
- return writeData(b);
- }
- NxStream & PhysicsService::MemoryWriteStream::storeWord(NxU16 w)
- {
- return writeData(w);
- }
- NxStream & PhysicsService::MemoryWriteStream::storeDword(NxU32 d)
- {
- return writeData(d);
- }
- NxStream & PhysicsService::MemoryWriteStream::storeFloat(NxReal f)
- {
- return writeData(f);
- }
- NxStream & PhysicsService::MemoryWriteStream::storeDouble(NxF64 f)
- {
- return writeData(f);
- }
- NxStream & PhysicsService::MemoryWriteStream::storeBuffer(const void * buffer, NxU32 size)
- {
- const byte * ptr = (const byte *)buffer;
- for(NxU32 i = 0; i < size; i++)
- {
- data.Add(*ptr++);
- }
- return *this;
- }
- template<class T> NxStream & PhysicsService::MemoryWriteStream::writeData(const T & v)
- {
- const byte * ptr = (const byte *)&v;
- for(long i = 0; i < sizeof(T); i++)
- {
- data.Add(*ptr++);
- }
- return *this;
- }
- const void * PhysicsService::MemoryWriteStream::Pointer()
- {
- if(data > 0) return &data[0];
- return null;
- }
- dword PhysicsService::MemoryWriteStream::Size()
- {
- return data;
- }
|