private void AddedComponents <T>() where T : struct, IComponentData { ComponentType componentType = ComponentType.Create <T>(); ComponentGroup group = GetComponentGroup(ComponentType.Create <SyncState>(), componentType, ComponentType.Subtractive <NetworkComponentState <T> >(), ComponentType.Create <NetworktOwner>()); ComponentDataArray <T> components = group.GetComponentDataArray <T>(); ComponentDataArray <SyncState> networkSyncStateComponents = group.GetComponentDataArray <SyncState>(); EntityArray entities = group.GetEntityArray(); NetworkField[] networkMemberInfos = reflectionUtility.GetFields(componentType); for (int i = 0; i < entities.Length; i++) { SyncState networkSyncState = networkSyncStateComponents[i]; NetworkComponent componentData = new NetworkComponent { TypeId = reflectionUtility.GetId(componentType) }; T component = components[i]; for (int j = 0; j < networkMemberInfos.Length; j++) { componentData.Fields.Add(new ComponentField { Id = j, Value = (networkMemberInfos[j] as NetworkField <T>).GetValue(component), }); } ownNetworkSendMessageUtility.AddComponent(entities[i], networkSyncState.actorId, networkSyncState.networkId, componentData); AllNetworkSendMessageUtility.AddComponent(entities[i], networkSyncState.actorId, networkSyncState.networkId, componentData); int numberOfMembers = reflectionUtility.GetFieldsCount(componentType.GetManagedType()); networkFactory.CreateNetworkComponentData <T>(entities[i], numberOfMembers); PostUpdateCommands.AddComponent(entities[i], new NetworkComponentState <T>()); } }