Skip to content

Commit dc8c957

Browse files
authored
chore: improve performance of schemas (#22)
1 parent 6c69cde commit dc8c957

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

Engine/src/cstrike/schema.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*
1+
/*
22
* ModSharp
33
* Copyright (C) 2023-2025 Kxnrl. All Rights Reserved.
44
*
@@ -41,10 +41,10 @@
4141
// for coreclr
4242
struct SchemaClassField_t
4343
{
44-
CUtlString name;
45-
CUtlString type;
46-
int32_t offset;
47-
bool networked;
44+
CUtlString name;
45+
CUtlString type;
46+
int32_t offset;
47+
bool networked;
4848
SchemaTypeCategory_t category;
4949
};
5050

@@ -167,7 +167,7 @@ static void BuildClassSchemaRecursive(SchemaClass_t*
167167
const auto* fields = current_class_info->GetFields();
168168
for (int i = 0; i < current_class_info->GetFieldsSize(); ++i)
169169
{
170-
const auto& field = fields[i];
170+
const auto& field = fields[i];
171171
const std::string_view field_name(field.m_pszName);
172172

173173
if (field_name == "__m_pChainEntity")
@@ -188,7 +188,7 @@ static void BuildClassSchemaRecursive(SchemaClass_t*
188188

189189
const auto is_field_networked = IsFieldNetworked(field);
190190

191-
auto new_field = derived_schema_class->fields.AddToTailGetPtr();
191+
auto new_field = derived_schema_class->fields.AddToTailGetPtr();
192192

193193
auto it = override_fields.find(field_name.data());
194194
if (it != override_fields.end())
@@ -261,7 +261,7 @@ static void ScanSchemaScopeType(CSchemaSystemTypeScope* type_scope)
261261
schema_class->baseClassList.AddToTail(new CUtlString(class_info->GetName()));
262262
g_SchemaList.AddToTail(schema_class);
263263

264-
std::unordered_set<std::string_view> added_field_names;
264+
std::unordered_set<std::string_view> added_field_names{};
265265
std::unordered_map<std::string, const char*> override_fields{};
266266

267267
BuildClassSchemaRecursive(schema_class, class_info, added_field_names, override_fields);

Sharp.Core/Helpers/SchemaSystem.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*
1+
/*
22
* ModSharp
33
* Copyright (C) 2023-2025 Kxnrl. All Rights Reserved.
44
*
@@ -21,6 +21,7 @@
2121
using System.Runtime.CompilerServices;
2222
using Sharp.Core.Bridges.Natives;
2323
using Sharp.Shared;
24+
using Sharp.Shared.Enums;
2425
using Sharp.Shared.Types;
2526
using Sharp.Shared.Types.Tier;
2627
using Sharp.Shared.Utilities;
@@ -37,15 +38,19 @@ public static SchemaField GetSchemaField(string classname, string field)
3738
var schemaField = GetSchemaClassField(schemaClass, field);
3839

3940
var arraySize = 1;
40-
var fieldTypeSpan = schemaField.Type.AsSpan();
4141

42-
var startPos = fieldTypeSpan.IndexOf('[');
43-
var endPos = fieldTypeSpan.IndexOf(']');
44-
45-
if (startPos > -1 && endPos > -1 && endPos > startPos)
42+
if (schemaField.Category is SchemaTypeCategory.FixedArray)
4643
{
47-
var arraySizeStr = fieldTypeSpan[(startPos + 1)..endPos];
48-
arraySize = int.Parse(arraySizeStr);
44+
var fieldTypeSpan = schemaField.Type.AsSpan();
45+
46+
var startPos = fieldTypeSpan.IndexOf('[');
47+
var endPos = fieldTypeSpan.IndexOf(']');
48+
49+
if (startPos > -1 && endPos > -1 && endPos > startPos)
50+
{
51+
var arraySizeStr = fieldTypeSpan[(startPos + 1)..endPos];
52+
arraySize = int.Parse(arraySizeStr);
53+
}
4954
}
5055

5156
return new SchemaField

0 commit comments

Comments
 (0)