@@ -289,7 +289,7 @@ fn draw_model(state: &State, view_proj: Mat4) {
289
289
} ,
290
290
fs_params
291
291
) ;
292
-
292
+
293
293
unsafe {
294
294
sg:: draw( $start_i as Int , ( $end_i - $start_i) as Int , 1 ) ;
295
295
}
@@ -322,23 +322,21 @@ fn draw_model(state: &State, view_proj: Mat4) {
322
322
use std:: time:: SystemTime ;
323
323
324
324
let ( hour, minute, second) = match SystemTime :: now ( ) . duration_since ( SystemTime :: UNIX_EPOCH ) {
325
- Ok ( n) => {
326
- let total_seconds = n. as_secs ( ) ;
327
-
328
- (
329
- ( total_seconds / ( 60 * 60 ) ) % 12 ,
330
- ( total_seconds / 60 ) % 60 ,
331
- total_seconds % 60 ,
332
- )
333
- } ,
325
+ // There's probably a better way to avoid f32 precision issues, but this
326
+ // works, at least right now.
327
+ Ok ( n) => (
328
+ ( ( n / ( 60 * 60 ) ) . as_secs_f64 ( ) % 12. ) as f32 ,
329
+ ( ( n / 60 ) . as_secs_f64 ( ) % 60. ) as f32 ,
330
+ ( n. as_secs_f64 ( ) % 60. ) as f32 ,
331
+ ) ,
334
332
// We don't really care about edges cases like this right now either.
335
- Err ( _) => ( 0 , 0 , 0 ) ,
333
+ Err ( _) => ( 0. , 0. , 0. ) ,
336
334
} ;
337
335
338
336
// Hour hand
339
337
{
340
338
let model =
341
- Mat4 :: rotation ( Radians ( hour as f32 * -TAU / 12. ) , vec3 ! ( z) ) *
339
+ Mat4 :: rotation ( Radians ( hour * -TAU / 12. ) , vec3 ! ( z) ) *
342
340
Mat4 :: translate ( vec3 ! ( 0. , T_K , 0.35 * T_K ) ) *
343
341
Mat4 :: scale ( vec3 ! ( 0.3 , 2.5 , 0.1 ) ) ;
344
342
@@ -348,7 +346,7 @@ fn draw_model(state: &State, view_proj: Mat4) {
348
346
// Minute hand
349
347
{
350
348
let model =
351
- Mat4 :: rotation ( Radians ( minute as f32 * -TAU / 60. ) , vec3 ! ( z) ) *
349
+ Mat4 :: rotation ( Radians ( minute * -TAU / 60. ) , vec3 ! ( z) ) *
352
350
Mat4 :: translate ( vec3 ! ( 0. , 0.75 * T_K , 0.25 * T_K ) ) *
353
351
Mat4 :: scale ( vec3 ! ( 0.2 , 4. , 0.1 ) ) ;
354
352
@@ -358,7 +356,7 @@ fn draw_model(state: &State, view_proj: Mat4) {
358
356
// Second hand
359
357
{
360
358
let model =
361
- Mat4 :: rotation ( Radians ( second as f32 * -TAU / 60. ) , vec3 ! ( z) ) *
359
+ Mat4 :: rotation ( Radians ( second * -TAU / 60. ) , vec3 ! ( z) ) *
362
360
Mat4 :: translate ( vec3 ! ( 0. , 1.25 * T_K , 0.45 * T_K ) ) *
363
361
Mat4 :: scale ( vec3 ! ( 0.1 , 5. , 0.1 ) ) ;
364
362
0 commit comments