aboutsummaryrefslogtreecommitdiff
path: root/pkg/classes/packet.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-11-06 18:37:11 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-11-06 18:37:11 +0300
commit2f8c92f261586f68a976efce0cfcdd0401f402e0 (patch)
tree33189cc48987789dff4e7fba0a74d2b2326f0a04 /pkg/classes/packet.go
parentconvert cm ticks correctly (diff)
downloadsdp.go-2f8c92f261586f68a976efce0cfcdd0401f402e0.tar.gz
sdp.go-2f8c92f261586f68a976efce0cfcdd0401f402e0.tar.bz2
sdp.go-2f8c92f261586f68a976efce0cfcdd0401f402e0.zip
dont try to understand it, feel itlp-parser
Diffstat (limited to 'pkg/classes/packet.go')
-rw-r--r--pkg/classes/packet.go81
1 files changed, 0 insertions, 81 deletions
diff --git a/pkg/classes/packet.go b/pkg/classes/packet.go
deleted file mode 100644
index c608244..0000000
--- a/pkg/classes/packet.go
+++ /dev/null
@@ -1,81 +0,0 @@
1package classes
2
3import (
4 "fmt"
5
6 "github.com/pektezol/bitreader"
7 "github.com/pektezol/demoparser/pkg/messages"
8)
9
10const MSSC int = 2
11
12type Packet struct {
13 PacketInfo []CmdInfo
14 InSequence uint32
15 OutSequence uint32
16 Size uint32
17 Data []any
18}
19
20type CmdInfo struct {
21 Flags uint32
22 ViewOrigin []float32
23 ViewAngles []float32
24 LocalViewAngles []float32
25 ViewOrigin2 []float32
26 ViewAngles2 []float32
27 LocalViewAngles2 []float32
28}
29
30func (packet *Packet) ParsePacket(reader *bitreader.Reader) {
31 for count := 0; count < MSSC; count++ {
32 packet.ParseCmdInfo(reader)
33 }
34 packet.InSequence = reader.TryReadUInt32()
35 packet.OutSequence = reader.TryReadUInt32()
36 packet.Size = reader.TryReadUInt32()
37 packetReader := bitreader.NewReaderFromBytes(reader.TryReadBytesToSlice(uint64(packet.Size)), true)
38 for {
39 messageType, err := packetReader.ReadBits(6)
40 if err != nil {
41 break
42 }
43 packet.Data = append(packet.Data, messages.ParseMessages(messageType, packetReader))
44 }
45}
46
47func (packet *Packet) ParseCmdInfo(reader *bitreader.Reader) {
48 packet.PacketInfo = append(packet.PacketInfo, CmdInfo{
49 Flags: reader.TryReadUInt32(),
50 ViewOrigin: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
51 ViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
52 LocalViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
53 ViewOrigin2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
54 ViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
55 LocalViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
56 })
57}
58
59type CmdInfoFlags int
60
61const (
62 ECmdInfoFlagsNone = 0
63 ECmdInfoFlagsUseOrigin2 = 1
64 ECmdInfoFlagsUserAngles2 = 1 << 1
65 ECmdInfoFlagsNoInterp = 1 << 2
66)
67
68func (cmdInfoFlags CmdInfoFlags) String() string {
69 switch cmdInfoFlags {
70 case ECmdInfoFlagsNone:
71 return "None"
72 case ECmdInfoFlagsUseOrigin2:
73 return "UseOrigin2"
74 case ECmdInfoFlagsUserAngles2:
75 return "UserAngles2"
76 case ECmdInfoFlagsNoInterp:
77 return "NoInterp"
78 default:
79 return fmt.Sprintf("%d", int(cmdInfoFlags))
80 }
81}