Example #1
0
    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);
    }
Example #2
0
    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);
    }