WIP: Player fields for camera modding
modcameranoclip, modchasecam, modcamspeed, modcamstill, modcamorbit, modcamrotate, modcamdist, modcamheight
For each, the two most significant bits are occupied by a flag (masked by CF_FLAGMASK) to determine how to apply the modded value:
CF_SET (1<<30): Use this value instead of the cvar
CF_ADD (2<<30): Add this value to the cvar
CF_SCALE (3<<30): Multiply this value by the cvar
(For booleans, there's no difference between the three flags)
The remaining 30 bits (masked by CF_VALUEMASK) are the actual value, shifted to the right by CF_VALUESHIFT (2 bits). Booleans are not shifted. e.g., to scale camera distance by a factor of two, player->modcamdist would be set to CF_SCALE | ((2*FRACUNIT)>>CF_VALUESHIFT). To force the camera to noclip, player->modcameranoclip would be set to CF_SET | 1.
P_SetModCam is a Lua exclusive function to handle the bitwise math:
P_SetModCam(player, "modcameranoclip", CF_SET, true)```
WIP because I'd like to use these to implement a less jank camera scanner effect than the one we have now