@@ -330,34 +330,32 @@ pub const QuakeMapComponent = struct {
330
330
331
331
var err : delve.utils.quakemap.ErrorInfo = undefined ;
332
332
333
+ // pick the transform to use when loading
334
+ const load_transform = if (self .transform_landmark_name == null ) self .map_transform else math .Mat4 .identity ;
335
+
336
+ self .quake_map = delve .utils .quakemap .QuakeMap .read (allocator , file_buffer , load_transform , & err ) catch {
337
+ delve .debug .log ("Error reading quake map: {}" , .{err });
338
+ return ;
339
+ };
340
+
333
341
// find our landmark offset, if one was asked for
334
342
if (self .transform_landmark_name ) | landmark_str | {
335
- // read the map to try to get the landmark position
336
- // TODO: update quake map utils to have a version that just reads entities!
337
- var quake_map_landmark = delve .utils .quakemap .QuakeMap .read (allocator , file_buffer , self .map_transform , & err ) catch {
338
- delve .debug .log ("Error reading quake map: {}" , .{err });
339
- return ;
340
- };
341
- defer quake_map_landmark .deinit ();
342
-
343
- const landmark = getLandmark (& quake_map_landmark , landmark_str .str );
343
+ const landmark = getLandmark (& self .quake_map , landmark_str .str );
344
344
const landmark_offset_transformed = landmark .pos .mulMat4 (self .map_transform );
345
345
const transformed_origin = delve .math .Vec3 .zero .mulMat4 (self .map_transform );
346
346
const rotate_angle = self .transform_landmark_angle - landmark .angle ;
347
- self .angle_offset = rotate_angle ;
348
347
349
348
const map_translate_amount = transformed_origin .sub (landmark_offset_transformed );
350
349
351
350
// update our map transforms by applying our rotation and offset
352
351
self .transform = self .transform .mul (delve .math .Mat4 .rotate (rotate_angle , delve .math .Vec3 .new (0 , 1 , 0 )));
353
352
self .transform = self .transform .mul (delve .math .Mat4 .translate (map_translate_amount ));
354
353
self .map_transform = self .transform .mul (delve .math .Mat4 .scale (self .map_scale ).mul (delve .math .Mat4 .rotate (-90 , delve .math .Vec3 .x_axis )));
355
- }
354
+ self . angle_offset = rotate_angle ;
356
355
357
- self .quake_map = delve .utils .quakemap .QuakeMap .read (allocator , file_buffer , self .map_transform , & err ) catch {
358
- delve .debug .log ("Error reading quake map: {}" , .{err });
359
- return ;
360
- };
356
+ // can now apply the final transform to the map
357
+ self .quake_map .applyTransform (self .map_transform );
358
+ }
361
359
362
360
// calculate our bounds now!
363
361
self .bounds = getBoundsForMap (& self .quake_map );
0 commit comments