Instead of blindly casting int to enum, we handle the values defined in the JSON spec in a switch case.
This may seem redundant, but this fixes a UBSAN error on invalid glTF files, and it's literally the only enum where we rely on the enum values matching glTF values (everything else is either string based in glTF, or using integers that aren't small and sequential so we convert it with a switch). So this is more consistent and a little safer; this also ensures that the values actually conform to the max_enum member.
Instead of blindly casting int to enum, we handle the values defined in the JSON spec in a switch case.
This may seem redundant, but this fixes a UBSAN error on invalid glTF files, and it's literally the only enum where we rely on the enum values matching glTF values (everything else is either string based in glTF, or using integers that aren't small and sequential so we convert it with a switch). So this is more consistent and a little safer; this also ensures that the values actually conform to the max_enum member.