// Pre-condition: `movement != GameInputs.Movement.None` public static void Process( GameInputs.Movement movement, Entity entity, Registry registry ) { var character = registry .GetComponentUnsafe <Comps.Character>(entity); var orientation = registry .GetComponentUnsafe <Comps.Orientations.Cardinal>(entity); Physical.Orientation.Cardinal movementDirection = movement.ToCardinalDirection(); if (character.kind == Comps.Character.Kind.Aquamentus) { // Aquamentus can only face left and right switch (movementDirection) { case Physical.Orientation.Cardinal.Left: case Physical.Orientation.Cardinal.Right: orientation.data = movementDirection; break; } } else { orientation.data = movementDirection; } }
public void Deserialize(NetDataReader reader) { data = (Physical.Orientation.Cardinal)reader.GetInt(); }