EntityChange MakeChangeOf(InputEntity e) { int[] indices = e.GetComponentIndices(); var components = e.GetComponents(); int numComponents = components.Length; var componentChanges = new ComponentChange[numComponents]; for (int i = 0; i < numComponents; ++i) { componentChanges[i] = ComponentChange.MakeUpdate( indices[i], components[i] ); } return(EntityChange.MakeUpdate(e.id.value, componentChanges)); }
ComponentChange[] MakeComponentChangesOf(GameEntity e) { var componentChanges = new List <ComponentChange>(); var changed = e.changeFlags.flags; int numComponents = e.totalComponents; for (int i = 0; i < numComponents; ++i) { if (e.HasComponent(i)) { componentChanges.Add(ComponentChange.MakeUpdate(i, e.GetComponent(i))); } else if (changed[i]) { componentChanges.Add(ComponentChange.MakeRemoval(i)); } } return(componentChanges.ToArray()); }