public void SetSharedComponentData <T>(Entity entity, T componentData, ManagedComponentStore managedComponentStore) where T : struct, ISharedComponentData { if (m_IsMainThread) { BeforeStructuralChange(); } var typeIndex = TypeManager.GetTypeIndex <T>(); var componentType = ComponentType.FromTypeIndex(typeIndex); EntityComponentStore->AssertEntityHasComponent(entity, typeIndex); var newSharedComponentDataIndex = managedComponentStore.InsertSharedComponent(componentData); EntityComponentStore->SetSharedComponentDataIndex(entity, componentType, newSharedComponentDataIndex); managedComponentStore.Playback(ref EntityComponentStore->ManagedChangesTracker); managedComponentStore.RemoveReference(newSharedComponentDataIndex); }
public void SetSharedComponentDataBoxedDefaultMustBeNull(Entity entity, int typeIndex, int hashCode, object componentData, ManagedComponentStore managedComponentStore) { if (m_IsMainThread) { BeforeStructuralChange(); } EntityComponentStore->AssertEntityHasComponent(entity, typeIndex); var newSharedComponentDataIndex = 0; if (componentData != null) // null means default { newSharedComponentDataIndex = managedComponentStore.InsertSharedComponentAssumeNonDefault(typeIndex, hashCode, componentData); } var componentType = ComponentType.FromTypeIndex(typeIndex); EntityComponentStore->SetSharedComponentDataIndex(entity, componentType, newSharedComponentDataIndex); managedComponentStore.Playback(ref EntityComponentStore->ManagedChangesTracker); managedComponentStore.RemoveReference(newSharedComponentDataIndex); }