Skip to content

Commit c5543c1

Browse files
committed
refactor: copy span to managed field element
1 parent 767dfcf commit c5543c1

File tree

6 files changed

+86
-14
lines changed

6 files changed

+86
-14
lines changed

Assets/Dojo/.DS_Store

0 Bytes
Binary file not shown.

Assets/Dojo/Plugins/iOS/libdojo_c.a.meta

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Dojo/Plugins/iOS/libdojo_c.dylib.meta

Lines changed: 50 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Dojo/Runtime/Starknet/FieldElement.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,20 @@ public FieldElement(string hex)
5656

5757
public FieldElement(dojo.FieldElement fieldElement)
5858
{
59-
inner = fieldElement;
59+
// We don't want to refer to the same memory as the original field element.
60+
// As we might want to free it - potentially slower
61+
// TODO: benchmark copies?
62+
fieldElement.data.CopyTo(inner.data);
6063
}
6164

62-
public FieldElement(byte[] bytes)
65+
public FieldElement(Span<byte> bytes)
6366
{
6467
if (bytes.Length != 32)
6568
{
6669
throw new ArgumentException("Byte array must be 32 bytes.", nameof(bytes));
6770
}
6871

69-
unsafe
70-
{
71-
fixed (byte* ptr = &inner._data[0])
72-
{
73-
Marshal.Copy(bytes, 0, (IntPtr)ptr, bytes.Length);
74-
}
75-
}
72+
bytes.CopyTo(inner.data);
7673
}
7774

7875
// This handles BigIntegers as well as primitive types

Assets/Dojo/Runtime/Torii/ToriiClient.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ public List<Entity> Entities(dojo.Query query)
8787
for (var i = 0; i < (int)result._ok.data_len; i++)
8888
{
8989
entities.Add(new Entity(result._ok.data[i]));
90-
dojo.entity_free(&result._ok.data[i]);
9190
}
9291

9392
dojo.carray_free(result._ok.data, result._ok.data_len);
@@ -180,7 +179,7 @@ private void RegisterEntityStateUpdateEvent(dojo.FieldElement[] entities, bool d
180179
{
181180
mappedModels[i] = new Model(models.data[i]);
182181
// cleanup model
183-
dojo.model_free(&models.data[i]);
182+
// dojo.model_free(&models.data[i]);
184183
}
185184

186185
// only run this when in unity play mode

Assets/Spawn And Move/Scenes/SampleScene.unity

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,9 +453,9 @@ MonoBehaviour:
453453
m_Name:
454454
m_EditorClassIdentifier:
455455
masterPrivateKey: 0x1800000000300000180000000000030000000000003006001800006600
456-
masterAddress: 0x517ececd29116499f4a1b64b094da79ba08dfd54a3edaa316134c41f8160973
456+
masterAddress: 0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03
457457
worldManager: {fileID: 2019443015}
458-
worldActionsAddress: 0x3e274b7d85fd0415bec56a5d831c3854f7308bbb26d486993cfc49e5a5fb788
458+
worldActionsAddress: 0x297bde19ca499fd8a39dd9bedbcd881a47f7b8f66c19478ce97d7de89e6112e
459459
--- !u!4 &998234501
460460
Transform:
461461
m_ObjectHideFlags: 0

0 commit comments

Comments
 (0)