* Fixed make install (irrlicht now does not try to install)
* Updated SysDefs to work better on 64bit systems, please report problems on 32bit systems * Various x64 related fixes * Updated movementflags to recent mangos version * ... and fixed movement packets. not sure if that is the best way...
This commit is contained in:
parent
9e5c1fdd30
commit
7882f809d3
@ -1,5 +1,5 @@
|
|||||||
## Process this file with automake to produce Makefile.in
|
## Process this file with automake to produce Makefile.in
|
||||||
AM_CPPFLAGS = -I$(top_builddir)/src/Client -I$(top_builddir)/src/shared -I$(top_builddir)/src/Client/DefScript -I$(top_builddir)/src/Client/World -I$(top_builddir)/src/Client/Realm -I$(top_builddir)/src/dep/include -Wall -D_DEBUG
|
AM_CPPFLAGS = -I$(top_builddir)/src/Client -I$(top_builddir)/src/shared -I$(top_builddir)/src/Client/DefScript -I$(top_builddir)/src/Client/World -I$(top_builddir)/src/Client/Realm -I$(top_builddir)/src/dep/include -Wall
|
||||||
## Build pseuwow
|
## Build pseuwow
|
||||||
noinst_LIBRARIES = libgui.a
|
noinst_LIBRARIES = libgui.a
|
||||||
libgui_a_SOURCES =CCursorController.cpp DrawObject.cpp MInput.h Scene.h SImage.h\
|
libgui_a_SOURCES =CCursorController.cpp DrawObject.cpp MInput.h Scene.h SImage.h\
|
||||||
|
|||||||
@ -32,9 +32,10 @@ void MovementMgr::SetInstance(PseuInstance *inst)
|
|||||||
|
|
||||||
void MovementMgr::_BuildPacket(uint16 opcode)
|
void MovementMgr::_BuildPacket(uint16 opcode)
|
||||||
{
|
{
|
||||||
WorldPacket *wp = new WorldPacket(opcode,4+1+4+12); // it can be larger, if we are jumping, on transport or swimming
|
WorldPacket *wp = new WorldPacket(opcode,4+2+4+16); // it can be larger, if we are jumping, on transport or swimming
|
||||||
|
wp->appendPackGUID(_mychar->GetGUID());
|
||||||
*wp << _moveFlags;
|
*wp << _moveFlags;
|
||||||
*wp << (uint16)0; // unk
|
*wp << (uint16)0; // flags2 , safe to set 0 for now (shlainn)
|
||||||
*wp << getMSTime();
|
*wp << getMSTime();
|
||||||
*wp << _mychar->GetPosition();
|
*wp << _mychar->GetPosition();
|
||||||
// TODO: transport not yet handled/done
|
// TODO: transport not yet handled/done
|
||||||
@ -50,7 +51,7 @@ void MovementMgr::_BuildPacket(uint16 opcode)
|
|||||||
*wp << (float)0; // angle; 1.55=looking up, -1.55=looking down, 0=looking forward
|
*wp << (float)0; // angle; 1.55=looking up, -1.55=looking down, 0=looking forward
|
||||||
}
|
}
|
||||||
*wp << (uint32)0; // last fall time (also used when jumping)
|
*wp << (uint32)0; // last fall time (also used when jumping)
|
||||||
if(_moveFlags & MOVEMENTFLAG_JUMPING)
|
if(_moveFlags & MOVEMENTFLAG_PENDINGSTOP)
|
||||||
{
|
{
|
||||||
*wp << (float)0; //unk value, or as mangos calls it: j_unk ^^
|
*wp << (float)0; //unk value, or as mangos calls it: j_unk ^^
|
||||||
*wp << sin(_mychar->GetO()+ (M_PI/2));
|
*wp << sin(_mychar->GetO()+ (M_PI/2));
|
||||||
@ -165,7 +166,7 @@ void MovementMgr::MoveStop(void)
|
|||||||
{
|
{
|
||||||
if(!(_moveFlags & (MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD)))
|
if(!(_moveFlags & (MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD)))
|
||||||
return;
|
return;
|
||||||
_moveFlags &= ~(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_WALK);
|
_moveFlags &= ~(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_WALK_MODE);
|
||||||
Update(true);
|
Update(true);
|
||||||
_BuildPacket(MSG_MOVE_STOP);
|
_BuildPacket(MSG_MOVE_STOP);
|
||||||
}
|
}
|
||||||
@ -184,7 +185,7 @@ void MovementMgr::MoveStartBackward(void)
|
|||||||
{
|
{
|
||||||
if(_moveFlags & MOVEMENTFLAG_BACKWARD)
|
if(_moveFlags & MOVEMENTFLAG_BACKWARD)
|
||||||
return;
|
return;
|
||||||
_moveFlags |= (MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_WALK); // backward walk is always slow; flag must be set, otherwise causing weird movement in other client
|
_moveFlags |= (MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_WALK_MODE); // backward walk is always slow; flag must be set, otherwise causing weird movement in other client
|
||||||
_moveFlags &= ~MOVEMENTFLAG_FORWARD;
|
_moveFlags &= ~MOVEMENTFLAG_FORWARD;
|
||||||
Update(true);
|
Update(true);
|
||||||
_BuildPacket(MSG_MOVE_START_BACKWARD);
|
_BuildPacket(MSG_MOVE_START_BACKWARD);
|
||||||
@ -222,29 +223,29 @@ void MovementMgr::MoveStopStrafe(void)
|
|||||||
|
|
||||||
void MovementMgr::MoveStartTurnLeft(void)
|
void MovementMgr::MoveStartTurnLeft(void)
|
||||||
{
|
{
|
||||||
if(_moveFlags & MOVEMENTFLAG_LEFT)
|
if(_moveFlags & MOVEMENTFLAG_TURN_LEFT)
|
||||||
return;
|
return;
|
||||||
_moveFlags |= MOVEMENTFLAG_LEFT;
|
_moveFlags |= MOVEMENTFLAG_TURN_LEFT;
|
||||||
_moveFlags &= ~MOVEMENTFLAG_RIGHT;
|
_moveFlags &= ~MOVEMENTFLAG_TURN_RIGHT;
|
||||||
Update(true);
|
Update(true);
|
||||||
_BuildPacket(MSG_MOVE_START_TURN_LEFT);
|
_BuildPacket(MSG_MOVE_START_TURN_LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MovementMgr::MoveStartTurnRight(void)
|
void MovementMgr::MoveStartTurnRight(void)
|
||||||
{
|
{
|
||||||
if(_moveFlags & MOVEMENTFLAG_RIGHT)
|
if(_moveFlags & MOVEMENTFLAG_TURN_RIGHT)
|
||||||
return;
|
return;
|
||||||
_moveFlags |= MOVEMENTFLAG_RIGHT;
|
_moveFlags |= MOVEMENTFLAG_TURN_RIGHT;
|
||||||
_moveFlags &= ~MOVEMENTFLAG_LEFT;
|
_moveFlags &= ~MOVEMENTFLAG_TURN_LEFT;
|
||||||
Update(true);
|
Update(true);
|
||||||
_BuildPacket(MSG_MOVE_START_TURN_RIGHT);
|
_BuildPacket(MSG_MOVE_START_TURN_RIGHT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MovementMgr::MoveStopTurn(void)
|
void MovementMgr::MoveStopTurn(void)
|
||||||
{
|
{
|
||||||
if(!(_moveFlags & (MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT)))
|
if(!(_moveFlags & (MOVEMENTFLAG_TURN_LEFT | MOVEMENTFLAG_TURN_RIGHT)))
|
||||||
return;
|
return;
|
||||||
_moveFlags &= ~(MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT);
|
_moveFlags &= ~(MOVEMENTFLAG_TURN_LEFT | MOVEMENTFLAG_TURN_RIGHT);
|
||||||
Update(true);
|
Update(true);
|
||||||
_BuildPacket(MSG_MOVE_STOP_TURN);
|
_BuildPacket(MSG_MOVE_STOP_TURN);
|
||||||
}
|
}
|
||||||
@ -257,9 +258,9 @@ void MovementMgr::MoveSetFacing(void)
|
|||||||
|
|
||||||
void MovementMgr::MoveJump(void)
|
void MovementMgr::MoveJump(void)
|
||||||
{
|
{
|
||||||
if(!(_moveFlags & (MOVEMENTFLAG_JUMPING | MOVEMENTFLAG_FALLING)))
|
if(!(_moveFlags & (MOVEMENTFLAG_FALLING | MOVEMENTFLAG_PENDINGSTOP)))
|
||||||
return;
|
return;
|
||||||
_moveFlags |= MOVEMENTFLAG_JUMPING;
|
_moveFlags |= MOVEMENTFLAG_FALLING;
|
||||||
Update(true);
|
Update(true);
|
||||||
_BuildPacket(MSG_MOVE_JUMP);
|
_BuildPacket(MSG_MOVE_JUMP);
|
||||||
}
|
}
|
||||||
@ -271,7 +272,7 @@ bool MovementMgr::IsMoving(void)
|
|||||||
|
|
||||||
bool MovementMgr::IsTurning(void)
|
bool MovementMgr::IsTurning(void)
|
||||||
{
|
{
|
||||||
return _moveFlags & (MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT);
|
return _moveFlags & (MOVEMENTFLAG_TURN_LEFT | MOVEMENTFLAG_TURN_RIGHT);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MovementMgr::IsWalking(void)
|
bool MovementMgr::IsWalking(void)
|
||||||
|
|||||||
@ -15,7 +15,7 @@ enum MovementFlagsEx
|
|||||||
{
|
{
|
||||||
// custom flags
|
// custom flags
|
||||||
MOVEMENTFLAG_ANY_MOVE = (MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT
|
MOVEMENTFLAG_ANY_MOVE = (MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT
|
||||||
| MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT),
|
| MOVEMENTFLAG_TURN_LEFT | MOVEMENTFLAG_TURN_RIGHT),
|
||||||
MOVEMENTFLAG_ANY_MOVE_NOT_TURNING = (MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT)
|
MOVEMENTFLAG_ANY_MOVE_NOT_TURNING = (MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -277,22 +277,22 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r
|
|||||||
logdev("TRANSPORT @ mi.flags: guid="I64FMT" x=%f y=%f z=%f o=%f", mi.t_guid, mi.t_x, mi.t_y, mi.t_z, mi.t_o);
|
logdev("TRANSPORT @ mi.flags: guid="I64FMT" x=%f y=%f z=%f o=%f", mi.t_guid, mi.t_x, mi.t_y, mi.t_z, mi.t_o);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((mi.flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_UNK5)) || (mi.unkFlags & 0x20))
|
if((mi.flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (mi.unkFlags & 0x20)) //The last one is MOVEFLAG2_ALLOW_PITCHING in MaNGOS
|
||||||
{
|
{
|
||||||
recvPacket >> mi.s_angle;
|
recvPacket >> mi.s_angle;
|
||||||
logdev("MovementUpdate: MOVEMENTFLAG_SWIMMING is set, angle = %f!", mi.s_angle);
|
logdev("MovementUpdate: MOVEMENTFLAG_SWIMMING or FLYING is set, angle = %f!", mi.s_angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
recvPacket >> mi.fallTime;
|
recvPacket >> mi.fallTime;
|
||||||
logdev("MovementUpdate: FallTime = %u", mi.fallTime);
|
logdev("MovementUpdate: FallTime = %u", mi.fallTime);
|
||||||
|
|
||||||
if(mi.flags & MOVEMENTFLAG_JUMPING)
|
if(mi.flags & MOVEMENTFLAG_FALLING)
|
||||||
{
|
{
|
||||||
recvPacket >> mi.j_unk >> mi.j_sinAngle >> mi.j_cosAngle >> mi.j_xyspeed;
|
recvPacket >> mi.j_unk >> mi.j_sinAngle >> mi.j_cosAngle >> mi.j_xyspeed;
|
||||||
logdev("MovementUpdate: MOVEMENTFLAG_JUMPING is set, unk=%f sinA=%f cosA=%f xyspeed=%f = %u", mi.j_unk, mi.j_sinAngle, mi.j_cosAngle, mi.j_xyspeed);
|
logdev("MovementUpdate: MOVEMENTFLAG_FALLING is set, unk=%f sinA=%f cosA=%f xyspeed=%f = %u", mi.j_unk, mi.j_sinAngle, mi.j_cosAngle, mi.j_xyspeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mi.flags & MOVEMENTFLAG_SPLINE)
|
if(mi.flags & MOVEMENTFLAG_SPLINE_ELEVATION)
|
||||||
{
|
{
|
||||||
recvPacket >> mi.u_unk1;
|
recvPacket >> mi.u_unk1;
|
||||||
logdev("MovementUpdate: MOVEMENTFLAG_SPLINE is set, got %u", mi.u_unk1);
|
logdev("MovementUpdate: MOVEMENTFLAG_SPLINE is set, got %u", mi.u_unk1);
|
||||||
@ -317,7 +317,7 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: correct this one as soon as its meaning is known OR if it appears often and needs to be fixed
|
// TODO: correct this one as soon as its meaning is known OR if it appears often and needs to be fixed
|
||||||
if(mi.flags & MOVEMENTFLAG_SPLINE2)
|
if(mi.flags & MOVEMENTFLAG_SPLINE_ENABLED)
|
||||||
{
|
{
|
||||||
logerror("MovementUpdate: MOVEMENTFLAG_SPLINE2 is set, if you see this message please report it!");
|
logerror("MovementUpdate: MOVEMENTFLAG_SPLINE2 is set, if you see this message please report it!");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -28,33 +28,38 @@ enum OBJECT_UPDATE_FLAGS
|
|||||||
|
|
||||||
enum MovementFlags
|
enum MovementFlags
|
||||||
{
|
{
|
||||||
MOVEMENTFLAG_NONE = 0x00000000,
|
MOVEMENTFLAG_NONE = 0x00000000,
|
||||||
MOVEMENTFLAG_FORWARD = 0x00000001,
|
MOVEMENTFLAG_FORWARD = 0x00000001,
|
||||||
MOVEMENTFLAG_BACKWARD = 0x00000002,
|
MOVEMENTFLAG_BACKWARD = 0x00000002,
|
||||||
MOVEMENTFLAG_STRAFE_LEFT = 0x00000004,
|
MOVEMENTFLAG_STRAFE_LEFT = 0x00000004,
|
||||||
MOVEMENTFLAG_STRAFE_RIGHT = 0x00000008,
|
MOVEMENTFLAG_STRAFE_RIGHT = 0x00000008,
|
||||||
MOVEMENTFLAG_LEFT = 0x00000010,
|
MOVEMENTFLAG_TURN_LEFT = 0x00000010,
|
||||||
MOVEMENTFLAG_RIGHT = 0x00000020,
|
MOVEMENTFLAG_TURN_RIGHT = 0x00000020,
|
||||||
MOVEMENTFLAG_PITCH_UP = 0x00000040,
|
MOVEMENTFLAG_PITCH_UP = 0x00000040,
|
||||||
MOVEMENTFLAG_PITCH_DOWN = 0x00000080,
|
MOVEMENTFLAG_PITCH_DOWN = 0x00000080,
|
||||||
MOVEMENTFLAG_WALK = 0x00000100,
|
MOVEMENTFLAG_WALK_MODE = 0x00000100, // Walking
|
||||||
MOVEMENTFLAG_ONTRANSPORT = 0x00000200,
|
MOVEMENTFLAG_ONTRANSPORT = 0x00000200,
|
||||||
MOVEMENTFLAG_UNK1 = 0x00000400,
|
MOVEMENTFLAG_LEVITATING = 0x00000400,
|
||||||
MOVEMENTFLAG_FLY_UNK1 = 0x00000800,
|
MOVEMENTFLAG_ROOT = 0x00000800,
|
||||||
MOVEMENTFLAG_JUMPING = 0x00001000,
|
MOVEMENTFLAG_FALLING = 0x00001000,
|
||||||
MOVEMENTFLAG_UNK4 = 0x00002000,
|
MOVEMENTFLAG_FALLINGFAR = 0x00002000,
|
||||||
MOVEMENTFLAG_FALLING = 0x00004000,
|
MOVEMENTFLAG_PENDINGSTOP = 0x00004000,
|
||||||
// 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000
|
MOVEMENTFLAG_PENDINGSTRAFESTOP = 0x00008000,
|
||||||
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
|
MOVEMENTFLAG_PENDINGFORWARD = 0x00010000,
|
||||||
MOVEMENTFLAG_FLY_UP = 0x00400000,
|
MOVEMENTFLAG_PENDINGBACKWARD = 0x00020000,
|
||||||
MOVEMENTFLAG_CAN_FLY = 0x00800000,
|
MOVEMENTFLAG_PENDINGSTRAFELEFT = 0x00040000,
|
||||||
MOVEMENTFLAG_FLYING = 0x01000000,
|
MOVEMENTFLAG_PENDINGSTRAFERIGHT = 0x00080000,
|
||||||
MOVEMENTFLAG_UNK5 = 0x02000000,
|
MOVEMENTFLAG_PENDINGROOT = 0x00100000,
|
||||||
MOVEMENTFLAG_SPLINE = 0x04000000, // probably wrong name
|
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
|
||||||
MOVEMENTFLAG_SPLINE2 = 0x08000000,
|
MOVEMENTFLAG_ASCENDING = 0x00400000, // swim up also
|
||||||
MOVEMENTFLAG_WATERWALKING = 0x10000000,
|
MOVEMENTFLAG_DESCENDING = 0x00800000, // swim down also
|
||||||
MOVEMENTFLAG_SAFE_FALL = 0x20000000, // active rogue safe fall spell (passive)
|
MOVEMENTFLAG_CAN_FLY = 0x01000000, // can fly in 3.3?
|
||||||
MOVEMENTFLAG_UNK3 = 0x40000000
|
MOVEMENTFLAG_FLYING = 0x02000000, // Actual flying mode
|
||||||
|
MOVEMENTFLAG_SPLINE_ELEVATION = 0x04000000, // used for flight paths
|
||||||
|
MOVEMENTFLAG_SPLINE_ENABLED = 0x08000000, // used for flight paths
|
||||||
|
MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water
|
||||||
|
MOVEMENTFLAG_SAFE_FALL = 0x20000000, // active rogue safe fall spell (passive)
|
||||||
|
MOVEMENTFLAG_HOVER = 0x40000000
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MovementInfo
|
struct MovementInfo
|
||||||
|
|||||||
@ -183,7 +183,6 @@ void WorldSession::HandleWorldPacket(WorldPacket *packet)
|
|||||||
|
|
||||||
bool known = false;
|
bool known = false;
|
||||||
uint16 hpos;
|
uint16 hpos;
|
||||||
logdebug("Handling packet with opcode %u",packet->GetOpcode());
|
|
||||||
for (hpos = 0; table[hpos].handler != NULL; hpos++)
|
for (hpos = 0; table[hpos].handler != NULL; hpos++)
|
||||||
{
|
{
|
||||||
if (table[hpos].opcode == packet->GetOpcode())
|
if (table[hpos].opcode == packet->GetOpcode())
|
||||||
@ -1068,9 +1067,9 @@ void WorldSession::_HandleMovementOpcode(WorldPacket& recvPacket)
|
|||||||
uint32 flags, time, unk32;
|
uint32 flags, time, unk32;
|
||||||
float x, y, z, o;
|
float x, y, z, o;
|
||||||
uint64 guid;
|
uint64 guid;
|
||||||
uint16 unk16;
|
uint16 flags2;
|
||||||
guid = recvPacket.GetPackedGuid();
|
guid = recvPacket.GetPackedGuid();
|
||||||
recvPacket >> flags >> unk16 >> time >> x >> y >> z >> o >> unk32;
|
recvPacket >> flags >> flags2 >> time >> x >> y >> z >> o >> unk32;
|
||||||
DEBUG(logdebug("MOVE: "I64FMT" -> time=%u flags=0x%X x=%.4f y=%.4f z=%.4f o=%.4f",guid,time,flags,x,y,z,o));
|
DEBUG(logdebug("MOVE: "I64FMT" -> time=%u flags=0x%X x=%.4f y=%.4f z=%.4f o=%.4f",guid,time,flags,x,y,z,o));
|
||||||
Object *obj = objmgr.GetObj(guid);
|
Object *obj = objmgr.GetObj(guid);
|
||||||
if(obj && obj->IsWorldObject())
|
if(obj && obj->IsWorldObject())
|
||||||
|
|||||||
@ -126,9 +126,9 @@ sharedlib_osx: $(LINKOBJ)
|
|||||||
|
|
||||||
# Installs Irrlicht if it was created as shared lib
|
# Installs Irrlicht if it was created as shared lib
|
||||||
install:
|
install:
|
||||||
cp $(LIB_PATH)/$(SHARED_LIB).$(VERSION) $(INSTALL_DIR)
|
# cp $(LIB_PATH)/$(SHARED_LIB).$(VERSION) $(INSTALL_DIR)
|
||||||
cd $(INSTALL_DIR) && ln -s libIrrlicht.so.$(VERSION) $(SHARED_LIB)
|
# cd $(INSTALL_DIR) && ln -s libIrrlicht.so.$(VERSION) $(SHARED_LIB)
|
||||||
ldconfig -n $(INSTALL_DIR)
|
# ldconfig -n $(INSTALL_DIR)
|
||||||
|
|
||||||
install_osx:
|
install_osx:
|
||||||
cp $(LIB_PATH)/$(SHARED_LIB).$(VERSION) $(INSTALL_DIR)
|
cp $(LIB_PATH)/$(SHARED_LIB).$(VERSION) $(INSTALL_DIR)
|
||||||
|
|||||||
@ -272,6 +272,25 @@ class ByteBuffer
|
|||||||
if(buffer.size()) append(buffer.contents(),buffer.size());
|
if(buffer.size()) append(buffer.contents(),buffer.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void appendPackGUID(uint64 guid)
|
||||||
|
{
|
||||||
|
if (_storage.size() < _wpos + sizeof(guid) + 1)
|
||||||
|
_storage.resize(_wpos + sizeof(guid) + 1);
|
||||||
|
|
||||||
|
size_t mask_position = wpos();
|
||||||
|
*this << uint8(0);
|
||||||
|
for(uint8 i = 0; i < 8; ++i)
|
||||||
|
{
|
||||||
|
if(guid & 0xFF)
|
||||||
|
{
|
||||||
|
_storage[mask_position] |= uint8(1 << i);
|
||||||
|
*this << uint8(guid & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
guid >>= 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void put(size_t pos, const uint8 *src, size_t cnt)
|
void put(size_t pos, const uint8 *src, size_t cnt)
|
||||||
{
|
{
|
||||||
memcpy(&_storage[pos], src, cnt);
|
memcpy(&_storage[pos], src, cnt);
|
||||||
|
|||||||
@ -75,11 +75,11 @@
|
|||||||
#define I64FMTD "%llu"
|
#define I64FMTD "%llu"
|
||||||
#define SI64FMTD "%lld"
|
#define SI64FMTD "%lld"
|
||||||
typedef long long int64;
|
typedef long long int64;
|
||||||
typedef long int32;
|
typedef int int32;
|
||||||
typedef short int16;
|
typedef short int16;
|
||||||
typedef char int8;
|
typedef char int8;
|
||||||
typedef unsigned long long uint64;
|
typedef unsigned long long uint64;
|
||||||
typedef unsigned long uint32;
|
typedef unsigned int uint32;
|
||||||
typedef unsigned short uint16;
|
typedef unsigned short uint16;
|
||||||
typedef unsigned char uint8;
|
typedef unsigned char uint8;
|
||||||
typedef unsigned short WORD;
|
typedef unsigned short WORD;
|
||||||
|
|||||||
@ -240,7 +240,7 @@ void _FixFileName(std::string& str)
|
|||||||
// extracts the file name from a given path
|
// extracts the file name from a given path
|
||||||
std::string _PathToFileName(std::string str)
|
std::string _PathToFileName(std::string str)
|
||||||
{
|
{
|
||||||
uint32 pathend = str.find_last_of("/\\");
|
size_t pathend = str.find_last_of("/\\");
|
||||||
if(pathend != std::string::npos)
|
if(pathend != std::string::npos)
|
||||||
{
|
{
|
||||||
return str.substr(pathend+1);
|
return str.substr(pathend+1);
|
||||||
@ -250,7 +250,7 @@ std::string _PathToFileName(std::string str)
|
|||||||
|
|
||||||
std::string NormalizeFilename(std::string s)
|
std::string NormalizeFilename(std::string s)
|
||||||
{
|
{
|
||||||
uint32 p;
|
size_t p;
|
||||||
while( (p = s.find('\\')) != std::string::npos)//Replace \ by /
|
while( (p = s.find('\\')) != std::string::npos)//Replace \ by /
|
||||||
{
|
{
|
||||||
s.replace(p,1,"/");
|
s.replace(p,1,"/");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user