diff --git a/.gitignore b/.gitignore
index ced27ed..a00e1d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,12 @@
.codex
.DS_Store
+Library
+Logs
+Packages
+Temp
+UserSettings
+
.idea
bin
obj
diff --git a/Dockerfile.bench b/Dockerfile.bench
new file mode 100644
index 0000000..61836d7
--- /dev/null
+++ b/Dockerfile.bench
@@ -0,0 +1,10 @@
+FROM golang:1.21-bookworm
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ protobuf-compiler \
+ flatbuffers-compiler \
+ && rm -rf /var/lib/apt/lists/*
+
+RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
+
+WORKDIR /workspace
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..01f4f2e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,35 @@
+UNITY_ASSETS := benchmarks/unity/Assets
+
+.PHONY: bench-image generate bench size gen-unity
+
+IMAGE := arpack-bench
+
+bench-image:
+ docker build -f Dockerfile.bench -t $(IMAGE) .
+
+generate:
+ go run ./cmd/arpack -in benchmarks/arpackmsg/messages.go -out-go benchmarks/arpackmsg
+ protoc --go_out=. --go_opt=paths=source_relative benchmarks/proto/move.proto
+
+generate-docker: bench-image
+ docker run --rm -v "$(PWD):/workspace" -w /workspace $(IMAGE) make generate
+
+bench:
+ go test ./benchmarks/... -bench=. -benchmem -count=1 -run=^$$
+
+size:
+ go test ./benchmarks/... -run=TestMessageSize -v
+
+bench-docker: bench-image
+ docker run --rm -v "$(PWD):/workspace" -w /workspace $(IMAGE) make bench
+
+gen-unity:
+ mkdir -p "$(UNITY_ASSETS)/Benchmarks"
+ go run ./cmd/arpack \
+ -in benchmarks/arpackmsg/messages.go \
+ -out-cs "$(UNITY_ASSETS)/Benchmarks/" \
+ -cs-namespace Arpack.Messages
+ protoc -I benchmarks/proto \
+ --csharp_out="$(UNITY_ASSETS)/Benchmarks/" \
+ benchmarks/proto/move.proto
+ @echo "Done. Attach BenchmarkRunner to a GameObject in SampleScene and press Play."
diff --git a/README.md b/README.md
index 0f9276f..f3f8a8f 100644
--- a/README.md
+++ b/README.md
@@ -143,10 +143,48 @@ Uses unsafe pointers for zero-copy serialization. Returns bytes written/consumed
- Booleans packed as bitfields (LSB first, up to 8 per byte)
- Quantized floats stored as `uint8` or `uint16`
+## Benchmarks Go Results (M3 Max)
+
+```
+BenchmarkArPack_Marshal-16 382568360 9.5 ns/op 5065 MB/s 0 B/op 0 allocs/op
+BenchmarkArPack_Unmarshal-16 98895892 34.6 ns/op 1388 MB/s 40 B/op 2 allocs/op
+BenchmarkProto_Marshal-16 21989466 163.6 ns/op 416 MB/s 0 B/op 0 allocs/op
+BenchmarkProto_Unmarshal-16 13950333 256.9 ns/op 265 MB/s 248 B/op 7 allocs/op
+BenchmarkFlatBuffers_Marshal-16 16297458 221.4 ns/op 687 MB/s 0 B/op 0 allocs/op
+BenchmarkFlatBuffers_Unmarshal-16 56095480 64.8 ns/op 2345 MB/s 24 B/op 1 allocs/op
+```
+
+| Format | Size |
+|---|---|
+| ArPack | 48 bytes |
+| Protobuf | 68 bytes |
+| FlatBuffers | 152 bytes |
+
+```bash
+go test ./benchmarks/... -bench=. -benchmem
+```
+
+### Benchmarks Unity Mono (M3 Max)
+
+```
+ArPack Serialize: 96.7 ns/op | 0 B/op
+ArPack Deserialize: 205.4 ns/op | 0 B/op
+Proto Serialize (alloc): 930.2 ns/op | 0 B/op
+Proto Deserialize (alloc): 1621.2 ns/op | 29 B/op
+Proto Serialize (reuse): 652.7 ns/op | 0 B/op
+```
+
+ArPack serialize is ~10× faster than Protobuf in Unity. Protobuf deserialize allocates on every call — a GC pressure source in hot game loops. ArPack deserialize is zero-alloc.
+
+```bash
+make gen-unity
+# then attach BenchmarkRunner to any GameObject in SampleScene and press Play
+```
+
## Running Tests
```bash
-# Unit tests
+# Unit tests
go test ./parser/... ./generator/...
# End-to-end cross-language tests
diff --git a/benchmarks/arpackmsg/messages.go b/benchmarks/arpackmsg/messages.go
new file mode 100644
index 0000000..8099f4a
--- /dev/null
+++ b/benchmarks/arpackmsg/messages.go
@@ -0,0 +1,39 @@
+package arpackmsg
+
+type Vector3 struct {
+ X float32 `pack:"min=-500,max=500,bits=16"`
+ Y float32 `pack:"min=-500,max=500,bits=16"`
+ Z float32 `pack:"min=-500,max=500,bits=16"`
+}
+
+type Opcode uint16
+
+const (
+ OpcodeUnknown Opcode = iota
+ OpcodeAuthorize
+ OpcodeJoinRoom
+)
+
+type MoveMessage struct {
+ Position Vector3
+ Velocity [3]float32
+ Waypoints []Vector3
+ PlayerID uint32
+ Active bool
+ Visible bool
+ Ghost bool
+ Name string
+}
+
+type SpawnMessage struct {
+ EntityID uint64
+ Position Vector3
+ Health int16
+ Tags []string
+ Data []uint8
+}
+
+type EnvelopeMessage struct {
+ Code Opcode
+ Counter uint8
+}
diff --git a/benchmarks/arpackmsg/messages_gen.go b/benchmarks/arpackmsg/messages_gen.go
new file mode 100644
index 0000000..bf19f82
--- /dev/null
+++ b/benchmarks/arpackmsg/messages_gen.go
@@ -0,0 +1,221 @@
+// Code generated by arpack. DO NOT EDIT.
+
+package arpackmsg
+
+import (
+ "encoding/binary"
+ "errors"
+ "math"
+)
+
+func (m *Vector3) Marshal(buf []byte) []byte {
+ _qm_X := uint16((m.X - (-500)) / (500 - (-500)) * 65535)
+ buf = binary.LittleEndian.AppendUint16(buf, _qm_X)
+ _qm_Y := uint16((m.Y - (-500)) / (500 - (-500)) * 65535)
+ buf = binary.LittleEndian.AppendUint16(buf, _qm_Y)
+ _qm_Z := uint16((m.Z - (-500)) / (500 - (-500)) * 65535)
+ buf = binary.LittleEndian.AppendUint16(buf, _qm_Z)
+ return buf
+}
+
+func (m *Vector3) Unmarshal(data []byte) (int, error) {
+ if len(data) < 6 {
+ return 0, errors.New("arpack: buffer too short for Vector3")
+ }
+ offset := 0
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _qm_X := binary.LittleEndian.Uint16(data[offset:])
+ offset += 2
+ m.X = float32(_qm_X)/65535*(500-(-500)) + (-500)
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _qm_Y := binary.LittleEndian.Uint16(data[offset:])
+ offset += 2
+ m.Y = float32(_qm_Y)/65535*(500-(-500)) + (-500)
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _qm_Z := binary.LittleEndian.Uint16(data[offset:])
+ offset += 2
+ m.Z = float32(_qm_Z)/65535*(500-(-500)) + (-500)
+ return offset, nil
+}
+
+func (m *MoveMessage) Marshal(buf []byte) []byte {
+ buf = m.Position.Marshal(buf)
+ for _iVelocity := 0; _iVelocity < 3; _iVelocity++ {
+ buf = binary.LittleEndian.AppendUint32(buf, math.Float32bits(m.Velocity[_iVelocity]))
+ }
+ buf = binary.LittleEndian.AppendUint16(buf, uint16(len(m.Waypoints)))
+ for _iWaypoints := range m.Waypoints {
+ buf = m.Waypoints[_iWaypoints].Marshal(buf)
+ }
+ buf = binary.LittleEndian.AppendUint32(buf, m.PlayerID)
+ var _boolByte4 uint8
+ if m.Active {
+ _boolByte4 |= 1 << 0
+ }
+ if m.Visible {
+ _boolByte4 |= 1 << 1
+ }
+ if m.Ghost {
+ _boolByte4 |= 1 << 2
+ }
+ buf = append(buf, _boolByte4)
+ buf = binary.LittleEndian.AppendUint16(buf, uint16(len(m.Name)))
+ buf = append(buf, m.Name...)
+ return buf
+}
+
+func (m *MoveMessage) Unmarshal(data []byte) (int, error) {
+ if len(data) < 23 {
+ return 0, errors.New("arpack: buffer too short for MoveMessage")
+ }
+ offset := 0
+ _nPosition, _err := m.Position.Unmarshal(data[offset:])
+ if _err != nil {
+ return 0, _err
+ }
+ offset += _nPosition
+ for _iVelocity := 0; _iVelocity < 3; _iVelocity++ {
+ if len(data) < offset+4 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.Velocity[_iVelocity] = math.Float32frombits(binary.LittleEndian.Uint32(data[offset:]))
+ offset += 4
+ }
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _lenWaypoints := int(binary.LittleEndian.Uint16(data[offset:]))
+ offset += 2
+ m.Waypoints = make([]Vector3, _lenWaypoints)
+ for _iWaypoints := 0; _iWaypoints < _lenWaypoints; _iWaypoints++ {
+ _nWaypoints__iWaypoints_, _err := m.Waypoints[_iWaypoints].Unmarshal(data[offset:])
+ if _err != nil {
+ return 0, _err
+ }
+ offset += _nWaypoints__iWaypoints_
+ }
+ if len(data) < offset+4 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.PlayerID = binary.LittleEndian.Uint32(data[offset:])
+ offset += 4
+ if len(data) < offset+1 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _boolByte4 := data[offset]
+ offset++
+ m.Active = _boolByte4&(1<<0) != 0
+ m.Visible = _boolByte4&(1<<1) != 0
+ m.Ghost = _boolByte4&(1<<2) != 0
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _slenm_Name := int(binary.LittleEndian.Uint16(data[offset:]))
+ offset += 2
+ if len(data) < offset+_slenm_Name {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.Name = string(data[offset : offset+_slenm_Name])
+ offset += _slenm_Name
+ return offset, nil
+}
+
+func (m *SpawnMessage) Marshal(buf []byte) []byte {
+ buf = binary.LittleEndian.AppendUint64(buf, m.EntityID)
+ buf = m.Position.Marshal(buf)
+ buf = binary.LittleEndian.AppendUint16(buf, uint16(m.Health))
+ buf = binary.LittleEndian.AppendUint16(buf, uint16(len(m.Tags)))
+ for _iTags := range m.Tags {
+ buf = binary.LittleEndian.AppendUint16(buf, uint16(len(m.Tags[_iTags])))
+ buf = append(buf, m.Tags[_iTags]...)
+ }
+ buf = binary.LittleEndian.AppendUint16(buf, uint16(len(m.Data)))
+ for _iData := range m.Data {
+ buf = append(buf, m.Data[_iData])
+ }
+ return buf
+}
+
+func (m *SpawnMessage) Unmarshal(data []byte) (int, error) {
+ if len(data) < 16 {
+ return 0, errors.New("arpack: buffer too short for SpawnMessage")
+ }
+ offset := 0
+ if len(data) < offset+8 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.EntityID = binary.LittleEndian.Uint64(data[offset:])
+ offset += 8
+ _nPosition, _err := m.Position.Unmarshal(data[offset:])
+ if _err != nil {
+ return 0, _err
+ }
+ offset += _nPosition
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.Health = int16(binary.LittleEndian.Uint16(data[offset:]))
+ offset += 2
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _lenTags := int(binary.LittleEndian.Uint16(data[offset:]))
+ offset += 2
+ m.Tags = make([]string, _lenTags)
+ for _iTags := 0; _iTags < _lenTags; _iTags++ {
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _slenm_Tags__iTags_ := int(binary.LittleEndian.Uint16(data[offset:]))
+ offset += 2
+ if len(data) < offset+_slenm_Tags__iTags_ {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.Tags[_iTags] = string(data[offset : offset+_slenm_Tags__iTags_])
+ offset += _slenm_Tags__iTags_
+ }
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ _lenData := int(binary.LittleEndian.Uint16(data[offset:]))
+ offset += 2
+ m.Data = make([]uint8, _lenData)
+ for _iData := 0; _iData < _lenData; _iData++ {
+ if len(data) < offset+1 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.Data[_iData] = data[offset]
+ offset += 1
+ }
+ return offset, nil
+}
+
+func (m *EnvelopeMessage) Marshal(buf []byte) []byte {
+ buf = binary.LittleEndian.AppendUint16(buf, uint16(m.Code))
+ buf = append(buf, m.Counter)
+ return buf
+}
+
+func (m *EnvelopeMessage) Unmarshal(data []byte) (int, error) {
+ if len(data) < 3 {
+ return 0, errors.New("arpack: buffer too short for EnvelopeMessage")
+ }
+ offset := 0
+ if len(data) < offset+2 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.Code = Opcode(binary.LittleEndian.Uint16(data[offset:]))
+ offset += 2
+ if len(data) < offset+1 {
+ return 0, errors.New("arpack: buffer too short")
+ }
+ m.Counter = data[offset]
+ offset += 1
+ return offset, nil
+}
diff --git a/benchmarks/bench_test.go b/benchmarks/bench_test.go
new file mode 100644
index 0000000..8ef2438
--- /dev/null
+++ b/benchmarks/bench_test.go
@@ -0,0 +1,217 @@
+package bench_test
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/edmand46/arpack/benchmarks/arpackmsg"
+ benchfbs "github.com/edmand46/arpack/benchmarks/flatbuffers"
+ benchpb "github.com/edmand46/arpack/benchmarks/proto"
+ flatbuffers "github.com/google/flatbuffers/go"
+ "google.golang.org/protobuf/proto"
+)
+
+// testMoveArpack returns a fully populated arpackmsg.MoveMessage for benchmarks.
+func testMoveArpack() arpackmsg.MoveMessage {
+ return arpackmsg.MoveMessage{
+ Position: arpackmsg.Vector3{X: 100, Y: -50, Z: 0},
+ Velocity: [3]float32{1.5, -2.5, 0},
+ Waypoints: []arpackmsg.Vector3{{X: 10, Y: 20, Z: 0}, {X: -10, Y: 0, Z: 100}},
+ PlayerID: 999,
+ Active: true,
+ Visible: false,
+ Ghost: true,
+ Name: "PlayerOne",
+ }
+}
+
+// testMoveProto returns a fully populated proto MoveMessage for benchmarks.
+func testMoveProto() *benchpb.MoveMessage {
+ return &benchpb.MoveMessage{
+ Position: &benchpb.Vector3{X: 100, Y: -50, Z: 0},
+ Velocity: []float32{1.5, -2.5, 0},
+ Waypoints: []*benchpb.Vector3{
+ {X: 10, Y: 20, Z: 0},
+ {X: -10, Y: 0, Z: 100},
+ },
+ PlayerId: 999,
+ Active: true,
+ Visible: false,
+ Ghost: true,
+ Name: "PlayerOne",
+ }
+}
+
+// testMoveFbs returns a fully populated benchfbs.MoveMsg for benchmarks.
+func testMoveFbs() *benchfbs.MoveMsg {
+ return &benchfbs.MoveMsg{
+ Position: benchfbs.Vec3{X: 100, Y: -50, Z: 0},
+ Velocity: [3]float32{1.5, -2.5, 0},
+ Waypoints: []benchfbs.Vec3{{X: 10, Y: 20, Z: 0}, {X: -10, Y: 0, Z: 100}},
+ PlayerID: 999,
+ Active: true,
+ Visible: false,
+ Ghost: true,
+ Name: "PlayerOne",
+ }
+}
+
+// TestMessageSize prints the wire size for each serialization format.
+func TestMessageSize(t *testing.T) {
+ // ArPack
+ apMsg := testMoveArpack()
+ apBuf := apMsg.Marshal(nil)
+ fmt.Printf("ArPack wire size: %d bytes\n", len(apBuf))
+
+ // Protobuf
+ pbMsg := testMoveProto()
+ pbBuf, err := proto.Marshal(pbMsg)
+ if err != nil {
+ t.Fatalf("proto.Marshal: %v", err)
+ }
+ fmt.Printf("Protobuf wire size: %d bytes\n", len(pbBuf))
+
+ // FlatBuffers
+ fbMsg := testMoveFbs()
+ b := flatbuffers.NewBuilder(256)
+ fbBuf := benchfbs.Marshal(b, fbMsg)
+ fmt.Printf("FlatBuf wire size: %d bytes\n", len(fbBuf))
+
+ // Sanity-check round-trips
+ var apOut arpackmsg.MoveMessage
+ if _, err := apOut.Unmarshal(apBuf); err != nil {
+ t.Fatalf("ArPack Unmarshal: %v", err)
+ }
+ if apOut.PlayerID != 999 || apOut.Name != "PlayerOne" {
+ t.Errorf("ArPack round-trip mismatch: %+v", apOut)
+ }
+
+ var pbOut benchpb.MoveMessage
+ if err := proto.Unmarshal(pbBuf, &pbOut); err != nil {
+ t.Fatalf("proto.Unmarshal: %v", err)
+ }
+ if pbOut.PlayerId != 999 || pbOut.Name != "PlayerOne" {
+ t.Errorf("Proto round-trip mismatch: %+v", pbOut)
+ }
+
+ var fbOut benchfbs.MoveMsg
+ benchfbs.Unmarshal(fbBuf, &fbOut)
+ if fbOut.PlayerID != 999 || fbOut.Name != "PlayerOne" {
+ t.Errorf("FlatBuffers round-trip mismatch: %+v", fbOut)
+ }
+}
+
+// --- ArPack benchmarks ---
+
+func BenchmarkArPack_Marshal(b *testing.B) {
+ msg := testMoveArpack()
+ buf := msg.Marshal(nil)
+ wireSize := len(buf)
+
+ b.ReportAllocs()
+ b.SetBytes(int64(wireSize))
+ b.ResetTimer()
+
+ var out []byte
+ for i := 0; i < b.N; i++ {
+ out = msg.Marshal(out[:0])
+ }
+ _ = out
+}
+
+func BenchmarkArPack_Unmarshal(b *testing.B) {
+ msg := testMoveArpack()
+ buf := msg.Marshal(nil)
+ wireSize := len(buf)
+
+ b.ReportAllocs()
+ b.SetBytes(int64(wireSize))
+ b.ResetTimer()
+
+ var out arpackmsg.MoveMessage
+ for i := 0; i < b.N; i++ {
+ if _, err := out.Unmarshal(buf); err != nil {
+ b.Fatal(err)
+ }
+ }
+}
+
+// --- Protobuf benchmarks ---
+
+func BenchmarkProto_Marshal(b *testing.B) {
+ msg := testMoveProto()
+ buf, err := proto.Marshal(msg)
+ if err != nil {
+ b.Fatal(err)
+ }
+ wireSize := len(buf)
+
+ b.ReportAllocs()
+ b.SetBytes(int64(wireSize))
+ b.ResetTimer()
+
+ var out []byte
+ for i := 0; i < b.N; i++ {
+ out, err = proto.MarshalOptions{}.MarshalAppend(out[:0], msg)
+ if err != nil {
+ b.Fatal(err)
+ }
+ }
+ _ = out
+}
+
+func BenchmarkProto_Unmarshal(b *testing.B) {
+ msg := testMoveProto()
+ buf, err := proto.Marshal(msg)
+ if err != nil {
+ b.Fatal(err)
+ }
+ wireSize := len(buf)
+
+ b.ReportAllocs()
+ b.SetBytes(int64(wireSize))
+ b.ResetTimer()
+
+ var out benchpb.MoveMessage
+ for i := 0; i < b.N; i++ {
+ out.Reset()
+ if err := proto.Unmarshal(buf, &out); err != nil {
+ b.Fatal(err)
+ }
+ }
+}
+
+// --- FlatBuffers benchmarks ---
+
+func BenchmarkFlatBuffers_Marshal(b *testing.B) {
+ msg := testMoveFbs()
+ builder := flatbuffers.NewBuilder(256)
+ buf := benchfbs.Marshal(builder, msg)
+ wireSize := len(buf)
+
+ b.ReportAllocs()
+ b.SetBytes(int64(wireSize))
+ b.ResetTimer()
+
+ for i := 0; i < b.N; i++ {
+ benchfbs.Marshal(builder, msg)
+ }
+}
+
+func BenchmarkFlatBuffers_Unmarshal(b *testing.B) {
+ msg := testMoveFbs()
+ builder := flatbuffers.NewBuilder(256)
+ buf := benchfbs.Marshal(builder, msg)
+ wireSize := len(buf)
+
+ b.ReportAllocs()
+ b.SetBytes(int64(wireSize))
+ b.ResetTimer()
+
+ var out benchfbs.MoveMsg
+ for i := 0; i < b.N; i++ {
+ out = benchfbs.MoveMsg{}
+ benchfbs.Unmarshal(buf, &out)
+ }
+ _ = out
+}
diff --git a/benchmarks/flatbuffers/move_fb.go b/benchmarks/flatbuffers/move_fb.go
new file mode 100644
index 0000000..7ffba48
--- /dev/null
+++ b/benchmarks/flatbuffers/move_fb.go
@@ -0,0 +1,174 @@
+package benchfbs
+
+import (
+ flatbuffers "github.com/google/flatbuffers/go"
+)
+
+// Vec3 mirrors the MoveMessage's Vector3 fields for FlatBuffers encoding.
+type Vec3 struct {
+ X, Y, Z float32
+}
+
+// MoveMsg is the Go struct used in the FlatBuffers benchmark.
+type MoveMsg struct {
+ Position Vec3
+ Velocity [3]float32
+ Waypoints []Vec3
+ PlayerID uint32
+ Active, Visible, Ghost bool
+ Name string
+}
+
+// vtable slot indices for MoveMessage fields (0-based slot -> vtable offset = 4 + 2*slot)
+// slot 0 -> position (vtable offset 4)
+// slot 1 -> velocity (vtable offset 6)
+// slot 2 -> waypoints (vtable offset 8)
+// slot 3 -> player_id (vtable offset 10)
+// slot 4 -> active (vtable offset 12)
+// slot 5 -> visible (vtable offset 14)
+// slot 6 -> ghost (vtable offset 16)
+// slot 7 -> name (vtable offset 18)
+const (
+ slotPosition = 0
+ slotVelocity = 1
+ slotWaypoints = 2
+ slotPlayerID = 3
+ slotActive = 4
+ slotVisible = 5
+ slotGhost = 6
+ slotName = 7
+)
+
+// buildVec3 writes a Vec3 as a table with 3 float32 fields and returns its offset.
+// Vec3 slots: x=0, y=1, z=2
+func buildVec3(b *flatbuffers.Builder, v Vec3) flatbuffers.UOffsetT {
+ b.StartObject(3)
+ b.PrependFloat32Slot(0, v.X, 0)
+ b.PrependFloat32Slot(1, v.Y, 0)
+ b.PrependFloat32Slot(2, v.Z, 0)
+ return b.EndObject()
+}
+
+// Marshal serialises msg into a FlatBuffer using b and returns the finished bytes.
+// The builder is reset before use, so callers can reuse it across calls.
+func Marshal(b *flatbuffers.Builder, msg *MoveMsg) []byte {
+ b.Reset()
+
+ // 1. Build all variable-length data first (must be done outside object construction).
+
+ // name string
+ nameOff := b.CreateString(msg.Name)
+
+ // velocity vector: 3 × float32
+ b.StartVector(4, 3, 4)
+ for i := 2; i >= 0; i-- {
+ b.PrependFloat32(msg.Velocity[i])
+ }
+ velOff := b.EndVector(3)
+
+ // waypoints vector: repeated Vec3 tables (build each table first, collect offsets)
+ wpOffsets := make([]flatbuffers.UOffsetT, len(msg.Waypoints))
+ for i, wp := range msg.Waypoints {
+ wpOffsets[i] = buildVec3(b, wp)
+ }
+ b.StartVector(4, len(wpOffsets), 4)
+ for i := len(wpOffsets) - 1; i >= 0; i-- {
+ b.PrependUOffsetT(wpOffsets[i])
+ }
+ wpVecOff := b.EndVector(len(wpOffsets))
+
+ // position table
+ posOff := buildVec3(b, msg.Position)
+
+ // 2. Build the MoveMessage table.
+ b.StartObject(8)
+ b.PrependUOffsetTSlot(slotPosition, posOff, 0)
+ b.PrependUOffsetTSlot(slotVelocity, velOff, 0)
+ b.PrependUOffsetTSlot(slotWaypoints, wpVecOff, 0)
+ b.PrependUint32Slot(slotPlayerID, msg.PlayerID, 0)
+ b.PrependBoolSlot(slotActive, msg.Active, false)
+ b.PrependBoolSlot(slotVisible, msg.Visible, false)
+ b.PrependBoolSlot(slotGhost, msg.Ghost, false)
+ b.PrependUOffsetTSlot(slotName, nameOff, 0)
+ root := b.EndObject()
+
+ b.Finish(root)
+ return b.FinishedBytes()
+}
+
+// readVec3 reads a Vec3 from a table at the given absolute position in buf.
+func readVec3(buf []byte, tablePos flatbuffers.UOffsetT) Vec3 {
+ tab := flatbuffers.Table{Bytes: buf, Pos: tablePos}
+ var v Vec3
+ if o := tab.Offset(4); o != 0 { // slot 0 -> vtable offset 4
+ v.X = tab.GetFloat32(tab.Pos + flatbuffers.UOffsetT(o))
+ }
+ if o := tab.Offset(6); o != 0 { // slot 1 -> vtable offset 6
+ v.Y = tab.GetFloat32(tab.Pos + flatbuffers.UOffsetT(o))
+ }
+ if o := tab.Offset(8); o != 0 { // slot 2 -> vtable offset 8
+ v.Z = tab.GetFloat32(tab.Pos + flatbuffers.UOffsetT(o))
+ }
+ return v
+}
+
+// Unmarshal reads all fields from a finished FlatBuffer into out.
+func Unmarshal(buf []byte, out *MoveMsg) {
+ // The root offset is stored at byte 0 of the finished buffer.
+ rootPos := flatbuffers.GetUOffsetT(buf)
+ tab := flatbuffers.Table{Bytes: buf, Pos: rootPos}
+
+ // position (slot 0, vtable offset 4)
+ if o := tab.Offset(4); o != 0 {
+ absOff := tab.Pos + flatbuffers.UOffsetT(o)
+ posPos := tab.Indirect(absOff)
+ out.Position = readVec3(buf, posPos)
+ }
+
+ // velocity vector (slot 1, vtable offset 6)
+ if o := tab.Offset(6); o != 0 {
+ vecStart := tab.Vector(flatbuffers.UOffsetT(o))
+ for i := 0; i < 3; i++ {
+ out.Velocity[i] = flatbuffers.GetFloat32(buf[int(vecStart)+i*4:])
+ }
+ }
+
+ // waypoints vector (slot 2, vtable offset 8)
+ if o := tab.Offset(8); o != 0 {
+ n := tab.VectorLen(flatbuffers.UOffsetT(o))
+ out.Waypoints = make([]Vec3, n)
+ vecStart := tab.Vector(flatbuffers.UOffsetT(o))
+ for i := 0; i < n; i++ {
+ // Each element is an UOffsetT pointing to the table.
+ elemOff := vecStart + flatbuffers.UOffsetT(i*4)
+ tablePos := elemOff + flatbuffers.GetUOffsetT(buf[elemOff:])
+ out.Waypoints[i] = readVec3(buf, tablePos)
+ }
+ }
+
+ // player_id (slot 3, vtable offset 10)
+ if o := tab.Offset(10); o != 0 {
+ out.PlayerID = tab.GetUint32(tab.Pos + flatbuffers.UOffsetT(o))
+ }
+
+ // active (slot 4, vtable offset 12)
+ if o := tab.Offset(12); o != 0 {
+ out.Active = tab.GetBool(tab.Pos + flatbuffers.UOffsetT(o))
+ }
+
+ // visible (slot 5, vtable offset 14)
+ if o := tab.Offset(14); o != 0 {
+ out.Visible = tab.GetBool(tab.Pos + flatbuffers.UOffsetT(o))
+ }
+
+ // ghost (slot 6, vtable offset 16)
+ if o := tab.Offset(16); o != 0 {
+ out.Ghost = tab.GetBool(tab.Pos + flatbuffers.UOffsetT(o))
+ }
+
+ // name (slot 7, vtable offset 18)
+ if o := tab.Offset(18); o != 0 {
+ absOff := tab.Pos + flatbuffers.UOffsetT(o)
+ out.Name = tab.String(absOff)
+ }
+}
diff --git a/benchmarks/proto/move.pb.go b/benchmarks/proto/move.pb.go
new file mode 100644
index 0000000..c4880ba
--- /dev/null
+++ b/benchmarks/proto/move.pb.go
@@ -0,0 +1,253 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.10
+// protoc v6.33.0
+// source: benchmarks/proto/move.proto
+
+package proto
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type Vector3 struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ X float32 `protobuf:"fixed32,1,opt,name=x,proto3" json:"x,omitempty"`
+ Y float32 `protobuf:"fixed32,2,opt,name=y,proto3" json:"y,omitempty"`
+ Z float32 `protobuf:"fixed32,3,opt,name=z,proto3" json:"z,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *Vector3) Reset() {
+ *x = Vector3{}
+ mi := &file_benchmarks_proto_move_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *Vector3) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Vector3) ProtoMessage() {}
+
+func (x *Vector3) ProtoReflect() protoreflect.Message {
+ mi := &file_benchmarks_proto_move_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Vector3.ProtoReflect.Descriptor instead.
+func (*Vector3) Descriptor() ([]byte, []int) {
+ return file_benchmarks_proto_move_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Vector3) GetX() float32 {
+ if x != nil {
+ return x.X
+ }
+ return 0
+}
+
+func (x *Vector3) GetY() float32 {
+ if x != nil {
+ return x.Y
+ }
+ return 0
+}
+
+func (x *Vector3) GetZ() float32 {
+ if x != nil {
+ return x.Z
+ }
+ return 0
+}
+
+type MoveMessage struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Position *Vector3 `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"`
+ Velocity []float32 `protobuf:"fixed32,2,rep,packed,name=velocity,proto3" json:"velocity,omitempty"`
+ Waypoints []*Vector3 `protobuf:"bytes,3,rep,name=waypoints,proto3" json:"waypoints,omitempty"`
+ PlayerId uint32 `protobuf:"varint,4,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"`
+ Active bool `protobuf:"varint,5,opt,name=active,proto3" json:"active,omitempty"`
+ Visible bool `protobuf:"varint,6,opt,name=visible,proto3" json:"visible,omitempty"`
+ Ghost bool `protobuf:"varint,7,opt,name=ghost,proto3" json:"ghost,omitempty"`
+ Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *MoveMessage) Reset() {
+ *x = MoveMessage{}
+ mi := &file_benchmarks_proto_move_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *MoveMessage) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MoveMessage) ProtoMessage() {}
+
+func (x *MoveMessage) ProtoReflect() protoreflect.Message {
+ mi := &file_benchmarks_proto_move_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MoveMessage.ProtoReflect.Descriptor instead.
+func (*MoveMessage) Descriptor() ([]byte, []int) {
+ return file_benchmarks_proto_move_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *MoveMessage) GetPosition() *Vector3 {
+ if x != nil {
+ return x.Position
+ }
+ return nil
+}
+
+func (x *MoveMessage) GetVelocity() []float32 {
+ if x != nil {
+ return x.Velocity
+ }
+ return nil
+}
+
+func (x *MoveMessage) GetWaypoints() []*Vector3 {
+ if x != nil {
+ return x.Waypoints
+ }
+ return nil
+}
+
+func (x *MoveMessage) GetPlayerId() uint32 {
+ if x != nil {
+ return x.PlayerId
+ }
+ return 0
+}
+
+func (x *MoveMessage) GetActive() bool {
+ if x != nil {
+ return x.Active
+ }
+ return false
+}
+
+func (x *MoveMessage) GetVisible() bool {
+ if x != nil {
+ return x.Visible
+ }
+ return false
+}
+
+func (x *MoveMessage) GetGhost() bool {
+ if x != nil {
+ return x.Ghost
+ }
+ return false
+}
+
+func (x *MoveMessage) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+var File_benchmarks_proto_move_proto protoreflect.FileDescriptor
+
+const file_benchmarks_proto_move_proto_rawDesc = "" +
+ "\n" +
+ "\x1bbenchmarks/proto/move.proto\x12\n" +
+ "benchproto\"3\n" +
+ "\aVector3\x12\f\n" +
+ "\x01x\x18\x01 \x01(\x02R\x01x\x12\f\n" +
+ "\x01y\x18\x02 \x01(\x02R\x01y\x12\f\n" +
+ "\x01z\x18\x03 \x01(\x02R\x01z\"\x86\x02\n" +
+ "\vMoveMessage\x12/\n" +
+ "\bposition\x18\x01 \x01(\v2\x13.benchproto.Vector3R\bposition\x12\x1a\n" +
+ "\bvelocity\x18\x02 \x03(\x02R\bvelocity\x121\n" +
+ "\twaypoints\x18\x03 \x03(\v2\x13.benchproto.Vector3R\twaypoints\x12\x1b\n" +
+ "\tplayer_id\x18\x04 \x01(\rR\bplayerId\x12\x16\n" +
+ "\x06active\x18\x05 \x01(\bR\x06active\x12\x18\n" +
+ "\avisible\x18\x06 \x01(\bR\avisible\x12\x14\n" +
+ "\x05ghost\x18\a \x01(\bR\x05ghost\x12\x12\n" +
+ "\x04name\x18\b \x01(\tR\x04nameB-Z+github.com/edmand46/arpack/benchmarks/protob\x06proto3"
+
+var (
+ file_benchmarks_proto_move_proto_rawDescOnce sync.Once
+ file_benchmarks_proto_move_proto_rawDescData []byte
+)
+
+func file_benchmarks_proto_move_proto_rawDescGZIP() []byte {
+ file_benchmarks_proto_move_proto_rawDescOnce.Do(func() {
+ file_benchmarks_proto_move_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_benchmarks_proto_move_proto_rawDesc), len(file_benchmarks_proto_move_proto_rawDesc)))
+ })
+ return file_benchmarks_proto_move_proto_rawDescData
+}
+
+var file_benchmarks_proto_move_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_benchmarks_proto_move_proto_goTypes = []any{
+ (*Vector3)(nil), // 0: benchproto.Vector3
+ (*MoveMessage)(nil), // 1: benchproto.MoveMessage
+}
+var file_benchmarks_proto_move_proto_depIdxs = []int32{
+ 0, // 0: benchproto.MoveMessage.position:type_name -> benchproto.Vector3
+ 0, // 1: benchproto.MoveMessage.waypoints:type_name -> benchproto.Vector3
+ 2, // [2:2] is the sub-list for method output_type
+ 2, // [2:2] is the sub-list for method input_type
+ 2, // [2:2] is the sub-list for extension type_name
+ 2, // [2:2] is the sub-list for extension extendee
+ 0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_benchmarks_proto_move_proto_init() }
+func file_benchmarks_proto_move_proto_init() {
+ if File_benchmarks_proto_move_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_benchmarks_proto_move_proto_rawDesc), len(file_benchmarks_proto_move_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 2,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_benchmarks_proto_move_proto_goTypes,
+ DependencyIndexes: file_benchmarks_proto_move_proto_depIdxs,
+ MessageInfos: file_benchmarks_proto_move_proto_msgTypes,
+ }.Build()
+ File_benchmarks_proto_move_proto = out.File
+ file_benchmarks_proto_move_proto_goTypes = nil
+ file_benchmarks_proto_move_proto_depIdxs = nil
+}
diff --git a/benchmarks/proto/move.proto b/benchmarks/proto/move.proto
new file mode 100644
index 0000000..a459654
--- /dev/null
+++ b/benchmarks/proto/move.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+package benchproto;
+option go_package = "github.com/edmand46/arpack/benchmarks/proto";
+
+message Vector3 {
+ float x = 1;
+ float y = 2;
+ float z = 3;
+}
+
+message MoveMessage {
+ Vector3 position = 1;
+ repeated float velocity = 2;
+ repeated Vector3 waypoints = 3;
+ uint32 player_id = 4;
+ bool active = 5;
+ bool visible = 6;
+ bool ghost = 7;
+ string name = 8;
+}
diff --git a/benchmarks/unity/Assets/Benchmarks.meta b/benchmarks/unity/Assets/Benchmarks.meta
new file mode 100644
index 0000000..0eb4b13
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7b9f947cf50f547f08cabcd88b87750e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/benchmarks/unity/Assets/Benchmarks/BenchmarkRunner.cs b/benchmarks/unity/Assets/Benchmarks/BenchmarkRunner.cs
new file mode 100644
index 0000000..b0e52ad
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/BenchmarkRunner.cs
@@ -0,0 +1,141 @@
+using System;
+using System.Diagnostics;
+using Google.Protobuf;
+using UnityEngine;
+
+public class BenchmarkRunner : MonoBehaviour
+{
+ private const int N = 10_000;
+ private const int Warmup = 1_000;
+
+ private unsafe void Start()
+ {
+ var apMsg = new Arpack.Messages.MoveMessage
+ {
+ Position = new Arpack.Messages.Vector3 { X = 100, Y = -50, Z = 0 },
+ Velocity = new float[] { 1.5f, -2.5f, 0f },
+ Waypoints = new Arpack.Messages.Vector3[]
+ {
+ new Arpack.Messages.Vector3 { X = 10, Y = 20, Z = 0 },
+ new Arpack.Messages.Vector3 { X = -10, Y = 0, Z = 100 },
+ },
+ PlayerID = 999,
+ Active = true,
+ Visible = false,
+ Ghost = true,
+ Name = "PlayerOne",
+ };
+
+ var pbMsg = new Benchproto.MoveMessage
+ {
+ Position = new Benchproto.Vector3 { X = 100, Y = -50, Z = 0 },
+ PlayerId = 999,
+ Active = true,
+ Visible = false,
+ Ghost = true,
+ Name = "PlayerOne",
+ };
+ pbMsg.Velocity.AddRange(new float[] { 1.5f, -2.5f, 0f });
+ pbMsg.Waypoints.Add(new Benchproto.Vector3 { X = 10, Y = 20, Z = 0 });
+ pbMsg.Waypoints.Add(new Benchproto.Vector3 { X = -10, Y = 0, Z = 100 });
+
+ byte[] apBuf = new byte[256];
+ int apWireSize;
+ fixed (byte* ptr = apBuf) { apWireSize = apMsg.Serialize(ptr); }
+
+ byte[] apBytes = new byte[apWireSize];
+ Array.Copy(apBuf, apBytes, apWireSize);
+
+ byte[] pbBytes = pbMsg.ToByteArray();
+ int pbWireSize = pbBytes.Length;
+ byte[] protoOutputBuf = new byte[256];
+
+ // Warmup (JIT)
+ for (int i = 0; i < Warmup; i++)
+ {
+ fixed (byte* ptr = apBuf) { apMsg.Serialize(ptr); }
+ fixed (byte* ptr = apBytes) { Arpack.Messages.MoveMessage.Deserialize(ptr, out _); }
+ _ = pbMsg.ToByteArray();
+ _ = Benchproto.MoveMessage.Parser.ParseFrom(pbBytes);
+ var cos = new CodedOutputStream(protoOutputBuf);
+ pbMsg.WriteTo(cos);
+ cos.Flush();
+ }
+
+ Stopwatch sw;
+ long gcBefore, gcAfter;
+
+ // ArPack Serialize
+ GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect();
+ gcBefore = GC.GetTotalMemory(false);
+ sw = Stopwatch.StartNew();
+ for (int i = 0; i < N; i++)
+ {
+ fixed (byte* ptr = apBuf) { apMsg.Serialize(ptr); }
+ }
+ sw.Stop();
+ gcAfter = GC.GetTotalMemory(false);
+ Log("ArPack Serialize ", sw, N, gcAfter - gcBefore);
+
+ // ArPack Deserialize
+ GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect();
+ gcBefore = GC.GetTotalMemory(false);
+ sw = Stopwatch.StartNew();
+ for (int i = 0; i < N; i++)
+ {
+ fixed (byte* ptr = apBytes) { Arpack.Messages.MoveMessage.Deserialize(ptr, out _); }
+ }
+ sw.Stop();
+ gcAfter = GC.GetTotalMemory(false);
+ Log("ArPack Deserialize ", sw, N, gcAfter - gcBefore);
+
+ // Proto Serialize (alloc)
+ GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect();
+ gcBefore = GC.GetTotalMemory(false);
+ sw = Stopwatch.StartNew();
+ byte[] pbOut = null;
+ for (int i = 0; i < N; i++)
+ {
+ pbOut = pbMsg.ToByteArray();
+ }
+ sw.Stop();
+ gcAfter = GC.GetTotalMemory(false);
+ Log("Proto Serialize (alloc) ", sw, N, gcAfter - gcBefore);
+ _ = pbOut;
+
+ // Proto Deserialize (alloc)
+ GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect();
+ gcBefore = GC.GetTotalMemory(false);
+ sw = Stopwatch.StartNew();
+ for (int i = 0; i < N; i++)
+ {
+ _ = Benchproto.MoveMessage.Parser.ParseFrom(pbBytes);
+ }
+ sw.Stop();
+ gcAfter = GC.GetTotalMemory(false);
+ Log("Proto Deserialize (alloc)", sw, N, gcAfter - gcBefore);
+
+ // Proto Serialize (reuse buffer)
+ GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect();
+ gcBefore = GC.GetTotalMemory(false);
+ sw = Stopwatch.StartNew();
+ for (int i = 0; i < N; i++)
+ {
+ var cos = new CodedOutputStream(protoOutputBuf);
+ pbMsg.WriteTo(cos);
+ cos.Flush();
+ }
+ sw.Stop();
+ gcAfter = GC.GetTotalMemory(false);
+ Log("Proto Serialize (reuse) ", sw, N, gcAfter - gcBefore);
+
+ UnityEngine.Debug.Log($"[Bench] Wire sizes — ArPack: {apWireSize} bytes | Protobuf: {pbWireSize} bytes");
+ }
+
+ private static void Log(string label, Stopwatch sw, int n, long gcDelta)
+ {
+ double nsPerOp = sw.Elapsed.TotalMilliseconds * 1_000_000.0 / n;
+ long bPerOp = Math.Max(0, gcDelta) / n;
+ UnityEngine.Debug.Log($"[Bench] {label}: {nsPerOp,8:F1} ns/op | {bPerOp,6} B/op");
+ }
+}
diff --git a/benchmarks/unity/Assets/Benchmarks/BenchmarkRunner.cs.meta b/benchmarks/unity/Assets/Benchmarks/BenchmarkRunner.cs.meta
new file mode 100644
index 0000000..e0beb4d
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/BenchmarkRunner.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: ac4456ca45dd64092a7c26b7fc6cff0f
\ No newline at end of file
diff --git a/benchmarks/unity/Assets/Benchmarks/Benchmarks.asmdef b/benchmarks/unity/Assets/Benchmarks/Benchmarks.asmdef
new file mode 100644
index 0000000..659c995
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/Benchmarks.asmdef
@@ -0,0 +1,16 @@
+{
+ "name": "Benchmarks",
+ "rootNamespace": "",
+ "references": [],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": true,
+ "overrideReferences": false,
+ "precompiledReferences": [
+ "Google.Protobuf"
+ ],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
diff --git a/benchmarks/unity/Assets/Benchmarks/Benchmarks.asmdef.meta b/benchmarks/unity/Assets/Benchmarks/Benchmarks.asmdef.meta
new file mode 100644
index 0000000..badb5af
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/Benchmarks.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 20a66c82a93d34a489c40c5f81b4a203
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/benchmarks/unity/Assets/Benchmarks/Messages.gen.cs b/benchmarks/unity/Assets/Benchmarks/Messages.gen.cs
new file mode 100644
index 0000000..7fbdfad
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/Messages.gen.cs
@@ -0,0 +1,206 @@
+// arpack
+// Code generated by arpack. DO NOT EDIT.
+#pragma warning disable CS8500
+
+using System;
+using System.Text;
+
+namespace Arpack.Messages
+{
+ public enum Opcode : ushort
+ {
+ Unknown = 0,
+ Authorize = 1,
+ JoinRoom = 2
+ }
+
+ public unsafe struct Vector3
+ {
+ public float X;
+ public float Y;
+ public float Z;
+
+ public int Serialize(byte* buffer)
+ {
+ byte* ptr = buffer;
+ *(ushort*)ptr = (ushort)((X - (-500f)) / (500f - (-500f)) * 65535f); ptr += 2;
+ *(ushort*)ptr = (ushort)((Y - (-500f)) / (500f - (-500f)) * 65535f); ptr += 2;
+ *(ushort*)ptr = (ushort)((Z - (-500f)) / (500f - (-500f)) * 65535f); ptr += 2;
+ return (int)(ptr - buffer);
+ }
+
+ public static int Deserialize(byte* buffer, out Vector3 msg)
+ {
+ byte* ptr = buffer;
+ msg = default;
+ msg.X = (float)(*(ushort*)ptr) / 65535f * (500f - (-500f)) + (-500f); ptr += 2;
+ msg.Y = (float)(*(ushort*)ptr) / 65535f * (500f - (-500f)) + (-500f); ptr += 2;
+ msg.Z = (float)(*(ushort*)ptr) / 65535f * (500f - (-500f)) + (-500f); ptr += 2;
+ return (int)(ptr - buffer);
+ }
+ }
+
+ public unsafe struct MoveMessage
+ {
+ public Vector3 Position;
+ public float[] Velocity;
+ public Vector3[] Waypoints;
+ public uint PlayerID;
+ public bool Active;
+ public bool Visible;
+ public bool Ghost;
+ public string Name;
+
+ public int Serialize(byte* buffer)
+ {
+ byte* ptr = buffer;
+ ptr += Position.Serialize(ptr);
+ for (int _iVelocity = 0; _iVelocity < 3; _iVelocity++)
+ {
+ *(float*)ptr = Velocity[_iVelocity]; ptr += 4;
+ }
+ *(ushort*)ptr = (ushort)(Waypoints?.Length ?? 0); ptr += 2;
+ if (Waypoints != null)
+ {
+ for (int _iWaypoints = 0; _iWaypoints < Waypoints.Length; _iWaypoints++)
+ {
+ ptr += Waypoints[_iWaypoints].Serialize(ptr);
+ }
+ }
+ *(uint*)ptr = PlayerID; ptr += 4;
+ byte _boolByte4 = 0;
+ if (Active) _boolByte4 |= (byte)(1 << 0);
+ if (Visible) _boolByte4 |= (byte)(1 << 1);
+ if (Ghost) _boolByte4 |= (byte)(1 << 2);
+ *ptr = _boolByte4; ptr++;
+ int _slenName = Name != null ? Encoding.UTF8.GetByteCount(Name) : 0;
+ *(ushort*)ptr = (ushort)_slenName; ptr += 2;
+ if (Name != null && _slenName > 0)
+ {
+ fixed (char* _charsName = Name)
+ {
+ Encoding.UTF8.GetBytes(_charsName, Name.Length, ptr, _slenName);
+ }
+ }
+ ptr += _slenName;
+ return (int)(ptr - buffer);
+ }
+
+ public static int Deserialize(byte* buffer, out MoveMessage msg)
+ {
+ byte* ptr = buffer;
+ msg = default;
+ ptr += Vector3.Deserialize(ptr, out msg.Position);
+ msg.Velocity = new float[3];
+ for (int _iVelocity = 0; _iVelocity < 3; _iVelocity++)
+ {
+ msg.Velocity[_iVelocity] = *(float*)ptr; ptr += 4;
+ }
+ int _lenWaypoints = *(ushort*)ptr; ptr += 2;
+ msg.Waypoints = new Vector3[_lenWaypoints];
+ for (int _iWaypoints = 0; _iWaypoints < _lenWaypoints; _iWaypoints++)
+ {
+ ptr += Vector3.Deserialize(ptr, out msg.Waypoints[_iWaypoints]);
+ }
+ msg.PlayerID = *(uint*)ptr; ptr += 4;
+ byte _boolByte4 = *ptr; ptr++;
+ msg.Active = (_boolByte4 & (1 << 0)) != 0;
+ msg.Visible = (_boolByte4 & (1 << 1)) != 0;
+ msg.Ghost = (_boolByte4 & (1 << 2)) != 0;
+ int _slenmsg_Name = *(ushort*)ptr; ptr += 2;
+ msg.Name = _slenmsg_Name > 0 ? Encoding.UTF8.GetString(ptr, _slenmsg_Name) : string.Empty;
+ ptr += _slenmsg_Name;
+ return (int)(ptr - buffer);
+ }
+ }
+
+ public unsafe struct SpawnMessage
+ {
+ public ulong EntityID;
+ public Vector3 Position;
+ public short Health;
+ public string[] Tags;
+ public byte[] Data;
+
+ public int Serialize(byte* buffer)
+ {
+ byte* ptr = buffer;
+ *(ulong*)ptr = EntityID; ptr += 8;
+ ptr += Position.Serialize(ptr);
+ *(short*)ptr = Health; ptr += 2;
+ *(ushort*)ptr = (ushort)(Tags?.Length ?? 0); ptr += 2;
+ if (Tags != null)
+ {
+ for (int _iTags = 0; _iTags < Tags.Length; _iTags++)
+ {
+ int _slenTags__iTags_ = Tags[_iTags] != null ? Encoding.UTF8.GetByteCount(Tags[_iTags]) : 0;
+ *(ushort*)ptr = (ushort)_slenTags__iTags_; ptr += 2;
+ if (Tags[_iTags] != null && _slenTags__iTags_ > 0)
+ {
+ fixed (char* _charsTags__iTags_ = Tags[_iTags])
+ {
+ Encoding.UTF8.GetBytes(_charsTags__iTags_, Tags[_iTags].Length, ptr, _slenTags__iTags_);
+ }
+ }
+ ptr += _slenTags__iTags_;
+ }
+ }
+ *(ushort*)ptr = (ushort)(Data?.Length ?? 0); ptr += 2;
+ if (Data != null)
+ {
+ for (int _iData = 0; _iData < Data.Length; _iData++)
+ {
+ *ptr = Data[_iData]; ptr += 1;
+ }
+ }
+ return (int)(ptr - buffer);
+ }
+
+ public static int Deserialize(byte* buffer, out SpawnMessage msg)
+ {
+ byte* ptr = buffer;
+ msg = default;
+ msg.EntityID = *(ulong*)ptr; ptr += 8;
+ ptr += Vector3.Deserialize(ptr, out msg.Position);
+ msg.Health = *(short*)ptr; ptr += 2;
+ int _lenTags = *(ushort*)ptr; ptr += 2;
+ msg.Tags = new string[_lenTags];
+ for (int _iTags = 0; _iTags < _lenTags; _iTags++)
+ {
+ int _slenmsg_Tags__iTags_ = *(ushort*)ptr; ptr += 2;
+ msg.Tags[_iTags] = _slenmsg_Tags__iTags_ > 0 ? Encoding.UTF8.GetString(ptr, _slenmsg_Tags__iTags_) : string.Empty;
+ ptr += _slenmsg_Tags__iTags_;
+ }
+ int _lenData = *(ushort*)ptr; ptr += 2;
+ msg.Data = new byte[_lenData];
+ for (int _iData = 0; _iData < _lenData; _iData++)
+ {
+ msg.Data[_iData] = *ptr; ptr += 1;
+ }
+ return (int)(ptr - buffer);
+ }
+ }
+
+ public unsafe struct EnvelopeMessage
+ {
+ public Opcode Code;
+ public byte Counter;
+
+ public int Serialize(byte* buffer)
+ {
+ byte* ptr = buffer;
+ *(ushort*)ptr = (ushort)Code; ptr += 2;
+ *ptr = Counter; ptr += 1;
+ return (int)(ptr - buffer);
+ }
+
+ public static int Deserialize(byte* buffer, out EnvelopeMessage msg)
+ {
+ byte* ptr = buffer;
+ msg = default;
+ msg.Code = (Opcode)(*(ushort*)ptr); ptr += 2;
+ msg.Counter = *ptr; ptr += 1;
+ return (int)(ptr - buffer);
+ }
+ }
+}
diff --git a/benchmarks/unity/Assets/Benchmarks/Messages.gen.cs.meta b/benchmarks/unity/Assets/Benchmarks/Messages.gen.cs.meta
new file mode 100644
index 0000000..f5dc08c
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/Messages.gen.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 9755692abdaf54daf912862821fb9fd6
\ No newline at end of file
diff --git a/benchmarks/unity/Assets/Benchmarks/Move.cs b/benchmarks/unity/Assets/Benchmarks/Move.cs
new file mode 100644
index 0000000..b4b014d
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/Move.cs
@@ -0,0 +1,768 @@
+//
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: move.proto
+//
+#pragma warning disable 1591, 0612, 3021, 8981
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Benchproto {
+
+ /// Holder for reflection information generated from move.proto
+ public static partial class MoveReflection {
+
+ #region Descriptor
+ /// File descriptor for move.proto
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static MoveReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Cgptb3ZlLnByb3RvEgpiZW5jaHByb3RvIioKB1ZlY3RvcjMSCQoBeBgBIAEo",
+ "AhIJCgF5GAIgASgCEgkKAXoYAyABKAIivwEKC01vdmVNZXNzYWdlEiUKCHBv",
+ "c2l0aW9uGAEgASgLMhMuYmVuY2hwcm90by5WZWN0b3IzEhAKCHZlbG9jaXR5",
+ "GAIgAygCEiYKCXdheXBvaW50cxgDIAMoCzITLmJlbmNocHJvdG8uVmVjdG9y",
+ "MxIRCglwbGF5ZXJfaWQYBCABKA0SDgoGYWN0aXZlGAUgASgIEg8KB3Zpc2li",
+ "bGUYBiABKAgSDQoFZ2hvc3QYByABKAgSDAoEbmFtZRgIIAEoCUItWitnaXRo",
+ "dWIuY29tL2VkbWFuZDQ2L2FycGFjay9iZW5jaG1hcmtzL3Byb3RvYgZwcm90",
+ "bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Benchproto.Vector3), global::Benchproto.Vector3.Parser, new[]{ "X", "Y", "Z" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Benchproto.MoveMessage), global::Benchproto.MoveMessage.Parser, new[]{ "Position", "Velocity", "Waypoints", "PlayerId", "Active", "Visible", "Ghost", "Name" }, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class Vector3 : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Vector3());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Benchproto.MoveReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public Vector3() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public Vector3(Vector3 other) : this() {
+ x_ = other.x_;
+ y_ = other.y_;
+ z_ = other.z_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public Vector3 Clone() {
+ return new Vector3(this);
+ }
+
+ /// Field number for the "x" field.
+ public const int XFieldNumber = 1;
+ private float x_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public float X {
+ get { return x_; }
+ set {
+ x_ = value;
+ }
+ }
+
+ /// Field number for the "y" field.
+ public const int YFieldNumber = 2;
+ private float y_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public float Y {
+ get { return y_; }
+ set {
+ y_ = value;
+ }
+ }
+
+ /// Field number for the "z" field.
+ public const int ZFieldNumber = 3;
+ private float z_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public float Z {
+ get { return z_; }
+ set {
+ z_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as Vector3);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(Vector3 other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X, other.X)) return false;
+ if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Y, other.Y)) return false;
+ if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Z, other.Z)) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (X != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X);
+ if (Y != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Y);
+ if (Z != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Z);
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (X != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(X);
+ }
+ if (Y != 0F) {
+ output.WriteRawTag(21);
+ output.WriteFloat(Y);
+ }
+ if (Z != 0F) {
+ output.WriteRawTag(29);
+ output.WriteFloat(Z);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (X != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(X);
+ }
+ if (Y != 0F) {
+ output.WriteRawTag(21);
+ output.WriteFloat(Y);
+ }
+ if (Z != 0F) {
+ output.WriteRawTag(29);
+ output.WriteFloat(Z);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (X != 0F) {
+ size += 1 + 4;
+ }
+ if (Y != 0F) {
+ size += 1 + 4;
+ }
+ if (Z != 0F) {
+ size += 1 + 4;
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(Vector3 other) {
+ if (other == null) {
+ return;
+ }
+ if (other.X != 0F) {
+ X = other.X;
+ }
+ if (other.Y != 0F) {
+ Y = other.Y;
+ }
+ if (other.Z != 0F) {
+ Z = other.Z;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 13: {
+ X = input.ReadFloat();
+ break;
+ }
+ case 21: {
+ Y = input.ReadFloat();
+ break;
+ }
+ case 29: {
+ Z = input.ReadFloat();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 13: {
+ X = input.ReadFloat();
+ break;
+ }
+ case 21: {
+ Y = input.ReadFloat();
+ break;
+ }
+ case 29: {
+ Z = input.ReadFloat();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class MoveMessage : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MoveMessage());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Benchproto.MoveReflection.Descriptor.MessageTypes[1]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public MoveMessage() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public MoveMessage(MoveMessage other) : this() {
+ position_ = other.position_ != null ? other.position_.Clone() : null;
+ velocity_ = other.velocity_.Clone();
+ waypoints_ = other.waypoints_.Clone();
+ playerId_ = other.playerId_;
+ active_ = other.active_;
+ visible_ = other.visible_;
+ ghost_ = other.ghost_;
+ name_ = other.name_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public MoveMessage Clone() {
+ return new MoveMessage(this);
+ }
+
+ /// Field number for the "position" field.
+ public const int PositionFieldNumber = 1;
+ private global::Benchproto.Vector3 position_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::Benchproto.Vector3 Position {
+ get { return position_; }
+ set {
+ position_ = value;
+ }
+ }
+
+ /// Field number for the "velocity" field.
+ public const int VelocityFieldNumber = 2;
+ private static readonly pb::FieldCodec _repeated_velocity_codec
+ = pb::FieldCodec.ForFloat(18);
+ private readonly pbc::RepeatedField velocity_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pbc::RepeatedField Velocity {
+ get { return velocity_; }
+ }
+
+ /// Field number for the "waypoints" field.
+ public const int WaypointsFieldNumber = 3;
+ private static readonly pb::FieldCodec _repeated_waypoints_codec
+ = pb::FieldCodec.ForMessage(26, global::Benchproto.Vector3.Parser);
+ private readonly pbc::RepeatedField waypoints_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pbc::RepeatedField Waypoints {
+ get { return waypoints_; }
+ }
+
+ /// Field number for the "player_id" field.
+ public const int PlayerIdFieldNumber = 4;
+ private uint playerId_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint PlayerId {
+ get { return playerId_; }
+ set {
+ playerId_ = value;
+ }
+ }
+
+ /// Field number for the "active" field.
+ public const int ActiveFieldNumber = 5;
+ private bool active_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Active {
+ get { return active_; }
+ set {
+ active_ = value;
+ }
+ }
+
+ /// Field number for the "visible" field.
+ public const int VisibleFieldNumber = 6;
+ private bool visible_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Visible {
+ get { return visible_; }
+ set {
+ visible_ = value;
+ }
+ }
+
+ /// Field number for the "ghost" field.
+ public const int GhostFieldNumber = 7;
+ private bool ghost_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Ghost {
+ get { return ghost_; }
+ set {
+ ghost_ = value;
+ }
+ }
+
+ /// Field number for the "name" field.
+ public const int NameFieldNumber = 8;
+ private string name_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Name {
+ get { return name_; }
+ set {
+ name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as MoveMessage);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(MoveMessage other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!object.Equals(Position, other.Position)) return false;
+ if(!velocity_.Equals(other.velocity_)) return false;
+ if(!waypoints_.Equals(other.waypoints_)) return false;
+ if (PlayerId != other.PlayerId) return false;
+ if (Active != other.Active) return false;
+ if (Visible != other.Visible) return false;
+ if (Ghost != other.Ghost) return false;
+ if (Name != other.Name) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (position_ != null) hash ^= Position.GetHashCode();
+ hash ^= velocity_.GetHashCode();
+ hash ^= waypoints_.GetHashCode();
+ if (PlayerId != 0) hash ^= PlayerId.GetHashCode();
+ if (Active != false) hash ^= Active.GetHashCode();
+ if (Visible != false) hash ^= Visible.GetHashCode();
+ if (Ghost != false) hash ^= Ghost.GetHashCode();
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (position_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(Position);
+ }
+ velocity_.WriteTo(output, _repeated_velocity_codec);
+ waypoints_.WriteTo(output, _repeated_waypoints_codec);
+ if (PlayerId != 0) {
+ output.WriteRawTag(32);
+ output.WriteUInt32(PlayerId);
+ }
+ if (Active != false) {
+ output.WriteRawTag(40);
+ output.WriteBool(Active);
+ }
+ if (Visible != false) {
+ output.WriteRawTag(48);
+ output.WriteBool(Visible);
+ }
+ if (Ghost != false) {
+ output.WriteRawTag(56);
+ output.WriteBool(Ghost);
+ }
+ if (Name.Length != 0) {
+ output.WriteRawTag(66);
+ output.WriteString(Name);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (position_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(Position);
+ }
+ velocity_.WriteTo(ref output, _repeated_velocity_codec);
+ waypoints_.WriteTo(ref output, _repeated_waypoints_codec);
+ if (PlayerId != 0) {
+ output.WriteRawTag(32);
+ output.WriteUInt32(PlayerId);
+ }
+ if (Active != false) {
+ output.WriteRawTag(40);
+ output.WriteBool(Active);
+ }
+ if (Visible != false) {
+ output.WriteRawTag(48);
+ output.WriteBool(Visible);
+ }
+ if (Ghost != false) {
+ output.WriteRawTag(56);
+ output.WriteBool(Ghost);
+ }
+ if (Name.Length != 0) {
+ output.WriteRawTag(66);
+ output.WriteString(Name);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (position_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Position);
+ }
+ size += velocity_.CalculateSize(_repeated_velocity_codec);
+ size += waypoints_.CalculateSize(_repeated_waypoints_codec);
+ if (PlayerId != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(PlayerId);
+ }
+ if (Active != false) {
+ size += 1 + 1;
+ }
+ if (Visible != false) {
+ size += 1 + 1;
+ }
+ if (Ghost != false) {
+ size += 1 + 1;
+ }
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(MoveMessage other) {
+ if (other == null) {
+ return;
+ }
+ if (other.position_ != null) {
+ if (position_ == null) {
+ Position = new global::Benchproto.Vector3();
+ }
+ Position.MergeFrom(other.Position);
+ }
+ velocity_.Add(other.velocity_);
+ waypoints_.Add(other.waypoints_);
+ if (other.PlayerId != 0) {
+ PlayerId = other.PlayerId;
+ }
+ if (other.Active != false) {
+ Active = other.Active;
+ }
+ if (other.Visible != false) {
+ Visible = other.Visible;
+ }
+ if (other.Ghost != false) {
+ Ghost = other.Ghost;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ if (position_ == null) {
+ Position = new global::Benchproto.Vector3();
+ }
+ input.ReadMessage(Position);
+ break;
+ }
+ case 18:
+ case 21: {
+ velocity_.AddEntriesFrom(input, _repeated_velocity_codec);
+ break;
+ }
+ case 26: {
+ waypoints_.AddEntriesFrom(input, _repeated_waypoints_codec);
+ break;
+ }
+ case 32: {
+ PlayerId = input.ReadUInt32();
+ break;
+ }
+ case 40: {
+ Active = input.ReadBool();
+ break;
+ }
+ case 48: {
+ Visible = input.ReadBool();
+ break;
+ }
+ case 56: {
+ Ghost = input.ReadBool();
+ break;
+ }
+ case 66: {
+ Name = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ if (position_ == null) {
+ Position = new global::Benchproto.Vector3();
+ }
+ input.ReadMessage(Position);
+ break;
+ }
+ case 18:
+ case 21: {
+ velocity_.AddEntriesFrom(ref input, _repeated_velocity_codec);
+ break;
+ }
+ case 26: {
+ waypoints_.AddEntriesFrom(ref input, _repeated_waypoints_codec);
+ break;
+ }
+ case 32: {
+ PlayerId = input.ReadUInt32();
+ break;
+ }
+ case 40: {
+ Active = input.ReadBool();
+ break;
+ }
+ case 48: {
+ Visible = input.ReadBool();
+ break;
+ }
+ case 56: {
+ Ghost = input.ReadBool();
+ break;
+ }
+ case 66: {
+ Name = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/benchmarks/unity/Assets/Benchmarks/Move.cs.meta b/benchmarks/unity/Assets/Benchmarks/Move.cs.meta
new file mode 100644
index 0000000..a71ee34
--- /dev/null
+++ b/benchmarks/unity/Assets/Benchmarks/Move.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: c7457f233226e42568ebd6ff92de57fc
\ No newline at end of file
diff --git a/benchmarks/unity/Assets/InputSystem_Actions.inputactions b/benchmarks/unity/Assets/InputSystem_Actions.inputactions
new file mode 100644
index 0000000..1a12cb9
--- /dev/null
+++ b/benchmarks/unity/Assets/InputSystem_Actions.inputactions
@@ -0,0 +1,1057 @@
+{
+ "name": "InputSystem_Actions",
+ "maps": [
+ {
+ "name": "Player",
+ "id": "df70fa95-8a34-4494-b137-73ab6b9c7d37",
+ "actions": [
+ {
+ "name": "Move",
+ "type": "Value",
+ "id": "351f2ccd-1f9f-44bf-9bec-d62ac5c5f408",
+ "expectedControlType": "Vector2",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": true
+ },
+ {
+ "name": "Look",
+ "type": "Value",
+ "id": "6b444451-8a00-4d00-a97e-f47457f736a8",
+ "expectedControlType": "Vector2",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": true
+ },
+ {
+ "name": "Attack",
+ "type": "Button",
+ "id": "6c2ab1b8-8984-453a-af3d-a3c78ae1679a",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Interact",
+ "type": "Button",
+ "id": "852140f2-7766-474d-8707-702459ba45f3",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "Hold",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Crouch",
+ "type": "Button",
+ "id": "27c5f898-bc57-4ee1-8800-db469aca5fe3",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Jump",
+ "type": "Button",
+ "id": "f1ba0d36-48eb-4cd5-b651-1c94a6531f70",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Previous",
+ "type": "Button",
+ "id": "2776c80d-3c14-4091-8c56-d04ced07a2b0",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Next",
+ "type": "Button",
+ "id": "b7230bb6-fc9b-4f52-8b25-f5e19cb2c2ba",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Sprint",
+ "type": "Button",
+ "id": "641cd816-40e6-41b4-8c3d-04687c349290",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ }
+ ],
+ "bindings": [
+ {
+ "name": "",
+ "id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403",
+ "path": "/leftStick",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "WASD",
+ "id": "00ca640b-d935-4593-8157-c05846ea39b3",
+ "path": "Dpad",
+ "interactions": "",
+ "processors": "",
+ "groups": "",
+ "action": "Move",
+ "isComposite": true,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "up",
+ "id": "e2062cb9-1b15-46a2-838c-2f8d72a0bdd9",
+ "path": "/w",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "up",
+ "id": "8180e8bd-4097-4f4e-ab88-4523101a6ce9",
+ "path": "/upArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "down",
+ "id": "320bffee-a40b-4347-ac70-c210eb8bc73a",
+ "path": "/s",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "down",
+ "id": "1c5327b5-f71c-4f60-99c7-4e737386f1d1",
+ "path": "/downArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "left",
+ "id": "d2581a9b-1d11-4566-b27d-b92aff5fabbc",
+ "path": "/a",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "left",
+ "id": "2e46982e-44cc-431b-9f0b-c11910bf467a",
+ "path": "/leftArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "right",
+ "id": "fcfe95b8-67b9-4526-84b5-5d0bc98d6400",
+ "path": "/d",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "right",
+ "id": "77bff152-3580-4b21-b6de-dcd0c7e41164",
+ "path": "/rightArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "",
+ "id": "1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8",
+ "path": "/{Primary2DAxis}",
+ "interactions": "",
+ "processors": "",
+ "groups": "XR",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "3ea4d645-4504-4529-b061-ab81934c3752",
+ "path": "/stick",
+ "interactions": "",
+ "processors": "",
+ "groups": "Joystick",
+ "action": "Move",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "c1f7a91b-d0fd-4a62-997e-7fb9b69bf235",
+ "path": "/rightStick",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Look",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "8c8e490b-c610-4785-884f-f04217b23ca4",
+ "path": "/delta",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse;Touch",
+ "action": "Look",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "3e5f5442-8668-4b27-a940-df99bad7e831",
+ "path": "/{Hatswitch}",
+ "interactions": "",
+ "processors": "",
+ "groups": "Joystick",
+ "action": "Look",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "143bb1cd-cc10-4eca-a2f0-a3664166fe91",
+ "path": "/buttonWest",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Attack",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "05f6913d-c316-48b2-a6bb-e225f14c7960",
+ "path": "/leftButton",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Attack",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "886e731e-7071-4ae4-95c0-e61739dad6fd",
+ "path": "/primaryTouch/tap",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Touch",
+ "action": "Attack",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "ee3d0cd2-254e-47a7-a8cb-bc94d9658c54",
+ "path": "/trigger",
+ "interactions": "",
+ "processors": "",
+ "groups": "Joystick",
+ "action": "Attack",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "8255d333-5683-4943-a58a-ccb207ff1dce",
+ "path": "/{PrimaryAction}",
+ "interactions": "",
+ "processors": "",
+ "groups": "XR",
+ "action": "Attack",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "b3c1c7f0-bd20-4ee7-a0f1-899b24bca6d7",
+ "path": "/enter",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Attack",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "cbac6039-9c09-46a1-b5f2-4e5124ccb5ed",
+ "path": "/2",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Next",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "e15ca19d-e649-4852-97d5-7fe8ccc44e94",
+ "path": "/dpad/right",
+ "interactions": "",
+ "processors": "",
+ "groups": "Gamepad",
+ "action": "Next",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "f2e9ba44-c423-42a7-ad56-f20975884794",
+ "path": "/leftShift",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Sprint",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6",
+ "path": "/leftStickPress",
+ "interactions": "",
+ "processors": "",
+ "groups": "Gamepad",
+ "action": "Sprint",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "d8bf24bf-3f2f-4160-a97c-38ec1eb520ba",
+ "path": "/trigger",
+ "interactions": "",
+ "processors": "",
+ "groups": "XR",
+ "action": "Sprint",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "eb40bb66-4559-4dfa-9a2f-820438abb426",
+ "path": "/space",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Jump",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "daba33a1-ad0c-4742-a909-43ad1cdfbeb6",
+ "path": "/buttonSouth",
+ "interactions": "",
+ "processors": "",
+ "groups": "Gamepad",
+ "action": "Jump",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "603f3daf-40bd-4854-8724-93e8017f59e3",
+ "path": "/secondaryButton",
+ "interactions": "",
+ "processors": "",
+ "groups": "XR",
+ "action": "Jump",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "1534dc16-a6aa-499d-9c3a-22b47347b52a",
+ "path": "/1",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Previous",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "25060bbd-a3a6-476e-8fba-45ae484aad05",
+ "path": "/dpad/left",
+ "interactions": "",
+ "processors": "",
+ "groups": "Gamepad",
+ "action": "Previous",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "1c04ea5f-b012-41d1-a6f7-02e963b52893",
+ "path": "/e",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Interact",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "b3f66d0b-7751-423f-908b-a11c5bd95930",
+ "path": "/buttonNorth",
+ "interactions": "",
+ "processors": "",
+ "groups": "Gamepad",
+ "action": "Interact",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "4f4649ac-64a8-4a73-af11-b3faef356a4d",
+ "path": "/buttonEast",
+ "interactions": "",
+ "processors": "",
+ "groups": "Gamepad",
+ "action": "Crouch",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "36e52cba-0905-478e-a818-f4bfcb9f3b9a",
+ "path": "/c",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Crouch",
+ "isComposite": false,
+ "isPartOfComposite": false
+ }
+ ]
+ },
+ {
+ "name": "UI",
+ "id": "272f6d14-89ba-496f-b7ff-215263d3219f",
+ "actions": [
+ {
+ "name": "Navigate",
+ "type": "PassThrough",
+ "id": "c95b2375-e6d9-4b88-9c4c-c5e76515df4b",
+ "expectedControlType": "Vector2",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Submit",
+ "type": "Button",
+ "id": "7607c7b6-cd76-4816-beef-bd0341cfe950",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Cancel",
+ "type": "Button",
+ "id": "15cef263-9014-4fd5-94d9-4e4a6234a6ef",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Point",
+ "type": "PassThrough",
+ "id": "32b35790-4ed0-4e9a-aa41-69ac6d629449",
+ "expectedControlType": "Vector2",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": true
+ },
+ {
+ "name": "Click",
+ "type": "PassThrough",
+ "id": "3c7022bf-7922-4f7c-a998-c437916075ad",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": true
+ },
+ {
+ "name": "RightClick",
+ "type": "PassThrough",
+ "id": "44b200b1-1557-4083-816c-b22cbdf77ddf",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "MiddleClick",
+ "type": "PassThrough",
+ "id": "dad70c86-b58c-4b17-88ad-f5e53adf419e",
+ "expectedControlType": "Button",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "ScrollWheel",
+ "type": "PassThrough",
+ "id": "0489e84a-4833-4c40-bfae-cea84b696689",
+ "expectedControlType": "Vector2",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "TrackedDevicePosition",
+ "type": "PassThrough",
+ "id": "24908448-c609-4bc3-a128-ea258674378a",
+ "expectedControlType": "Vector3",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "TrackedDeviceOrientation",
+ "type": "PassThrough",
+ "id": "9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be",
+ "expectedControlType": "Quaternion",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ }
+ ],
+ "bindings": [
+ {
+ "name": "Gamepad",
+ "id": "809f371f-c5e2-4e7a-83a1-d867598f40dd",
+ "path": "2DVector",
+ "interactions": "",
+ "processors": "",
+ "groups": "",
+ "action": "Navigate",
+ "isComposite": true,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "up",
+ "id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf",
+ "path": "/leftStick/up",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "up",
+ "id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81",
+ "path": "/rightStick/up",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "down",
+ "id": "2db08d65-c5fb-421b-983f-c71163608d67",
+ "path": "/leftStick/down",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "down",
+ "id": "58748904-2ea9-4a80-8579-b500e6a76df8",
+ "path": "/rightStick/down",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "left",
+ "id": "8ba04515-75aa-45de-966d-393d9bbd1c14",
+ "path": "/leftStick/left",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "left",
+ "id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921",
+ "path": "/rightStick/left",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "right",
+ "id": "fcd248ae-a788-4676-a12e-f4d81205600b",
+ "path": "/leftStick/right",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "right",
+ "id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20",
+ "path": "/rightStick/right",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "",
+ "id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90",
+ "path": "/dpad",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Gamepad",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "Joystick",
+ "id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9",
+ "path": "2DVector",
+ "interactions": "",
+ "processors": "",
+ "groups": "",
+ "action": "Navigate",
+ "isComposite": true,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "up",
+ "id": "3db53b26-6601-41be-9887-63ac74e79d19",
+ "path": "/stick/up",
+ "interactions": "",
+ "processors": "",
+ "groups": "Joystick",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "down",
+ "id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f",
+ "path": "/stick/down",
+ "interactions": "",
+ "processors": "",
+ "groups": "Joystick",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "left",
+ "id": "0392d399-f6dd-4c82-8062-c1e9c0d34835",
+ "path": "/stick/left",
+ "interactions": "",
+ "processors": "",
+ "groups": "Joystick",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "right",
+ "id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc",
+ "path": "/stick/right",
+ "interactions": "",
+ "processors": "",
+ "groups": "Joystick",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "Keyboard",
+ "id": "ff527021-f211-4c02-933e-5976594c46ed",
+ "path": "2DVector",
+ "interactions": "",
+ "processors": "",
+ "groups": "",
+ "action": "Navigate",
+ "isComposite": true,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "up",
+ "id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0",
+ "path": "/w",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "up",
+ "id": "eb480147-c587-4a33-85ed-eb0ab9942c43",
+ "path": "/upArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "down",
+ "id": "2bf42165-60bc-42ca-8072-8c13ab40239b",
+ "path": "/s",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "down",
+ "id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac",
+ "path": "/downArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "left",
+ "id": "74214943-c580-44e4-98eb-ad7eebe17902",
+ "path": "/a",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "left",
+ "id": "cea9b045-a000-445b-95b8-0c171af70a3b",
+ "path": "/leftArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "right",
+ "id": "8607c725-d935-4808-84b1-8354e29bab63",
+ "path": "/d",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "right",
+ "id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b",
+ "path": "/rightArrow",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Navigate",
+ "isComposite": false,
+ "isPartOfComposite": true
+ },
+ {
+ "name": "",
+ "id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc",
+ "path": "*/{Submit}",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
+ "action": "Submit",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "82627dcc-3b13-4ba9-841d-e4b746d6553e",
+ "path": "*/{Cancel}",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
+ "action": "Cancel",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86",
+ "path": "/position",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Point",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7",
+ "path": "/position",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "Point",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "5693e57a-238a-46ed-b5ae-e64e6e574302",
+ "path": "/touch*/position",
+ "interactions": "",
+ "processors": "",
+ "groups": "Touch",
+ "action": "Point",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5",
+ "path": "/leftButton",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Click",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace",
+ "path": "/tip",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "Click",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "47c2a644-3ebc-4dae-a106-589b7ca75b59",
+ "path": "/touch*/press",
+ "interactions": "",
+ "processors": "",
+ "groups": "Touch",
+ "action": "Click",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677",
+ "path": "/trigger",
+ "interactions": "",
+ "processors": "",
+ "groups": "XR",
+ "action": "Click",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "38c99815-14ea-4617-8627-164d27641299",
+ "path": "/scroll",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse",
+ "action": "ScrollWheel",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "4c191405-5738-4d4b-a523-c6a301dbf754",
+ "path": "/rightButton",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "RightClick",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "24066f69-da47-44f3-a07e-0015fb02eb2e",
+ "path": "/middleButton",
+ "interactions": "",
+ "processors": "",
+ "groups": "Keyboard&Mouse",
+ "action": "MiddleClick",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77",
+ "path": "/devicePosition",
+ "interactions": "",
+ "processors": "",
+ "groups": "XR",
+ "action": "TrackedDevicePosition",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "23e01e3a-f935-4948-8d8b-9bcac77714fb",
+ "path": "/deviceRotation",
+ "interactions": "",
+ "processors": "",
+ "groups": "XR",
+ "action": "TrackedDeviceOrientation",
+ "isComposite": false,
+ "isPartOfComposite": false
+ }
+ ]
+ }
+ ],
+ "controlSchemes": [
+ {
+ "name": "Keyboard&Mouse",
+ "bindingGroup": "Keyboard&Mouse",
+ "devices": [
+ {
+ "devicePath": "",
+ "isOptional": false,
+ "isOR": false
+ },
+ {
+ "devicePath": "",
+ "isOptional": false,
+ "isOR": false
+ }
+ ]
+ },
+ {
+ "name": "Gamepad",
+ "bindingGroup": "Gamepad",
+ "devices": [
+ {
+ "devicePath": "",
+ "isOptional": false,
+ "isOR": false
+ }
+ ]
+ },
+ {
+ "name": "Touch",
+ "bindingGroup": "Touch",
+ "devices": [
+ {
+ "devicePath": "",
+ "isOptional": false,
+ "isOR": false
+ }
+ ]
+ },
+ {
+ "name": "Joystick",
+ "bindingGroup": "Joystick",
+ "devices": [
+ {
+ "devicePath": "",
+ "isOptional": false,
+ "isOR": false
+ }
+ ]
+ },
+ {
+ "name": "XR",
+ "bindingGroup": "XR",
+ "devices": [
+ {
+ "devicePath": "",
+ "isOptional": false,
+ "isOR": false
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/benchmarks/unity/Assets/InputSystem_Actions.inputactions.meta b/benchmarks/unity/Assets/InputSystem_Actions.inputactions.meta
new file mode 100644
index 0000000..e25b7aa
--- /dev/null
+++ b/benchmarks/unity/Assets/InputSystem_Actions.inputactions.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: 3590b91b4603b465dbb4216d601bff33
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
+ generateWrapperCode: 0
+ wrapperCodePath:
+ wrapperClassName:
+ wrapperCodeNamespace:
diff --git a/benchmarks/unity/Assets/Plugins.meta b/benchmarks/unity/Assets/Plugins.meta
new file mode 100644
index 0000000..8b6f753
--- /dev/null
+++ b/benchmarks/unity/Assets/Plugins.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f4bc80e0b96da47f3bbcaed7aa3fcb27
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/benchmarks/unity/Assets/Plugins/Google.Protobuf.dll b/benchmarks/unity/Assets/Plugins/Google.Protobuf.dll
new file mode 100755
index 0000000..70f875a
Binary files /dev/null and b/benchmarks/unity/Assets/Plugins/Google.Protobuf.dll differ
diff --git a/benchmarks/unity/Assets/Plugins/Google.Protobuf.dll.meta b/benchmarks/unity/Assets/Plugins/Google.Protobuf.dll.meta
new file mode 100644
index 0000000..9f9a6ca
--- /dev/null
+++ b/benchmarks/unity/Assets/Plugins/Google.Protobuf.dll.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: f7d8cfb8b4c854ef88343739cde5f7d6
\ No newline at end of file
diff --git a/benchmarks/unity/Assets/Scenes.meta b/benchmarks/unity/Assets/Scenes.meta
new file mode 100644
index 0000000..e9a21bf
--- /dev/null
+++ b/benchmarks/unity/Assets/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c2528068817984550af33837b73bee36
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/benchmarks/unity/Assets/Scenes/SampleScene.unity b/benchmarks/unity/Assets/Scenes/SampleScene.unity
new file mode 100644
index 0000000..9f07b34
--- /dev/null
+++ b/benchmarks/unity/Assets/Scenes/SampleScene.unity
@@ -0,0 +1,231 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &519420028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ - component: {fileID: 519420033}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &519420033
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ac4456ca45dd64092a7c26b7fc6cff0f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Benchmarks::BenchmarkRunner
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 519420032}
diff --git a/benchmarks/unity/Assets/Scenes/SampleScene.unity.meta b/benchmarks/unity/Assets/Scenes/SampleScene.unity.meta
new file mode 100644
index 0000000..c1e3c88
--- /dev/null
+++ b/benchmarks/unity/Assets/Scenes/SampleScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2cda990e2423bbf4892e6590ba056729
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/benchmarks/unity/Benchmarks.csproj b/benchmarks/unity/Benchmarks.csproj
new file mode 100644
index 0000000..dc4d9ce
--- /dev/null
+++ b/benchmarks/unity/Benchmarks.csproj
@@ -0,0 +1,887 @@
+
+
+
+ 9.0
+ <_TargetFrameworkDirectories>non_empty_path_generated_by_unity.rider.package
+ <_FullFrameworkReferenceAssemblyPaths>non_empty_path_generated_by_unity.rider.package
+ true
+ false
+
+
+ Debug
+ AnyCPU
+ 10.0.20506
+ 2.0
+
+ {b6ce87c6-d606-93b9-b8b1-3b520c8d6bae}
+ {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Library
+ Properties
+ Benchmarks
+ v4.7.1
+ 512
+ .
+
+
+ true
+ full
+ false
+ Temp\Bin\Debug\Benchmarks\
+ UNITY_6000_3_11;UNITY_6000_3;UNITY_6000;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;UNITY_2021_1_OR_NEWER;UNITY_2021_2_OR_NEWER;UNITY_2021_3_OR_NEWER;UNITY_2022_1_OR_NEWER;UNITY_2022_2_OR_NEWER;UNITY_2022_3_OR_NEWER;UNITY_2023_1_OR_NEWER;UNITY_2023_2_OR_NEWER;UNITY_2023_3_OR_NEWER;UNITY_6000_0_OR_NEWER;UNITY_6000_1_OR_NEWER;UNITY_6000_2_OR_NEWER;UNITY_6000_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AR;ENABLE_AUDIO;ENABLE_AUDIO_SCRIPTABLE_PIPELINE;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_UNITY_CONSENT;ENABLE_UNITY_CLOUD_IDENTIFIERS;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_NATIVE_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_EDITOR_GAME_SERVICES;ENABLE_UNITY_GAME_SERVICES_ANALYTICS_SUPPORT;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_GENERATE_NATIVE_PLUGINS_FOR_ASSEMBLIES_API;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;ENABLE_MANAGED_UNITYTLS;INCLUDE_DYNAMIC_GI;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_MARSHALLING_TESTS;ENABLE_VIDEO;ENABLE_NAVIGATION_OFFMESHLINK_TO_NAVMESHLINK;ENABLE_ACCELERATOR_CLIENT_DEBUGGING;ENABLE_ACCESSIBILITY_SCREEN_READER;TEXTCORE_1_0_OR_NEWER;EDITOR_ONLY_NAVMESH_BUILDER_DEPRECATED;PLATFORM_STANDALONE_OSX;PLATFORM_STANDALONE;UNITY_STANDALONE_OSX;UNITY_STANDALONE;ENABLE_GAMECENTER;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_CLOUD_SERVICES_ENGINE_DIAGNOSTICS;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_SPATIALTRACKING;PLATFORM_HAS_CUSTOM_MUTEX;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;PLATFORM_SUPPORTS_SPLIT_GRAPHICS_JOBS;ENABLE_MONO;NET_STANDARD_2_0;NET_STANDARD;NET_STANDARD_2_1;NETSTANDARD;NETSTANDARD2_1;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_OSX;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;TEXTCORE_FONT_ENGINE_1_5_OR_NEWER;TEXTCORE_TEXT_ENGINE_1_5_OR_NEWER;TEXTCORE_FONT_ENGINE_1_6_OR_NEWER;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER
+ prompt
+ 4
+ 0169,0649
+ True
+ False
+
+
+ true
+ true
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.AIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ARModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.AdaptivePerformanceModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.AndroidJNIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.AnimationModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.AudioModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ClothModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ContentLoadModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.CoreModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.DSPGraphModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.DirectorModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.GIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.GameCenterModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.GraphicsStateCollectionSerializerModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.GridModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.HierarchyCoreModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.HotReloadModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.IMGUIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.IdentifiersModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.InputModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.InputForUIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.InputLegacyModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.InsightsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.LocalizationModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.MarshallingModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.MultiplayerModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.PhysicsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.Physics2DModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.PhysicsBackendPhysXModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.PropertiesModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.RenderAs2DModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ShaderRuntimeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.ShaderVariantAnalyticsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.StreamingModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.SubstanceModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.SubsystemsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.TLSModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.TerrainModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.TextCoreFontEngineModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.TextCoreTextEngineModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.TilemapModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UIElementsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UmbraModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityAnalyticsCommonModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityConsentModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityCurlModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.VFXModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.VRModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.VectorGraphicsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.VehiclesModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.VideoModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.VirtualTexturingModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.WindModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEngine.XRModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.AccessibilityModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.AdaptivePerformanceModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.AssetComplianceModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.BuildProfileModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.ClothModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.CoreBusinessMetricsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.CoreModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.DeviceSimulatorModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.DiagnosticsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.EditorToolbarModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.EmbreeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.GIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.GraphViewModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.GraphicsStateCollectionSerializerModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.GridAndSnapModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.GridModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.HierarchyModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.MediaModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.MultiplayerModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.Physics2DModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.PhysicsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.PlayModeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.PresetsUIModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.PropertiesModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.QuickInstallModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.QuickSearchModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.SafeModeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.SceneTemplateModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.SceneViewModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.ShaderBuildSettingsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.ShaderCompilationModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.ShaderFoundryModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.SketchUpModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.SpriteMaskModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.SpriteShapeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.SubstanceModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.TerrainModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.TextCoreFontEngineModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.TextCoreTextEngineModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.TextRenderingModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.TilemapModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.TreeModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.UIAutomationModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.UIBuilderModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.UIElementsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.UIElementsSamplesModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.UIToolkitAuthoringModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.UmbraModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.UnityConnectModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.VFXModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.VectorGraphicsModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.VideoModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEngine/UnityEditor.XRModule.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/Managed/UnityEditor.Graphs.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.visualscripting@eb6004dcc707/Editor/VisualScripting.Core/Dependencies/YamlDotNet/Unity.VisualScripting.YamlDotNet.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.collections@aea9d3bd5e19/Unity.Collections.LowLevel.ILSupport/Unity.Collections.LowLevel.ILSupport.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.ext.nunit@d8c07649098d/net40/unity-custom/nunit.framework.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.collab-proxy@a5329f833fa8/Lib/Editor/Unity.Plastic.Antlr3.Runtime.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.collab-proxy@a5329f833fa8/Lib/Editor/Unity.Plastic.Newtonsoft.Json.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.collab-proxy@a5329f833fa8/Lib/Editor/log4netPlastic.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.visualscripting@eb6004dcc707/Editor/VisualScripting.Core/Dependencies/DotNetZip/Unity.VisualScripting.IonicZip.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.collections@aea9d3bd5e19/Unity.Collections.Tests/System.IO.Hashing/System.IO.Hashing.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.collab-proxy@a5329f833fa8/Lib/Editor/unityplastic.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.visualscripting@eb6004dcc707/Runtime/VisualScripting.Flow/Dependencies/NCalc/Unity.VisualScripting.Antlr3.Runtime.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.visualscripting@eb6004dcc707/Editor/VisualScripting.Core/EditorAssetResources/Unity.VisualScripting.TextureAssets.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.nuget.mono-cecil@ecb9724e46ff/Mono.Cecil.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/PackageCache/com.unity.collections@aea9d3bd5e19/Unity.Collections.Tests/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Assets/Plugins/Google.Protobuf.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.iOS.Extensions.Xcode.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/ref/2.1.0/netstandard.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/Microsoft.Win32.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.AppContext.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Buffers.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Collections.Concurrent.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Collections.NonGeneric.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Collections.Specialized.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Collections.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.ComponentModel.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.ComponentModel.TypeConverter.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.ComponentModel.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Console.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Data.Common.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.Contracts.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.Debug.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.Process.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.StackTrace.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.Tools.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.TraceSource.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Diagnostics.Tracing.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Drawing.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Dynamic.Runtime.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Globalization.Calendars.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Globalization.Extensions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Globalization.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.Compression.ZipFile.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.Compression.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.FileSystem.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.FileSystem.Watcher.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.FileSystem.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.IsolatedStorage.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.MemoryMappedFiles.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.Pipes.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.IO.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Linq.Expressions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Linq.Parallel.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Linq.Queryable.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Linq.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Memory.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.Http.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.NameResolution.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.NetworkInformation.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.Ping.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.Requests.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.Security.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.Sockets.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.WebHeaderCollection.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.WebSockets.Client.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Net.WebSockets.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Numerics.Vectors.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.ObjectModel.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Reflection.DispatchProxy.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Reflection.Emit.ILGeneration.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Reflection.Emit.Lightweight.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Reflection.Emit.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Reflection.Extensions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Reflection.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Reflection.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Resources.Reader.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Resources.ResourceManager.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Resources.Writer.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.Extensions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.Handles.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.InteropServices.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.Numerics.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.Serialization.Json.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.Serialization.Xml.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Runtime.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.Claims.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.Cryptography.Csp.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.Cryptography.Encoding.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.Cryptography.Primitives.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.Principal.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Security.SecureString.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Text.Encoding.Extensions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Text.Encoding.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Text.RegularExpressions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.Overlapped.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.Tasks.Extensions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.Tasks.Parallel.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.Tasks.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.Thread.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.ThreadPool.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.Timer.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Threading.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.ValueTuple.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Xml.ReaderWriter.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Xml.XDocument.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Xml.XPath.XDocument.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Xml.XPath.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Xml.XmlDocument.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netstandard/System.Xml.XmlSerializer.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.ComponentModel.Composition.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Core.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Data.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Drawing.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.IO.Compression.FileSystem.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Net.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Numerics.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Runtime.Serialization.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.ServiceModel.Web.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Transactions.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Web.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Windows.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Xml.Linq.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Xml.Serialization.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.Xml.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/System.dll
+
+
+ /Applications/Unity/Hub/Editor/6000.3.11f1/Unity.app/Contents/Resources/Scripting/NetStandard/compat/2.1.0/shims/netfx/mscorlib.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/ScriptAssemblies/UnityEditor.UI.dll
+
+
+ /Users/edmand46/GolandProjects/arpack/benchmarks/unity/Library/ScriptAssemblies/UnityEngine.UI.dll
+
+
+
+
+
+
+
diff --git a/benchmarks/unity/ProjectSettings/AudioManager.asset b/benchmarks/unity/ProjectSettings/AudioManager.asset
new file mode 100644
index 0000000..27287fe
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/AudioManager.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!11 &1
+AudioManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Volume: 1
+ Rolloff Scale: 1
+ Doppler Factor: 1
+ Default Speaker Mode: 2
+ m_SampleRate: 0
+ m_DSPBufferSize: 1024
+ m_VirtualVoiceCount: 512
+ m_RealVoiceCount: 32
+ m_SpatializerPlugin:
+ m_AmbisonicDecoderPlugin:
+ m_DisableAudio: 0
+ m_VirtualizeEffects: 1
+ m_RequestedDSPBufferSize: 0
diff --git a/benchmarks/unity/ProjectSettings/ClusterInputManager.asset b/benchmarks/unity/ProjectSettings/ClusterInputManager.asset
new file mode 100644
index 0000000..e7886b2
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/ClusterInputManager.asset
@@ -0,0 +1,6 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!236 &1
+ClusterInputManager:
+ m_ObjectHideFlags: 0
+ m_Inputs: []
diff --git a/benchmarks/unity/ProjectSettings/DynamicsManager.asset b/benchmarks/unity/ProjectSettings/DynamicsManager.asset
new file mode 100644
index 0000000..72d1430
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/DynamicsManager.asset
@@ -0,0 +1,37 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!55 &1
+PhysicsManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_Gravity: {x: 0, y: -9.81, z: 0}
+ m_DefaultMaterial: {fileID: 0}
+ m_BounceThreshold: 2
+ m_DefaultMaxDepenetrationVelocity: 10
+ m_SleepThreshold: 0.005
+ m_DefaultContactOffset: 0.01
+ m_DefaultSolverIterations: 6
+ m_DefaultSolverVelocityIterations: 1
+ m_QueriesHitBackfaces: 0
+ m_QueriesHitTriggers: 1
+ m_EnableAdaptiveForce: 0
+ m_ClothInterCollisionDistance: 0.1
+ m_ClothInterCollisionStiffness: 0.2
+ m_ContactsGeneration: 1
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ m_AutoSimulation: 1
+ m_AutoSyncTransforms: 0
+ m_ReuseCollisionCallbacks: 1
+ m_ClothInterCollisionSettingsToggle: 0
+ m_ClothGravity: {x: 0, y: -9.81, z: 0}
+ m_ContactPairsMode: 0
+ m_BroadphaseType: 0
+ m_WorldBounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 250, y: 250, z: 250}
+ m_WorldSubdivisions: 8
+ m_FrictionType: 0
+ m_EnableEnhancedDeterminism: 0
+ m_EnableUnifiedHeightmaps: 1
+ m_SolverType: 0
+ m_DefaultMaxAngularSpeed: 50
diff --git a/benchmarks/unity/ProjectSettings/EditorBuildSettings.asset b/benchmarks/unity/ProjectSettings/EditorBuildSettings.asset
new file mode 100644
index 0000000..f9f99a7
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/EditorBuildSettings.asset
@@ -0,0 +1,13 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1045 &1
+EditorBuildSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Scenes:
+ - enabled: 1
+ path: Assets/Scenes/SampleScene.unity
+ guid: 2cda990e2423bbf4892e6590ba056729
+ m_configObjects:
+ com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 3590b91b4603b465dbb4216d601bff33, type: 3}
+ m_UseUCBPForAssetBundles: 0
diff --git a/benchmarks/unity/ProjectSettings/EditorSettings.asset b/benchmarks/unity/ProjectSettings/EditorSettings.asset
new file mode 100644
index 0000000..8a66dfc
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/EditorSettings.asset
@@ -0,0 +1,50 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!159 &1
+EditorSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 15
+ m_SerializationMode: 2
+ m_LineEndingsForNewScripts: 0
+ m_DefaultBehaviorMode: 1
+ m_PrefabRegularEnvironment: {fileID: 0}
+ m_PrefabUIEnvironment: {fileID: 0}
+ m_SpritePackerMode: 5
+ m_SpritePackerCacheSize: 10
+ m_SpritePackerPaddingPower: 1
+ m_Bc7TextureCompressor: 0
+ m_EtcTextureCompressorBehavior: 1
+ m_EtcTextureFastCompressor: 1
+ m_EtcTextureNormalCompressor: 2
+ m_EtcTextureBestCompressor: 4
+ m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp
+ m_ProjectGenerationRootNamespace:
+ m_EnableTextureStreamingInEditMode: 1
+ m_EnableTextureStreamingInPlayMode: 1
+ m_EnableEditorAsyncCPUTextureLoading: 0
+ m_AsyncShaderCompilation: 1
+ m_PrefabModeAllowAutoSave: 1
+ m_EnterPlayModeOptionsEnabled: 1
+ m_EnterPlayModeOptions: 0
+ m_GameObjectNamingDigits: 1
+ m_GameObjectNamingScheme: 0
+ m_AssetNamingUsesSpace: 1
+ m_InspectorUseIMGUIDefaultInspector: 0
+ m_UseLegacyProbeSampleCount: 0
+ m_SerializeInlineMappingsOnOneLine: 1
+ m_DisableCookiesInLightmapper: 1
+ m_ShadowmaskStitching: 0
+ m_AssetPipelineMode: 1
+ m_RefreshImportMode: 0
+ m_CacheServerMode: 0
+ m_CacheServerEndpoint:
+ m_CacheServerNamespacePrefix: default
+ m_CacheServerEnableDownload: 1
+ m_CacheServerEnableUpload: 1
+ m_CacheServerEnableAuth: 0
+ m_CacheServerEnableTls: 0
+ m_CacheServerValidationMode: 2
+ m_CacheServerDownloadBatchSize: 128
+ m_EnableEnlightenBakedGI: 0
+ m_ReferencedClipsExactNaming: 1
+ m_ForceAssetUnloadAndGCOnSceneLoad: 1
diff --git a/benchmarks/unity/ProjectSettings/GraphicsSettings.asset b/benchmarks/unity/ProjectSettings/GraphicsSettings.asset
new file mode 100644
index 0000000..c165afb
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/GraphicsSettings.asset
@@ -0,0 +1,64 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!30 &1
+GraphicsSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_Deferred:
+ m_Mode: 1
+ m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
+ m_DeferredReflections:
+ m_Mode: 1
+ m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
+ m_ScreenSpaceShadows:
+ m_Mode: 1
+ m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
+ m_LegacyDeferred:
+ m_Mode: 1
+ m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
+ m_DepthNormals:
+ m_Mode: 1
+ m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
+ m_MotionVectors:
+ m_Mode: 1
+ m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightHalo:
+ m_Mode: 1
+ m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
+ m_LensFlare:
+ m_Mode: 1
+ m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
+ m_VideoShadersIncludeMode: 2
+ m_AlwaysIncludedShaders:
+ - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
+ m_PreloadedShaders: []
+ m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_CustomRenderPipeline: {fileID: 0}
+ m_TransparencySortMode: 0
+ m_TransparencySortAxis: {x: 0, y: 0, z: 1}
+ m_DefaultRenderingPath: 1
+ m_DefaultMobileRenderingPath: 1
+ m_TierSettings: []
+ m_LightmapStripping: 0
+ m_FogStripping: 0
+ m_InstancingStripping: 0
+ m_LightmapKeepPlain: 1
+ m_LightmapKeepDirCombined: 1
+ m_LightmapKeepDynamicPlain: 1
+ m_LightmapKeepDynamicDirCombined: 1
+ m_LightmapKeepShadowMask: 1
+ m_LightmapKeepSubtractive: 1
+ m_FogKeepLinear: 1
+ m_FogKeepExp: 1
+ m_FogKeepExp2: 1
+ m_AlbedoSwatchInfos: []
+ m_LightsUseLinearIntensity: 0
+ m_LightsUseColorTemperature: 0
+ m_DefaultRenderingLayerMask: 1
+ m_LogWhenShaderIsCompiled: 0
diff --git a/benchmarks/unity/ProjectSettings/InputManager.asset b/benchmarks/unity/ProjectSettings/InputManager.asset
new file mode 100644
index 0000000..b16147e
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/InputManager.asset
@@ -0,0 +1,487 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!13 &1
+InputManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Axes:
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: left
+ positiveButton: right
+ altNegativeButton: a
+ altPositiveButton: d
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: down
+ positiveButton: up
+ altNegativeButton: s
+ altPositiveButton: w
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left ctrl
+ altNegativeButton:
+ altPositiveButton: mouse 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left alt
+ altNegativeButton:
+ altPositiveButton: mouse 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left shift
+ altNegativeButton:
+ altPositiveButton: mouse 2
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: space
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse X
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse Y
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse ScrollWheel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 2
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 0
+ type: 2
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 1
+ type: 2
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 0
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 1
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 2
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 3
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: return
+ altNegativeButton:
+ altPositiveButton: joystick button 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: enter
+ altNegativeButton:
+ altPositiveButton: space
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Cancel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: escape
+ altNegativeButton:
+ altPositiveButton: joystick button 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Enable Debug Button 1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left ctrl
+ altNegativeButton:
+ altPositiveButton: joystick button 8
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Enable Debug Button 2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: backspace
+ altNegativeButton:
+ altPositiveButton: joystick button 9
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Reset
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left alt
+ altNegativeButton:
+ altPositiveButton: joystick button 1
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Next
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: page down
+ altNegativeButton:
+ altPositiveButton: joystick button 5
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Previous
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: page up
+ altNegativeButton:
+ altPositiveButton: joystick button 4
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Validate
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: return
+ altNegativeButton:
+ altPositiveButton: joystick button 0
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Persistent
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: right shift
+ altNegativeButton:
+ altPositiveButton: joystick button 2
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Multiplier
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left shift
+ altNegativeButton:
+ altPositiveButton: joystick button 3
+ gravity: 0
+ dead: 0
+ sensitivity: 0
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: left
+ positiveButton: right
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: down
+ positiveButton: up
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: down
+ positiveButton: up
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 2
+ axis: 6
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Debug Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: left
+ positiveButton: right
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 2
+ axis: 5
+ joyNum: 0
diff --git a/benchmarks/unity/ProjectSettings/MemorySettings.asset b/benchmarks/unity/ProjectSettings/MemorySettings.asset
new file mode 100644
index 0000000..5b5face
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/MemorySettings.asset
@@ -0,0 +1,35 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!387306366 &1
+MemorySettings:
+ m_ObjectHideFlags: 0
+ m_EditorMemorySettings:
+ m_MainAllocatorBlockSize: -1
+ m_ThreadAllocatorBlockSize: -1
+ m_MainGfxBlockSize: -1
+ m_ThreadGfxBlockSize: -1
+ m_CacheBlockSize: -1
+ m_TypetreeBlockSize: -1
+ m_ProfilerBlockSize: -1
+ m_ProfilerEditorBlockSize: -1
+ m_BucketAllocatorGranularity: -1
+ m_BucketAllocatorBucketsCount: -1
+ m_BucketAllocatorBlockSize: -1
+ m_BucketAllocatorBlockCount: -1
+ m_ProfilerBucketAllocatorGranularity: -1
+ m_ProfilerBucketAllocatorBucketsCount: -1
+ m_ProfilerBucketAllocatorBlockSize: -1
+ m_ProfilerBucketAllocatorBlockCount: -1
+ m_TempAllocatorSizeMain: -1
+ m_JobTempAllocatorBlockSize: -1
+ m_BackgroundJobTempAllocatorBlockSize: -1
+ m_JobTempAllocatorReducedBlockSize: -1
+ m_TempAllocatorSizeGIBakingWorker: -1
+ m_TempAllocatorSizeNavMeshWorker: -1
+ m_TempAllocatorSizeAudioWorker: -1
+ m_TempAllocatorSizeCloudWorker: -1
+ m_TempAllocatorSizeGfx: -1
+ m_TempAllocatorSizeJobWorker: -1
+ m_TempAllocatorSizeBackgroundWorker: -1
+ m_TempAllocatorSizePreloadManager: -1
+ m_PlatformMemorySettings: {}
diff --git a/benchmarks/unity/ProjectSettings/MultiplayerManager.asset b/benchmarks/unity/ProjectSettings/MultiplayerManager.asset
new file mode 100644
index 0000000..2a93664
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/MultiplayerManager.asset
@@ -0,0 +1,7 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!655991488 &1
+MultiplayerManager:
+ m_ObjectHideFlags: 0
+ m_EnableMultiplayerRoles: 0
+ m_StrippingTypes: {}
diff --git a/benchmarks/unity/ProjectSettings/NavMeshAreas.asset b/benchmarks/unity/ProjectSettings/NavMeshAreas.asset
new file mode 100644
index 0000000..ad2654e
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/NavMeshAreas.asset
@@ -0,0 +1,93 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!126 &1
+NavMeshProjectSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ areas:
+ - name: Walkable
+ cost: 1
+ - name: Not Walkable
+ cost: 1
+ - name: Jump
+ cost: 2
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ m_LastAgentTypeID: -887442657
+ m_Settings:
+ - serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.75
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_SettingNames:
+ - Humanoid
diff --git a/benchmarks/unity/ProjectSettings/NetworkManager.asset b/benchmarks/unity/ProjectSettings/NetworkManager.asset
new file mode 100644
index 0000000..5dc6a83
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/NetworkManager.asset
@@ -0,0 +1,8 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!149 &1
+NetworkManager:
+ m_ObjectHideFlags: 0
+ m_DebugLevel: 0
+ m_Sendrate: 15
+ m_AssetToPrefab: {}
diff --git a/benchmarks/unity/ProjectSettings/PackageManagerSettings.asset b/benchmarks/unity/ProjectSettings/PackageManagerSettings.asset
new file mode 100644
index 0000000..b3a65dd
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/PackageManagerSettings.asset
@@ -0,0 +1,44 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &1
+MonoBehaviour:
+ m_ObjectHideFlags: 61
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_EnablePreReleasePackages: 0
+ m_EnablePackageDependencies: 0
+ m_AdvancedSettingsExpanded: 1
+ m_ScopedRegistriesSettingsExpanded: 1
+ m_SeeAllPackageVersions: 0
+ oneTimeWarningShown: 0
+ m_Registries:
+ - m_Id: main
+ m_Name:
+ m_Url: https://packages.unity.com
+ m_Scopes: []
+ m_IsDefault: 1
+ m_Capabilities: 7
+ m_UserSelectedRegistryName:
+ m_UserAddingNewScopedRegistry: 0
+ m_RegistryInfoDraft:
+ m_ErrorMessage:
+ m_Original:
+ m_Id:
+ m_Name:
+ m_Url:
+ m_Scopes: []
+ m_IsDefault: 0
+ m_Capabilities: 0
+ m_Modified: 0
+ m_Name:
+ m_Url:
+ m_Scopes:
+ -
+ m_SelectedScopeIndex: 0
diff --git a/benchmarks/unity/ProjectSettings/Physics2DSettings.asset b/benchmarks/unity/ProjectSettings/Physics2DSettings.asset
new file mode 100644
index 0000000..6cfcdda
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/Physics2DSettings.asset
@@ -0,0 +1,56 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!19 &1
+Physics2DSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 5
+ m_Gravity: {x: 0, y: -9.81}
+ m_DefaultMaterial: {fileID: 0}
+ m_VelocityIterations: 8
+ m_PositionIterations: 3
+ m_VelocityThreshold: 1
+ m_MaxLinearCorrection: 0.2
+ m_MaxAngularCorrection: 8
+ m_MaxTranslationSpeed: 100
+ m_MaxRotationSpeed: 360
+ m_BaumgarteScale: 0.2
+ m_BaumgarteTimeOfImpactScale: 0.75
+ m_TimeToSleep: 0.5
+ m_LinearSleepTolerance: 0.01
+ m_AngularSleepTolerance: 2
+ m_DefaultContactOffset: 0.01
+ m_JobOptions:
+ serializedVersion: 2
+ useMultithreading: 0
+ useConsistencySorting: 0
+ m_InterpolationPosesPerJob: 100
+ m_NewContactsPerJob: 30
+ m_CollideContactsPerJob: 100
+ m_ClearFlagsPerJob: 200
+ m_ClearBodyForcesPerJob: 200
+ m_SyncDiscreteFixturesPerJob: 50
+ m_SyncContinuousFixturesPerJob: 50
+ m_FindNearestContactsPerJob: 100
+ m_UpdateTriggerContactsPerJob: 100
+ m_IslandSolverCostThreshold: 100
+ m_IslandSolverBodyCostScale: 1
+ m_IslandSolverContactCostScale: 10
+ m_IslandSolverJointCostScale: 10
+ m_IslandSolverBodiesPerJob: 50
+ m_IslandSolverContactsPerJob: 50
+ m_SimulationMode: 0
+ m_QueriesHitTriggers: 1
+ m_QueriesStartInColliders: 1
+ m_CallbacksOnDisable: 1
+ m_ReuseCollisionCallbacks: 1
+ m_AutoSyncTransforms: 0
+ m_AlwaysShowColliders: 0
+ m_ShowColliderSleep: 1
+ m_ShowColliderContacts: 0
+ m_ShowColliderAABB: 0
+ m_ContactArrowScale: 0.2
+ m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
+ m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
+ m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
+ m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
diff --git a/benchmarks/unity/ProjectSettings/PresetManager.asset b/benchmarks/unity/ProjectSettings/PresetManager.asset
new file mode 100644
index 0000000..67a94da
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/PresetManager.asset
@@ -0,0 +1,7 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1386491679 &1
+PresetManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_DefaultPresets: {}
diff --git a/benchmarks/unity/ProjectSettings/ProjectSettings.asset b/benchmarks/unity/ProjectSettings/ProjectSettings.asset
new file mode 100644
index 0000000..1321a53
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/ProjectSettings.asset
@@ -0,0 +1,736 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!129 &1
+PlayerSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 28
+ productGUID: 347ef167e38f44dd4ad3618bb9e1a4f9
+ AndroidProfiler: 0
+ AndroidFilterTouchesWhenObscured: 0
+ AndroidEnableSustainedPerformanceMode: 0
+ defaultScreenOrientation: 4
+ targetDevice: 2
+ useOnDemandResources: 0
+ accelerometerFrequency: 60
+ companyName: DefaultCompany
+ productName: unity
+ defaultCursor: {fileID: 0}
+ cursorHotspot: {x: 0, y: 0}
+ m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
+ m_ShowUnitySplashScreen: 1
+ m_ShowUnitySplashLogo: 1
+ m_SplashScreenOverlayOpacity: 1
+ m_SplashScreenAnimation: 1
+ m_SplashScreenLogoStyle: 1
+ m_SplashScreenDrawMode: 0
+ m_SplashScreenBackgroundAnimationZoom: 1
+ m_SplashScreenLogoAnimationZoom: 1
+ m_SplashScreenBackgroundLandscapeAspect: 1
+ m_SplashScreenBackgroundPortraitAspect: 1
+ m_SplashScreenBackgroundLandscapeUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenBackgroundPortraitUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenLogos: []
+ m_VirtualRealitySplashScreen: {fileID: 0}
+ m_HolographicTrackingLossScreen: {fileID: 0}
+ defaultScreenWidth: 1920
+ defaultScreenHeight: 1080
+ defaultScreenWidthWeb: 960
+ defaultScreenHeightWeb: 600
+ m_StereoRenderingPath: 0
+ m_ActiveColorSpace: 1
+ unsupportedMSAAFallback: 0
+ m_SpriteBatchMaxVertexCount: 65535
+ m_SpriteBatchVertexThreshold: 300
+ m_MTRendering: 1
+ mipStripping: 0
+ numberOfMipsStripped: 0
+ numberOfMipsStrippedPerMipmapLimitGroup: {}
+ m_StackTraceTypes: 010000000100000001000000010000000100000001000000
+ iosShowActivityIndicatorOnLoading: -1
+ androidShowActivityIndicatorOnLoading: -1
+ iosUseCustomAppBackgroundBehavior: 0
+ allowedAutorotateToPortrait: 1
+ allowedAutorotateToPortraitUpsideDown: 1
+ allowedAutorotateToLandscapeRight: 1
+ allowedAutorotateToLandscapeLeft: 1
+ useOSAutorotation: 1
+ use32BitDisplayBuffer: 1
+ preserveFramebufferAlpha: 0
+ disableDepthAndStencilBuffers: 0
+ androidStartInFullscreen: 1
+ androidRenderOutsideSafeArea: 1
+ androidUseSwappy: 1
+ androidDisplayOptions: 1
+ androidBlitType: 0
+ androidResizeableActivity: 1
+ androidDefaultWindowWidth: 1920
+ androidDefaultWindowHeight: 1080
+ androidMinimumWindowWidth: 400
+ androidMinimumWindowHeight: 300
+ androidFullscreenMode: 1
+ androidAutoRotationBehavior: 1
+ androidPredictiveBackSupport: 0
+ androidApplicationEntry: 2
+ defaultIsNativeResolution: 1
+ macRetinaSupport: 1
+ runInBackground: 0
+ muteOtherAudioSources: 0
+ Prepare IOS For Recording: 0
+ Force IOS Speakers When Recording: 0
+ audioSpatialExperience: 0
+ deferSystemGesturesMode: 0
+ hideHomeButton: 0
+ submitAnalytics: 1
+ usePlayerLog: 1
+ dedicatedServerOptimizations: 1
+ bakeCollisionMeshes: 0
+ forceSingleInstance: 0
+ useFlipModelSwapchain: 1
+ resizableWindow: 0
+ useMacAppStoreValidation: 0
+ macAppStoreCategory: public.app-category.games
+ gpuSkinning: 0
+ meshDeformation: 0
+ xboxPIXTextureCapture: 0
+ xboxEnableAvatar: 0
+ xboxEnableKinect: 0
+ xboxEnableKinectAutoTracking: 0
+ xboxEnableFitness: 0
+ visibleInBackground: 1
+ allowFullscreenSwitch: 1
+ fullscreenMode: 1
+ xboxSpeechDB: 0
+ xboxEnableHeadOrientation: 0
+ xboxEnableGuest: 0
+ xboxEnablePIXSampling: 0
+ metalFramebufferOnly: 0
+ metalUseMetalDisplayLink: 0
+ xboxOneResolution: 0
+ xboxOneSResolution: 0
+ xboxOneXResolution: 3
+ xboxOneMonoLoggingLevel: 0
+ xboxOneLoggingLevel: 1
+ xboxOneDisableEsram: 0
+ xboxOneEnableTypeOptimization: 0
+ xboxOnePresentImmediateThreshold: 0
+ switchQueueCommandMemory: 1048576
+ switchQueueControlMemory: 16384
+ switchQueueComputeMemory: 262144
+ switchNVNShaderPoolsGranularity: 33554432
+ switchNVNDefaultPoolsGranularity: 16777216
+ switchNVNOtherPoolsGranularity: 16777216
+ switchGpuScratchPoolGranularity: 2097152
+ switchAllowGpuScratchShrinking: 0
+ switchNVNMaxPublicTextureIDCount: 0
+ switchNVNMaxPublicSamplerIDCount: 0
+ switchMaxWorkerMultiple: 8
+ switchNVNGraphicsFirmwareMemory: 32
+ switchGraphicsJobsSyncAfterKick: 1
+ vulkanNumSwapchainBuffers: 3
+ vulkanEnableSetSRGBWrite: 0
+ vulkanEnablePreTransform: 0
+ vulkanEnableLateAcquireNextImage: 0
+ vulkanEnableCommandBufferRecycling: 1
+ loadStoreDebugModeEnabled: 0
+ visionOSBundleVersion: 1.0
+ tvOSBundleVersion: 1.0
+ bundleVersion: 1.0
+ preloadedAssets: []
+ metroInputSource: 0
+ wsaTransparentSwapchain: 0
+ m_HolographicPauseOnTrackingLoss: 1
+ xboxOneDisableKinectGpuReservation: 1
+ xboxOneEnable7thCore: 1
+ vrSettings:
+ enable360StereoCapture: 0
+ isWsaHolographicRemotingEnabled: 0
+ enableFrameTimingStats: 0
+ enableOpenGLProfilerGPURecorders: 1
+ allowHDRDisplaySupport: 0
+ useHDRDisplay: 0
+ hdrBitDepth: 0
+ m_ColorGamuts: 00000000
+ targetPixelDensity: 30
+ resolutionScalingMode: 0
+ resetResolutionOnWindowResize: 0
+ androidSupportedAspectRatio: 1
+ androidMaxAspectRatio: 2.4
+ androidMinAspectRatio: 1
+ applicationIdentifier:
+ Standalone: com.DefaultCompany.2D-Project
+ buildNumber:
+ Standalone: 0
+ VisionOS: 0
+ iPhone: 0
+ tvOS: 0
+ overrideDefaultApplicationIdentifier: 1
+ AndroidBundleVersionCode: 1
+ AndroidMinSdkVersion: 25
+ AndroidTargetSdkVersion: 0
+ AndroidPreferredInstallLocation: 1
+ AndroidPreferredDataLocation: 1
+ aotOptions:
+ stripEngineCode: 1
+ iPhoneStrippingLevel: 0
+ iPhoneScriptCallOptimization: 0
+ ForceInternetPermission: 0
+ ForceSDCardPermission: 0
+ CreateWallpaper: 0
+ androidSplitApplicationBinary: 0
+ keepLoadedShadersAlive: 0
+ StripUnusedMeshComponents: 0
+ strictShaderVariantMatching: 0
+ VertexChannelCompressionMask: 4054
+ iPhoneSdkVersion: 988
+ iOSSimulatorArchitecture: 0
+ iOSTargetOSVersionString: 15.0
+ tvOSSdkVersion: 0
+ tvOSSimulatorArchitecture: 0
+ tvOSRequireExtendedGameController: 0
+ tvOSTargetOSVersionString: 15.0
+ VisionOSSdkVersion: 0
+ VisionOSTargetOSVersionString: 1.0
+ uIPrerenderedIcon: 0
+ uIRequiresPersistentWiFi: 0
+ uIRequiresFullScreen: 1
+ uIStatusBarHidden: 1
+ uIExitOnSuspend: 0
+ uIStatusBarStyle: 0
+ appleTVSplashScreen: {fileID: 0}
+ appleTVSplashScreen2x: {fileID: 0}
+ tvOSSmallIconLayers: []
+ tvOSSmallIconLayers2x: []
+ tvOSLargeIconLayers: []
+ tvOSLargeIconLayers2x: []
+ tvOSTopShelfImageLayers: []
+ tvOSTopShelfImageLayers2x: []
+ tvOSTopShelfImageWideLayers: []
+ tvOSTopShelfImageWideLayers2x: []
+ iOSLaunchScreenType: 0
+ iOSLaunchScreenPortrait: {fileID: 0}
+ iOSLaunchScreenLandscape: {fileID: 0}
+ iOSLaunchScreenBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreenFillPct: 100
+ iOSLaunchScreenSize: 100
+ iOSLaunchScreeniPadType: 0
+ iOSLaunchScreeniPadImage: {fileID: 0}
+ iOSLaunchScreeniPadBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreeniPadFillPct: 100
+ iOSLaunchScreeniPadSize: 100
+ iOSLaunchScreenCustomStoryboardPath:
+ iOSLaunchScreeniPadCustomStoryboardPath:
+ iOSDeviceRequirements: []
+ iOSURLSchemes: []
+ macOSURLSchemes: []
+ iOSBackgroundModes: 0
+ iOSMetalForceHardShadows: 0
+ metalEditorSupport: 1
+ metalAPIValidation: 1
+ metalCompileShaderBinary: 0
+ iOSRenderExtraFrameOnPause: 0
+ iosCopyPluginsCodeInsteadOfSymlink: 0
+ appleDeveloperTeamID:
+ iOSManualSigningProvisioningProfileID:
+ tvOSManualSigningProvisioningProfileID:
+ VisionOSManualSigningProvisioningProfileID:
+ iOSManualSigningProvisioningProfileType: 0
+ tvOSManualSigningProvisioningProfileType: 0
+ VisionOSManualSigningProvisioningProfileType: 0
+ appleEnableAutomaticSigning: 0
+ iOSRequireARKit: 0
+ iOSAutomaticallyDetectAndAddCapabilities: 1
+ appleEnableProMotion: 0
+ shaderPrecisionModel: 0
+ clonedFromGUID: 10ad67313f4034357812315f3c407484
+ templatePackageId: com.unity.template.2d@11.0.0
+ templateDefaultScene: Assets/Scenes/SampleScene.unity
+ useCustomMainManifest: 0
+ useCustomLauncherManifest: 0
+ useCustomMainGradleTemplate: 0
+ useCustomLauncherGradleManifest: 0
+ useCustomBaseGradleTemplate: 0
+ useCustomGradlePropertiesTemplate: 0
+ useCustomGradleSettingsTemplate: 0
+ useCustomProguardFile: 0
+ AndroidTargetArchitectures: 2
+ AndroidAllowedArchitectures: -13
+ AndroidSplashScreenScale: 0
+ androidSplashScreen: {fileID: 0}
+ AndroidKeystoreName:
+ AndroidKeyaliasName:
+ AndroidEnableArmv9SecurityFeatures: 0
+ AndroidEnableArm64MTE: 0
+ AndroidBuildApkPerCpuArchitecture: 0
+ AndroidTVCompatibility: 0
+ AndroidIsGame: 1
+ androidAppCategory: 3
+ useAndroidAppCategory: 1
+ androidAppCategoryOther:
+ AndroidEnableTango: 0
+ androidEnableBanner: 1
+ androidUseLowAccuracyLocation: 0
+ androidUseCustomKeystore: 0
+ m_AndroidBanners:
+ - width: 320
+ height: 180
+ banner: {fileID: 0}
+ androidGamepadSupportLevel: 0
+ AndroidMinifyRelease: 0
+ AndroidMinifyDebug: 0
+ AndroidValidateAppBundleSize: 1
+ AndroidAppBundleSizeToValidate: 150
+ AndroidReportGooglePlayAppDependencies: 1
+ androidSymbolsSizeThreshold: 800
+ m_BuildTargetIcons: []
+ m_BuildTargetPlatformIcons: []
+ m_BuildTargetBatching: []
+ m_BuildTargetShaderSettings: []
+ m_BuildTargetGraphicsJobs:
+ - m_BuildTarget: MacStandaloneSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: Switch
+ m_GraphicsJobs: 0
+ - m_BuildTarget: MetroSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: AppleTVSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: BJMSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: LinuxStandaloneSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: PS4Player
+ m_GraphicsJobs: 0
+ - m_BuildTarget: iOSSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: WindowsStandaloneSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: XboxOnePlayer
+ m_GraphicsJobs: 0
+ - m_BuildTarget: LuminSupport
+ m_GraphicsJobs: 0
+ - m_BuildTarget: AndroidPlayer
+ m_GraphicsJobs: 0
+ - m_BuildTarget: WebGLSupport
+ m_GraphicsJobs: 0
+ m_BuildTargetGraphicsJobMode: []
+ m_BuildTargetGraphicsAPIs:
+ - m_BuildTarget: AndroidPlayer
+ m_APIs: 150000000b000000
+ m_Automatic: 1
+ - m_BuildTarget: iOSSupport
+ m_APIs: 10000000
+ m_Automatic: 1
+ m_BuildTargetVRSettings: []
+ m_DefaultShaderChunkSizeInMB: 16
+ m_DefaultShaderChunkCount: 0
+ openGLRequireES31: 0
+ openGLRequireES31AEP: 0
+ openGLRequireES32: 0
+ m_TemplateCustomTags: {}
+ mobileMTRendering:
+ Android: 1
+ iPhone: 1
+ tvOS: 1
+ m_BuildTargetGroupLightmapEncodingQuality: []
+ m_BuildTargetGroupHDRCubemapEncodingQuality: []
+ m_BuildTargetGroupLightmapSettings: []
+ m_BuildTargetGroupLoadStoreDebugModeSettings: []
+ m_BuildTargetNormalMapEncoding: []
+ m_BuildTargetDefaultTextureCompressionFormat:
+ - serializedVersion: 3
+ m_BuildTarget: Android
+ m_Formats: 03000000
+ playModeTestRunnerEnabled: 0
+ runPlayModeTestAsEditModeTest: 0
+ actionOnDotNetUnhandledException: 1
+ editorGfxJobOverride: 1
+ enableInternalProfiler: 0
+ logObjCUncaughtExceptions: 1
+ enableCrashReportAPI: 0
+ cameraUsageDescription:
+ locationUsageDescription:
+ microphoneUsageDescription:
+ bluetoothUsageDescription:
+ macOSTargetOSVersion: 12.0
+ switchNMETAOverride:
+ switchNetLibKey:
+ switchSocketMemoryPoolSize: 6144
+ switchSocketAllocatorPoolSize: 128
+ switchSocketConcurrencyLimit: 14
+ switchScreenResolutionBehavior: 2
+ switchUseCPUProfiler: 0
+ switchEnableFileSystemTrace: 0
+ switchLTOSetting: 0
+ switchApplicationID: 0x01004b9000490000
+ switchNSODependencies:
+ switchCompilerFlags:
+ switchTitleNames_0:
+ switchTitleNames_1:
+ switchTitleNames_2:
+ switchTitleNames_3:
+ switchTitleNames_4:
+ switchTitleNames_5:
+ switchTitleNames_6:
+ switchTitleNames_7:
+ switchTitleNames_8:
+ switchTitleNames_9:
+ switchTitleNames_10:
+ switchTitleNames_11:
+ switchTitleNames_12:
+ switchTitleNames_13:
+ switchTitleNames_14:
+ switchTitleNames_15:
+ switchPublisherNames_0:
+ switchPublisherNames_1:
+ switchPublisherNames_2:
+ switchPublisherNames_3:
+ switchPublisherNames_4:
+ switchPublisherNames_5:
+ switchPublisherNames_6:
+ switchPublisherNames_7:
+ switchPublisherNames_8:
+ switchPublisherNames_9:
+ switchPublisherNames_10:
+ switchPublisherNames_11:
+ switchPublisherNames_12:
+ switchPublisherNames_13:
+ switchPublisherNames_14:
+ switchPublisherNames_15:
+ switchIcons_0: {fileID: 0}
+ switchIcons_1: {fileID: 0}
+ switchIcons_2: {fileID: 0}
+ switchIcons_3: {fileID: 0}
+ switchIcons_4: {fileID: 0}
+ switchIcons_5: {fileID: 0}
+ switchIcons_6: {fileID: 0}
+ switchIcons_7: {fileID: 0}
+ switchIcons_8: {fileID: 0}
+ switchIcons_9: {fileID: 0}
+ switchIcons_10: {fileID: 0}
+ switchIcons_11: {fileID: 0}
+ switchIcons_12: {fileID: 0}
+ switchIcons_13: {fileID: 0}
+ switchIcons_14: {fileID: 0}
+ switchIcons_15: {fileID: 0}
+ switchSmallIcons_0: {fileID: 0}
+ switchSmallIcons_1: {fileID: 0}
+ switchSmallIcons_2: {fileID: 0}
+ switchSmallIcons_3: {fileID: 0}
+ switchSmallIcons_4: {fileID: 0}
+ switchSmallIcons_5: {fileID: 0}
+ switchSmallIcons_6: {fileID: 0}
+ switchSmallIcons_7: {fileID: 0}
+ switchSmallIcons_8: {fileID: 0}
+ switchSmallIcons_9: {fileID: 0}
+ switchSmallIcons_10: {fileID: 0}
+ switchSmallIcons_11: {fileID: 0}
+ switchSmallIcons_12: {fileID: 0}
+ switchSmallIcons_13: {fileID: 0}
+ switchSmallIcons_14: {fileID: 0}
+ switchSmallIcons_15: {fileID: 0}
+ switchManualHTML:
+ switchAccessibleURLs:
+ switchLegalInformation:
+ switchMainThreadStackSize: 1048576
+ switchPresenceGroupId:
+ switchLogoHandling: 0
+ switchReleaseVersion: 0
+ switchDisplayVersion: 1.0.0
+ switchStartupUserAccount: 0
+ switchSupportedLanguagesMask: 0
+ switchLogoType: 0
+ switchApplicationErrorCodeCategory:
+ switchUserAccountSaveDataSize: 0
+ switchUserAccountSaveDataJournalSize: 0
+ switchApplicationAttribute: 0
+ switchCardSpecSize: -1
+ switchCardSpecClock: -1
+ switchRatingsMask: 0
+ switchRatingsInt_0: 0
+ switchRatingsInt_1: 0
+ switchRatingsInt_2: 0
+ switchRatingsInt_3: 0
+ switchRatingsInt_4: 0
+ switchRatingsInt_5: 0
+ switchRatingsInt_6: 0
+ switchRatingsInt_7: 0
+ switchRatingsInt_8: 0
+ switchRatingsInt_9: 0
+ switchRatingsInt_10: 0
+ switchRatingsInt_11: 0
+ switchRatingsInt_12: 0
+ switchLocalCommunicationIds_0:
+ switchLocalCommunicationIds_1:
+ switchLocalCommunicationIds_2:
+ switchLocalCommunicationIds_3:
+ switchLocalCommunicationIds_4:
+ switchLocalCommunicationIds_5:
+ switchLocalCommunicationIds_6:
+ switchLocalCommunicationIds_7:
+ switchParentalControl: 0
+ switchAllowsScreenshot: 1
+ switchAllowsVideoCapturing: 1
+ switchAllowsRuntimeAddOnContentInstall: 0
+ switchDataLossConfirmation: 0
+ switchUserAccountLockEnabled: 0
+ switchSystemResourceMemory: 16777216
+ switchSupportedNpadStyles: 22
+ switchNativeFsCacheSize: 32
+ switchIsHoldTypeHorizontal: 0
+ switchSupportedNpadCount: 8
+ switchEnableTouchScreen: 1
+ switchSocketConfigEnabled: 0
+ switchTcpInitialSendBufferSize: 32
+ switchTcpInitialReceiveBufferSize: 64
+ switchTcpAutoSendBufferSizeMax: 256
+ switchTcpAutoReceiveBufferSizeMax: 256
+ switchUdpSendBufferSize: 9
+ switchUdpReceiveBufferSize: 42
+ switchSocketBufferEfficiency: 4
+ switchSocketInitializeEnabled: 1
+ switchNetworkInterfaceManagerInitializeEnabled: 1
+ switchDisableHTCSPlayerConnection: 0
+ switchUseNewStyleFilepaths: 0
+ switchUseLegacyFmodPriorities: 0
+ switchUseMicroSleepForYield: 1
+ switchEnableRamDiskSupport: 0
+ switchMicroSleepForYieldTime: 25
+ switchRamDiskSpaceSize: 12
+ switchUpgradedPlayerSettingsToNMETA: 0
+ ps4NPAgeRating: 12
+ ps4NPTitleSecret:
+ ps4NPTrophyPackPath:
+ ps4ParentalLevel: 11
+ ps4ContentID: ED1633-NPXX51362_00-0000000000000000
+ ps4Category: 0
+ ps4MasterVersion: 01.00
+ ps4AppVersion: 01.00
+ ps4AppType: 0
+ ps4ParamSfxPath:
+ ps4VideoOutPixelFormat: 0
+ ps4VideoOutInitialWidth: 1920
+ ps4VideoOutBaseModeInitialWidth: 1920
+ ps4VideoOutReprojectionRate: 60
+ ps4PronunciationXMLPath:
+ ps4PronunciationSIGPath:
+ ps4BackgroundImagePath:
+ ps4StartupImagePath:
+ ps4StartupImagesFolder:
+ ps4IconImagesFolder:
+ ps4SaveDataImagePath:
+ ps4SdkOverride:
+ ps4BGMPath:
+ ps4ShareFilePath:
+ ps4ShareOverlayImagePath:
+ ps4PrivacyGuardImagePath:
+ ps4ExtraSceSysFile:
+ ps4NPtitleDatPath:
+ ps4RemotePlayKeyAssignment: -1
+ ps4RemotePlayKeyMappingDir:
+ ps4PlayTogetherPlayerCount: 0
+ ps4EnterButtonAssignment: 2
+ ps4ApplicationParam1: 0
+ ps4ApplicationParam2: 0
+ ps4ApplicationParam3: 0
+ ps4ApplicationParam4: 0
+ ps4DownloadDataSize: 0
+ ps4GarlicHeapSize: 2048
+ ps4ProGarlicHeapSize: 2560
+ playerPrefsMaxSize: 32768
+ ps4Passcode: ARLRRL59bcfuU0C9AGuPDYRMsZlDaGMq
+ ps4pnSessions: 1
+ ps4pnPresence: 1
+ ps4pnFriends: 1
+ ps4pnGameCustomData: 1
+ playerPrefsSupport: 0
+ enableApplicationExit: 0
+ resetTempFolder: 1
+ restrictedAudioUsageRights: 0
+ ps4UseResolutionFallback: 0
+ ps4ReprojectionSupport: 0
+ ps4UseAudio3dBackend: 0
+ ps4UseLowGarlicFragmentationMode: 1
+ ps4SocialScreenEnabled: 0
+ ps4ScriptOptimizationLevel: 2
+ ps4Audio3dVirtualSpeakerCount: 14
+ ps4attribCpuUsage: 0
+ ps4PatchPkgPath:
+ ps4PatchLatestPkgPath:
+ ps4PatchChangeinfoPath:
+ ps4PatchDayOne: 0
+ ps4attribUserManagement: 0
+ ps4attribMoveSupport: 0
+ ps4attrib3DSupport: 0
+ ps4attribShareSupport: 0
+ ps4attribExclusiveVR: 0
+ ps4disableAutoHideSplash: 0
+ ps4videoRecordingFeaturesUsed: 0
+ ps4contentSearchFeaturesUsed: 0
+ ps4CompatibilityPS5: 0
+ ps4AllowPS5Detection: 0
+ ps4GPU800MHz: 1
+ ps4attribEyeToEyeDistanceSettingVR: 0
+ ps4IncludedModules: []
+ ps4attribVROutputEnabled: 0
+ monoEnv:
+ splashScreenBackgroundSourceLandscape: {fileID: 0}
+ splashScreenBackgroundSourcePortrait: {fileID: 0}
+ blurSplashScreenBackground: 1
+ spritePackerPolicy:
+ webGLMemorySize: 32
+ webGLExceptionSupport: 1
+ webGLNameFilesAsHashes: 0
+ webGLShowDiagnostics: 0
+ webGLDataCaching: 1
+ webGLDebugSymbols: 0
+ webGLEmscriptenArgs:
+ webGLModulesDirectory:
+ webGLTemplate: APPLICATION:Default
+ webGLAnalyzeBuildSize: 0
+ webGLUseEmbeddedResources: 0
+ webGLCompressionFormat: 0
+ webGLWasmArithmeticExceptions: 0
+ webGLLinkerTarget: 1
+ webGLThreadsSupport: 0
+ webGLDecompressionFallback: 0
+ webGLInitialMemorySize: 32
+ webGLMaximumMemorySize: 2048
+ webGLMemoryGrowthMode: 2
+ webGLMemoryLinearGrowthStep: 16
+ webGLMemoryGeometricGrowthStep: 0.2
+ webGLMemoryGeometricGrowthCap: 96
+ webGLPowerPreference: 2
+ webGLWebAssemblyTable: 0
+ webGLWebAssemblyBigInt: 0
+ webGLCloseOnQuit: 0
+ webWasm2023: 0
+ webEnableSubmoduleStrippingCompatibility: 0
+ scriptingDefineSymbols: {}
+ additionalCompilerArguments: {}
+ platformArchitecture: {}
+ scriptingBackend:
+ Android: 1
+ il2cppCompilerConfiguration: {}
+ il2cppCodeGeneration: {}
+ il2cppStacktraceInformation: {}
+ managedStrippingLevel: {}
+ incrementalIl2cppBuild: {}
+ suppressCommonWarnings: 1
+ allowUnsafeCode: 0
+ useDeterministicCompilation: 1
+ additionalIl2CppArgs:
+ scriptingRuntimeVersion: 1
+ gcIncremental: 1
+ gcWBarrierValidation: 0
+ apiCompatibilityLevelPerPlatform: {}
+ editorAssembliesCompatibilityLevel: 1
+ m_RenderingPath: 1
+ m_MobileRenderingPath: 1
+ metroPackageName: unity
+ metroPackageVersion:
+ metroCertificatePath:
+ metroCertificatePassword:
+ metroCertificateSubject:
+ metroCertificateIssuer:
+ metroCertificateNotAfter: 0000000000000000
+ metroApplicationDescription: unity
+ wsaImages: {}
+ metroTileShortName:
+ metroTileShowName: 0
+ metroMediumTileShowName: 0
+ metroLargeTileShowName: 0
+ metroWideTileShowName: 0
+ metroSupportStreamingInstall: 0
+ metroLastRequiredScene: 0
+ metroDefaultTileSize: 1
+ metroTileForegroundText: 2
+ metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
+ metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
+ metroSplashScreenUseBackgroundColor: 0
+ syncCapabilities: 0
+ platformCapabilities: {}
+ metroTargetDeviceFamilies: {}
+ metroFTAName:
+ metroFTAFileTypes: []
+ metroProtocolName:
+ vcxProjDefaultLanguage:
+ XboxOneProductId:
+ XboxOneUpdateKey:
+ XboxOneSandboxId:
+ XboxOneContentId:
+ XboxOneTitleId:
+ XboxOneSCId:
+ XboxOneGameOsOverridePath:
+ XboxOnePackagingOverridePath:
+ XboxOneAppManifestOverridePath:
+ XboxOneVersion: 1.0.0.0
+ XboxOnePackageEncryption: 0
+ XboxOnePackageUpdateGranularity: 2
+ XboxOneDescription:
+ XboxOneLanguage:
+ - enus
+ XboxOneCapability: []
+ XboxOneGameRating: {}
+ XboxOneIsContentPackage: 0
+ XboxOneEnhancedXboxCompatibilityMode: 0
+ XboxOneEnableGPUVariability: 1
+ XboxOneSockets: {}
+ XboxOneSplashScreen: {fileID: 0}
+ XboxOneAllowedProductIds: []
+ XboxOnePersistentLocalStorageSize: 0
+ XboxOneXTitleMemory: 8
+ XboxOneOverrideIdentityName:
+ XboxOneOverrideIdentityPublisher:
+ vrEditorSettings: {}
+ cloudServicesEnabled: {}
+ luminIcon:
+ m_Name:
+ m_ModelFolderPath:
+ m_PortalFolderPath:
+ luminCert:
+ m_CertPath:
+ m_SignPackage: 1
+ luminIsChannelApp: 0
+ luminVersion:
+ m_VersionCode: 1
+ m_VersionName:
+ hmiPlayerDataPath:
+ hmiForceSRGBBlit: 0
+ embeddedLinuxEnableGamepadInput: 0
+ hmiCpuConfiguration:
+ hmiLogStartupTiming: 0
+ qnxGraphicConfPath:
+ apiCompatibilityLevel: 6
+ captureStartupLogs: {}
+ activeInputHandler: 1
+ windowsGamepadBackendHint: 0
+ cloudProjectId:
+ framebufferDepthMemorylessMode: 0
+ qualitySettingsNames: []
+ projectName:
+ organizationId:
+ cloudEnabled: 0
+ legacyClampBlendShapeWeights: 0
+ hmiLoadingImage: {fileID: 0}
+ platformRequiresReadableAssets: 0
+ virtualTexturingSupportEnabled: 0
+ insecureHttpOption: 0
+ androidVulkanDenyFilterList: []
+ androidVulkanAllowFilterList: []
+ androidVulkanDeviceFilterListAsset: {fileID: 0}
+ d3d12DeviceFilterListAsset: {fileID: 0}
+ allowedHttpConnections: 3
diff --git a/benchmarks/unity/ProjectSettings/ProjectVersion.txt b/benchmarks/unity/ProjectSettings/ProjectVersion.txt
new file mode 100644
index 0000000..550b6e8
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/ProjectVersion.txt
@@ -0,0 +1,2 @@
+m_EditorVersion: 6000.3.11f1
+m_EditorVersionWithRevision: 6000.3.11f1 (3000ef702840)
diff --git a/benchmarks/unity/ProjectSettings/QualitySettings.asset b/benchmarks/unity/ProjectSettings/QualitySettings.asset
new file mode 100644
index 0000000..bcd6706
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/QualitySettings.asset
@@ -0,0 +1,239 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!47 &1
+QualitySettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 5
+ m_CurrentQuality: 5
+ m_QualitySettings:
+ - serializedVersion: 2
+ name: Very Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 15
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ skinWeights: 1
+ textureQuality: 1
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 0
+ lodBias: 0.3
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 4
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ skinWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 0
+ lodBias: 0.4
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 16
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Medium
+ pixelLightCount: 1
+ shadows: 1
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ skinWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 1
+ lodBias: 0.7
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 64
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: High
+ pixelLightCount: 2
+ shadows: 2
+ shadowResolution: 1
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 40
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ skinWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 1
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 256
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Very High
+ pixelLightCount: 3
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 70
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ skinWeights: 4
+ textureQuality: 0
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 1.5
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 1024
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Ultra
+ pixelLightCount: 4
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 4
+ shadowDistance: 150
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ skinWeights: 255
+ textureQuality: 0
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 2
+ maximumLODLevel: 0
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 4096
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ excludedTargetPlatforms: []
+ m_PerPlatformDefaultQuality:
+ Android: 2
+ Lumin: 5
+ GameCoreScarlett: 5
+ GameCoreXboxOne: 5
+ Nintendo Switch: 5
+ PS4: 5
+ PS5: 5
+ Stadia: 5
+ Standalone: 5
+ WebGL: 3
+ Windows Store Apps: 5
+ XboxOne: 5
+ iPhone: 2
+ tvOS: 2
diff --git a/benchmarks/unity/ProjectSettings/SceneTemplateSettings.json b/benchmarks/unity/ProjectSettings/SceneTemplateSettings.json
new file mode 100644
index 0000000..ede5887
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/SceneTemplateSettings.json
@@ -0,0 +1,121 @@
+{
+ "templatePinStates": [],
+ "dependencyTypeInfos": [
+ {
+ "userAdded": false,
+ "type": "UnityEngine.AnimationClip",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.Animations.AnimatorController",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.AnimatorOverrideController",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.Audio.AudioMixerController",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.ComputeShader",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Cubemap",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.GameObject",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.LightingDataAsset",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.LightingSettings",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Material",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.MonoScript",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.PhysicsMaterial",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.PhysicsMaterial2D",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.VolumeProfile",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.SceneAsset",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Shader",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.ShaderVariantCollection",
+ "defaultInstantiationMode": 1
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Texture",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Texture2D",
+ "defaultInstantiationMode": 0
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Timeline.TimelineAsset",
+ "defaultInstantiationMode": 0
+ }
+ ],
+ "defaultDependencyTypeInfo": {
+ "userAdded": false,
+ "type": "",
+ "defaultInstantiationMode": 1
+ },
+ "newSceneOverride": 0
+}
\ No newline at end of file
diff --git a/benchmarks/unity/ProjectSettings/TagManager.asset b/benchmarks/unity/ProjectSettings/TagManager.asset
new file mode 100644
index 0000000..1c92a78
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/TagManager.asset
@@ -0,0 +1,43 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!78 &1
+TagManager:
+ serializedVersion: 2
+ tags: []
+ layers:
+ - Default
+ - TransparentFX
+ - Ignore Raycast
+ -
+ - Water
+ - UI
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ m_SortingLayers:
+ - name: Default
+ uniqueID: 0
+ locked: 0
diff --git a/benchmarks/unity/ProjectSettings/TimeManager.asset b/benchmarks/unity/ProjectSettings/TimeManager.asset
new file mode 100644
index 0000000..558a017
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/TimeManager.asset
@@ -0,0 +1,9 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!5 &1
+TimeManager:
+ m_ObjectHideFlags: 0
+ Fixed Timestep: 0.02
+ Maximum Allowed Timestep: 0.33333334
+ m_TimeScale: 1
+ Maximum Particle Timestep: 0.03
diff --git a/benchmarks/unity/ProjectSettings/UnityConnectSettings.asset b/benchmarks/unity/ProjectSettings/UnityConnectSettings.asset
new file mode 100644
index 0000000..029ad8b
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/UnityConnectSettings.asset
@@ -0,0 +1,40 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!310 &1
+UnityConnectSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 1
+ m_Enabled: 0
+ m_TestMode: 0
+ m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
+ m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
+ m_ConfigUrl: https://config.uca.cloud.unity3d.com
+ m_DashboardUrl: https://dashboard.unity3d.com
+ m_TestInitMode: 0
+ InsightsSettings:
+ m_EngineDiagnosticsEnabled: 1
+ m_Enabled: 0
+ CrashReportingSettings:
+ serializedVersion: 2
+ m_EventUrl: https://perf-events.cloud.unity3d.com
+ m_EnableCloudDiagnosticsReporting: 0
+ m_LogBufferSize: 10
+ m_CaptureEditorExceptions: 1
+ UnityPurchasingSettings:
+ m_Enabled: 0
+ m_TestMode: 0
+ UnityAnalyticsSettings:
+ m_Enabled: 0
+ m_TestMode: 0
+ m_InitializeOnStartup: 1
+ m_PackageRequiringCoreStatsPresent: 0
+ UnityAdsSettings:
+ m_Enabled: 0
+ m_InitializeOnStartup: 1
+ m_TestMode: 0
+ m_IosGameId:
+ m_AndroidGameId:
+ m_GameIds: {}
+ m_GameId:
+ PerformanceReportingSettings:
+ m_Enabled: 0
diff --git a/benchmarks/unity/ProjectSettings/VFXManager.asset b/benchmarks/unity/ProjectSettings/VFXManager.asset
new file mode 100644
index 0000000..46f38e1
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/VFXManager.asset
@@ -0,0 +1,14 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!937362698 &1
+VFXManager:
+ m_ObjectHideFlags: 0
+ m_IndirectShader: {fileID: 0}
+ m_CopyBufferShader: {fileID: 0}
+ m_SortShader: {fileID: 0}
+ m_StripUpdateShader: {fileID: 0}
+ m_RenderPipeSettingsPath:
+ m_FixedTimeStep: 0.016666668
+ m_MaxDeltaTime: 0.05
+ m_CompiledVersion: 0
+ m_RuntimeVersion: 0
diff --git a/benchmarks/unity/ProjectSettings/VersionControlSettings.asset b/benchmarks/unity/ProjectSettings/VersionControlSettings.asset
new file mode 100644
index 0000000..dca2881
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/VersionControlSettings.asset
@@ -0,0 +1,8 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!890905787 &1
+VersionControlSettings:
+ m_ObjectHideFlags: 0
+ m_Mode: Visible Meta Files
+ m_CollabEditorSettings:
+ inProgressEnabled: 1
diff --git a/benchmarks/unity/ProjectSettings/XRSettings.asset b/benchmarks/unity/ProjectSettings/XRSettings.asset
new file mode 100644
index 0000000..482590c
--- /dev/null
+++ b/benchmarks/unity/ProjectSettings/XRSettings.asset
@@ -0,0 +1,10 @@
+{
+ "m_SettingKeys": [
+ "VR Device Disabled",
+ "VR Device User Alert"
+ ],
+ "m_SettingValues": [
+ "False",
+ "False"
+ ]
+}
\ No newline at end of file
diff --git a/benchmarks/unity/unity.sln b/benchmarks/unity/unity.sln
new file mode 100644
index 0000000..fdd7ecf
--- /dev/null
+++ b/benchmarks/unity/unity.sln
@@ -0,0 +1,17 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Benchmarks", "Benchmarks.csproj", "{b6ce87c6-d606-93b9-b8b1-3b520c8d6bae}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {b6ce87c6-d606-93b9-b8b1-3b520c8d6bae}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {b6ce87c6-d606-93b9-b8b1-3b520c8d6bae}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/go.mod b/go.mod
index b0fbf4e..d4163d8 100644
--- a/go.mod
+++ b/go.mod
@@ -1 +1,8 @@
module github.com/edmand46/arpack
+
+go 1.23
+
+require (
+ github.com/google/flatbuffers v25.2.10+incompatible
+ google.golang.org/protobuf v1.36.11
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..cebee63
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,6 @@
+github.com/google/flatbuffers v25.2.10+incompatible h1:F3vclr7C3HpB1k9mxCGRMXq6FdUalZ6H/pNX4FP1v0Q=
+github.com/google/flatbuffers v25.2.10+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
+google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
+google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=