33#include " GameDefs.h"
44#include " PhysicsDefs.h"
55
6- // convert fix16 angle to degrees
7- inline float ConvertFixAngleToDegs (unsigned short ang16 )
6+ class Convert
87{
9- return (ang16 / 1024.0f ) * 360.0f - SPRITE_ZERO_ANGLE ;
10- }
8+ public:
9+ // Convert map units to meters
10+ static float MapUnitsToMeters (float units) { return (units * METERS_PER_MAP_UNIT); }
1111
12- // convert pixels coordinate to map coordinate
13- inline float ConvertPixelsToMap (int pixels )
14- {
15- return (1.0f * pixels ) / MAP_PIXELS_PER_TILE ;
16- }
12+ // Convert meters to map units
13+ static float MetersToMapUnits (float units) { return (units / METERS_PER_MAP_UNIT); }
1714
18- // convert map coordinate to pixels
19- inline int ConvertMapToPixels (float coord )
20- {
21- return static_cast < int > (coord * MAP_PIXELS_PER_TILE );
22- }
15+ // Convert map units to meters
16+ static glm::vec2 MapUnitsToMeters (const glm::vec2& units)
17+ {
18+ return {
19+ MapUnitsToMeters (units.x ),
20+ MapUnitsToMeters (units.y )
21+ };
22+ }
23+ static glm::vec3 MapUnitsToMeters (const glm::vec3& units)
24+ {
25+ return {
26+ MapUnitsToMeters (units.x ),
27+ MapUnitsToMeters (units.y ),
28+ MapUnitsToMeters (units.z )
29+ };
30+ }
31+ // Convert meters to map units
32+ static glm::vec2 MetersToMapUnits (const glm::vec2& units)
33+ {
34+ return {
35+ MetersToMapUnits (units.x ),
36+ MetersToMapUnits (units.y )
37+ };
38+ }
39+ static glm::vec3 MetersToMapUnits (const glm::vec3& units)
40+ {
41+ return {
42+ MetersToMapUnits (units.x ),
43+ MetersToMapUnits (units.y ),
44+ MetersToMapUnits (units.z )
45+ };
46+ }
2347
24- // convert map coordinate to physics world coordinate
25- inline float ConvertMapToPhysics ( float coord )
26- {
27- return coord * PHYSICS_SCALE ;
28- }
48+ // Convert fix16 angle
49+ static cxx:: angle_t Fix16ToAngle ( unsigned short ang16 )
50+ {
51+ return cxx::angle_t::from_degrees ((ang16 / 1024 . 0f ) * 360 . 0f - SPRITE_ZERO_ANGLE) ;
52+ }
2953
30- // convert physics world coordinate to map coordinate
31- inline float ConvertPhysicsToMap (float coord )
32- {
33- return coord / PHYSICS_SCALE ;
34- }
54+ // Convert pixels to map units
55+ static float PixelsToMapUnits (int pixels) { return (1 .0f * pixels) / PIXELS_PER_MAP_UNIT; }
3556
36- // convert pixels coordinate to block coordinate
37- inline int ConvertPixelsToTilePos (int pixels )
38- {
39- return pixels / MAP_PIXELS_PER_TILE ;
40- }
57+ // Convert map units to pixels
58+ static int MapUnitsToPixels (float units) { return (int ) (units * PIXELS_PER_MAP_UNIT); }
4159
42- // convert block coordinate to pixels coorinate
43- inline int ConvertTilePosToPixels (int tilePos )
44- {
45- return tilePos * MAP_PIXELS_PER_TILE ;
46- }
60+ // Convert pixels to map units
61+ static glm::vec2 PixelsToMapUnits (const glm::ivec2& pixels)
62+ {
63+ return {
64+ PixelsToMapUnits (pixels.x ),
65+ PixelsToMapUnits (pixels.y )
66+ };
67+ }
68+ static glm::vec3 PixelsToMapUnits (const glm::ivec3& pixels)
69+ {
70+ return {
71+ PixelsToMapUnits (pixels.x ),
72+ PixelsToMapUnits (pixels.y ),
73+ PixelsToMapUnits (pixels.z )
74+ };
75+ }
4776
48- // in original gta1 map height levels is counting from top to bottom -
49- // 0 is highest and 5 is lowest level
50- inline int ConvertMapLevel (int tileLayer )
51- {
52- tileLayer = MAP_LAYERS_COUNT - tileLayer - 1 ;
53- debug_assert (tileLayer > -1 && tileLayer < MAP_LAYERS_COUNT );
77+ // Convert map units to pixels
78+ static glm::ivec2 MapUnitsToPixels (const glm::vec2& units)
79+ {
80+ return {
81+ MapUnitsToPixels (units.x ),
82+ MapUnitsToPixels (units.y )
83+ };
84+ }
85+ static glm::ivec3 MapUnitsToPixels (const glm::vec3& units)
86+ {
87+ return {
88+ MapUnitsToPixels (units.x ),
89+ MapUnitsToPixels (units.y ),
90+ MapUnitsToPixels (units.z )
91+ };
92+ }
93+
94+ // Convert pixels directly to meters
95+ static float PixelsToMeters (int pixels)
96+ {
97+ return ((1 .0f * pixels) / PIXELS_PER_MAP_UNIT) * METERS_PER_MAP_UNIT;
98+ }
99+
100+ // Convert meters directly to pixels
101+ static int MetersToPixels (float meters)
102+ {
103+ return (int ) ((meters / METERS_PER_MAP_UNIT) * PIXELS_PER_MAP_UNIT);
104+ }
105+
106+ // Convert pixels directly to meters
107+ static glm::vec2 PixelsToMeters (const glm::ivec2& pixels)
108+ {
109+ return {
110+ PixelsToMeters (pixels.x ),
111+ PixelsToMeters (pixels.y )
112+ };
113+ }
114+ static glm::vec3 PixelsToMeters (const glm::ivec3& pixels)
115+ {
116+ return {
117+ PixelsToMeters (pixels.x ),
118+ PixelsToMeters (pixels.y ),
119+ PixelsToMeters (pixels.z )
120+ };
121+ }
54122
55- return tileLayer ;
56- }
123+ // Convert meters directly to pixels
124+ static glm::ivec2 MetersToPixels (const glm::vec2& meters)
125+ {
126+ return {
127+ MetersToPixels (meters.x ),
128+ MetersToPixels (meters.y )
129+ };
130+ }
131+ static glm::ivec3 MetersToPixels (const glm::vec3& meters)
132+ {
133+ return {
134+ MetersToPixels (meters.x ),
135+ MetersToPixels (meters.y ),
136+ MetersToPixels (meters.z )
137+ };
138+ }
139+ };
0 commit comments