Skip to content

Instantly share code, notes, and snippets.

@sarkahn
Created February 15, 2020 06:10
Show Gist options
  • Save sarkahn/53e0edfedb233b2937f3a69bddde98d7 to your computer and use it in GitHub Desktop.
Save sarkahn/53e0edfedb233b2937f3a69bddde98d7 to your computer and use it in GitHub Desktop.
PlayerSpeedSort
// Sort so that players are first, and everything else is sorted by speed
struct PlayerSpeedSort : IComparer<Entity>
{
ComponentDataFromEntity<Speed> speedFromEntity;
ComponentDataFromEntity<Player> playerFromEntity;
public PlayerSpeedSort(ComponentDataFromEntity<Speed> speedFromEntity, ComponentDataFromEntity<Player> playerFromEntity)
{
this.speedFromEntity = speedFromEntity;
this.playerFromEntity = playerFromEntity;
}
public int Compare(Entity a, Entity b)
{
bool aIsPlayer = playerFromEntity.HasComponent(a);
bool bIsPlayer = playerFromEntity.HasComponent(b);
if (aIsPlayer && !bIsPlayer) return -1;
if (!aIsPlayer && bIsPlayer) return 1;
int aSpeed = speedFromEntity[a].value;
int bSpeed = speedFromEntity[b].value;
if (aSpeed > bSpeed) return -1;
if (aSpeed < bSpeed) return 1;
return 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment