Skip to content
This repository was archived by the owner on Jan 18, 2022. It is now read-only.

Commit 8fdc87f

Browse files
authored
Some misc improvements (#620)
* add HasEntity to worker system * make entityid available from reader/writer * update generated code * add changelog * fix and add tests * PR feedback
1 parent 37639bb commit 8fdc87f

File tree

24 files changed

+103
-16
lines changed

24 files changed

+103
-16
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
### Added
66

77
- Added support for the Steam authentication flow.
8-
- Added a reference to Blank Starter Project in the README.
98
- Added Frames Per Second (FPS) and Unity heap usage as metrics sent by `MetricSendSystem.cs`.
109
- Added a warning message to the top of schema files copied into the `from_gdk_packages` directory.
1110
- Added an `ISnapshottable<T>` interface to all generated components. This allows you to convert a component to a snapshot.
11+
- Added an `EntityId` property on the Readers/Writers to access the `EntityId` of the underlying SpatialOS entity.
12+
- Added a `HasEntity` method to the `WorkerSystem`. This allows you to check if an entity is checked out on your worker.
1213

1314
### Changed
1415

test-project/Assets/EditmodeTests/GameObjectRepresentation/MonoBehaviourActivationManager/ActivationManagerTestBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public void SetUp()
3333
var spatialOSComponent = TestGameObject.AddComponent<SpatialOSComponent>();
3434
spatialOSComponent.Worker = workerSystem;
3535
spatialOSComponent.Entity = entityManager.CreateEntity();
36+
entityManager.AddComponentData(spatialOSComponent.Entity, new SpatialEntityId());
3637

3738
var injectableStore = new InjectableStore();
3839
var requiredFieldInjector = new RequiredFieldInjector(entityManager, loggingDispatcher);

test-project/Assets/EditmodeTests/GameObjectRepresentation/Readers/EventTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public void SetUp()
2727
world = new World("test-world");
2828
entityManager = world.GetOrCreateManager<EntityManager>();
2929
entity = entityManager.CreateEntity(ComponentType.Create<BlittableComponent.Component>());
30+
entityManager.AddComponentData(entity, new SpatialEntityId());
3031
readerWriterInternal =
3132
new ComponentWithEvents.Requirable.ReaderWriterImpl(entity, entityManager, new LoggingDispatcher());
3233
readerPublic = readerWriterInternal;

test-project/Assets/EditmodeTests/GameObjectRepresentation/Readers/NonBlittableReaderTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public void Data_returns_non_blittable_component_instance()
1616
{
1717
var entityManager = world.GetOrCreateManager<EntityManager>();
1818
var entity = entityManager.CreateEntity(typeof(NonBlittableComponent.Component));
19+
entityManager.AddComponentData(entity, new SpatialEntityId());
1920
var reader =
2021
new NonBlittableComponent.Requirable.ReaderWriterImpl(entity, entityManager,
2122
new LoggingDispatcher());
@@ -51,6 +52,7 @@ public void Field_updates_get_called_for_non_blittable_fields()
5152
{
5253
var entityManager = world.GetOrCreateManager<EntityManager>();
5354
var entity = entityManager.CreateEntity(typeof(NonBlittableComponent.Component));
55+
entityManager.AddComponentData(entity, new SpatialEntityId());
5456
var reader =
5557
new NonBlittableComponent.Requirable.ReaderWriterImpl(entity, entityManager,
5658
new LoggingDispatcher());

test-project/Assets/EditmodeTests/GameObjectRepresentation/Readers/NonBlittableWriterTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public void Sending_component_update_changes_field()
1717
var entityManager = world.GetOrCreateManager<EntityManager>();
1818
var entity = entityManager.CreateEntity(typeof(NonBlittableComponent.Component));
1919
entityManager.SetComponentData(entity, new NonBlittableComponent.Component());
20+
entityManager.AddComponentData(entity, new SpatialEntityId());
2021
var writer =
2122
new NonBlittableComponent.Requirable.ReaderWriterImpl(entity, entityManager,
2223
new LoggingDispatcher());
@@ -38,6 +39,7 @@ public void Updating_field_leaves_other_field_unchanged()
3839
{
3940
var entityManager = world.GetOrCreateManager<EntityManager>();
4041
var entity = entityManager.CreateEntity(typeof(NonBlittableComponent.Component));
42+
entityManager.AddComponentData(entity, new SpatialEntityId());
4143

4244
var schemaComponentData = NonBlittableComponent.Component.CreateSchemaComponentData(
4345
boolField: false,

test-project/Assets/EditmodeTests/GameObjectRepresentation/Readers/ReaderDataTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,11 @@ public void Data_returns_component_instance()
1616
Assert.AreEqual(data, ReaderPublic.Data);
1717
Assert.AreEqual(data.FloatField, ReaderPublic.Data.FloatField);
1818
}
19+
20+
[Test]
21+
public void EntityId_returns_spatial_entity_id()
22+
{
23+
Assert.AreEqual(EntityId, ReaderPublic.EntityId);
24+
}
1925
}
2026
}

test-project/Assets/EditmodeTests/GameObjectRepresentation/Readers/ReaderWriterTestsBase.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ namespace Improbable.Gdk.EditmodeTests.GameObjectRepresentation.Readers
77
{
88
internal abstract class ReaderWriterTestsBase
99
{
10+
protected EntityId EntityId = new EntityId(10);
11+
1012
protected BlittableComponent.Requirable.Reader ReaderPublic;
1113
protected BlittableComponent.Requirable.Writer WriterPublic;
1214
protected BlittableComponent.Requirable.ReaderWriterImpl ReaderWriterInternal;
@@ -20,6 +22,10 @@ public void SetUp()
2022
world = new World("test-world");
2123
EntityManager = world.GetOrCreateManager<EntityManager>();
2224
Entity = EntityManager.CreateEntity(typeof(BlittableComponent.Component));
25+
EntityManager.AddComponentData(Entity, new SpatialEntityId
26+
{
27+
EntityId = EntityId
28+
});
2329
ReaderWriterInternal =
2430
new BlittableComponent.Requirable.ReaderWriterImpl(Entity, EntityManager, new LoggingDispatcher());
2531
ReaderPublic = ReaderWriterInternal;

test-project/Assets/EditmodeTests/GameObjectRepresentation/RequiredFieldInjectorTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public void Setup()
5959
var entityManager = world.GetOrCreateManager<EntityManager>();
6060
injector = new RequiredFieldInjector(entityManager, new LoggingDispatcher());
6161
testEntity = entityManager.CreateEntity();
62+
entityManager.AddComponentData(testEntity, new SpatialEntityId());
6263
testGameObject = new GameObject();
6364
}
6465

test-project/Assets/Generated/Source/improbable/gdk/tests/ExhaustiveBlittableSingularReaderWriter.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public IInjectable CreateInjectable(Entity entity, EntityManager entityManager,
2929
[InjectionCondition(InjectionCondition.RequireComponentPresent)]
3030
public interface Reader : IReader<Improbable.Gdk.Tests.ExhaustiveBlittableSingular.Component, Improbable.Gdk.Tests.ExhaustiveBlittableSingular.Update>
3131
{
32+
EntityId EntityId { get; }
33+
3234
event Action<BlittableBool> Field1Updated;
3335
event Action<float> Field2Updated;
3436
event Action<int> Field4Updated;
@@ -55,6 +57,8 @@ public interface Writer : Reader, IWriter<Improbable.Gdk.Tests.ExhaustiveBlittab
5557
internal class ReaderWriterImpl :
5658
ReaderWriterBase<Improbable.Gdk.Tests.ExhaustiveBlittableSingular.Component, Improbable.Gdk.Tests.ExhaustiveBlittableSingular.Update>, Reader, Writer
5759
{
60+
public new EntityId EntityId => base.EntityId;
61+
5862
public ReaderWriterImpl(Entity entity, EntityManager entityManager, ILogDispatcher logDispatcher)
5963
: base(entity, entityManager, logDispatcher)
6064
{

test-project/Assets/Generated/Source/improbable/gdk/tests/ExhaustiveMapKeyReaderWriter.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public IInjectable CreateInjectable(Entity entity, EntityManager entityManager,
2929
[InjectionCondition(InjectionCondition.RequireComponentPresent)]
3030
public interface Reader : IReader<Improbable.Gdk.Tests.ExhaustiveMapKey.Component, Improbable.Gdk.Tests.ExhaustiveMapKey.Update>
3131
{
32+
EntityId EntityId { get; }
33+
3234
event Action<global::System.Collections.Generic.Dictionary<BlittableBool,string>> Field1Updated;
3335
event Action<global::System.Collections.Generic.Dictionary<float,string>> Field2Updated;
3436
event Action<global::System.Collections.Generic.Dictionary<byte[],string>> Field3Updated;
@@ -57,6 +59,8 @@ public interface Writer : Reader, IWriter<Improbable.Gdk.Tests.ExhaustiveMapKey.
5759
internal class ReaderWriterImpl :
5860
ReaderWriterBase<Improbable.Gdk.Tests.ExhaustiveMapKey.Component, Improbable.Gdk.Tests.ExhaustiveMapKey.Update>, Reader, Writer
5961
{
62+
public new EntityId EntityId => base.EntityId;
63+
6064
public ReaderWriterImpl(Entity entity, EntityManager entityManager, ILogDispatcher logDispatcher)
6165
: base(entity, entityManager, logDispatcher)
6266
{

0 commit comments

Comments
 (0)