fix: Replaces throttlers and packet callbacks with function pointers (#1063)
Replaces multi-cast delegates with function pointers to gain 25% in performance and lower allocations.
This commit is contained in:
parent
b779d7737f
commit
f24b98f8e2
31 changed files with 189 additions and 172 deletions
|
|
@ -34,29 +34,29 @@ public static class IncomingExtendedCommandPackets
|
|||
125, 126, 127, 128
|
||||
};
|
||||
|
||||
public static void Configure()
|
||||
public static unsafe void Configure()
|
||||
{
|
||||
IncomingPackets.Register(0xBF, 0, true, ExtendedCommand);
|
||||
IncomingPackets.Register(0xBF, 0, true, &ExtendedCommand);
|
||||
|
||||
RegisterExtended(0x05, false, ScreenSize);
|
||||
RegisterExtended(0x06, true, PartyMessage);
|
||||
RegisterExtended(0x09, true, DisarmRequest);
|
||||
RegisterExtended(0x0A, true, StunRequest);
|
||||
RegisterExtended(0x0B, false, Language);
|
||||
RegisterExtended(0x0C, true, CloseStatus);
|
||||
RegisterExtended(0x0E, true, Animate);
|
||||
RegisterExtended(0x0F, false, Empty); // What's this?
|
||||
RegisterExtended(0x10, true, QueryProperties);
|
||||
RegisterExtended(0x13, true, ContextMenuRequest);
|
||||
RegisterExtended(0x15, true, ContextMenuResponse);
|
||||
RegisterExtended(0x1A, true, StatLockChange);
|
||||
RegisterExtended(0x1C, true, CastSpell);
|
||||
RegisterExtended(0x24, false, UnhandledBF);
|
||||
RegisterExtended(0x2C, true, BandageTarget);
|
||||
RegisterExtended(0x2D, true, TargetedSpell);
|
||||
RegisterExtended(0x2E, true, TargetedSkillUse);
|
||||
RegisterExtended(0x30, true, TargetByResourceMacro);
|
||||
RegisterExtended(0x32, true, ToggleFlying);
|
||||
RegisterExtended(0x05, false, &ScreenSize);
|
||||
RegisterExtended(0x06, true, &PartyMessage);
|
||||
RegisterExtended(0x09, true, &DisarmRequest);
|
||||
RegisterExtended(0x0A, true, &StunRequest);
|
||||
RegisterExtended(0x0B, false, &Language);
|
||||
RegisterExtended(0x0C, true, &CloseStatus);
|
||||
RegisterExtended(0x0E, true, &Animate);
|
||||
RegisterExtended(0x0F, false, &Empty); // What's this?
|
||||
RegisterExtended(0x10, true, &QueryProperties);
|
||||
RegisterExtended(0x13, true, &ContextMenuRequest);
|
||||
RegisterExtended(0x15, true, &ContextMenuResponse);
|
||||
RegisterExtended(0x1A, true, &StatLockChange);
|
||||
RegisterExtended(0x1C, true, &CastSpell);
|
||||
RegisterExtended(0x24, false, &UnhandledBF);
|
||||
RegisterExtended(0x2C, true, &BandageTarget);
|
||||
RegisterExtended(0x2D, true, &TargetedSpell);
|
||||
RegisterExtended(0x2E, true, &TargetedSkillUse);
|
||||
RegisterExtended(0x30, true, &TargetByResourceMacro);
|
||||
RegisterExtended(0x32, true, &ToggleFlying);
|
||||
}
|
||||
|
||||
private static void UnhandledBF(NetState state, CircularBufferReader reader, int packetLength)
|
||||
|
|
@ -67,7 +67,8 @@ public static class IncomingExtendedCommandPackets
|
|||
{
|
||||
}
|
||||
|
||||
public static void RegisterExtended(int packetID, bool ingame, OnPacketReceive onReceive)
|
||||
public static unsafe void RegisterExtended(int packetID, bool ingame,
|
||||
delegate*<NetState, CircularBufferReader, int, void> onReceive)
|
||||
{
|
||||
if (packetID is >= 0 and < 0x100)
|
||||
{
|
||||
|
|
@ -86,7 +87,7 @@ public static class IncomingExtendedCommandPackets
|
|||
}
|
||||
}
|
||||
|
||||
public static void ExtendedCommand(NetState state, CircularBufferReader reader, int packetLength)
|
||||
public static unsafe void ExtendedCommand(NetState state, CircularBufferReader reader, int packetLength)
|
||||
{
|
||||
int packetId = reader.ReadUInt16();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue