Hi!
Imagine a 2d square area, divide it in 4 quadrant and let a player move in the area for 1 minute. How is the best way to calculate the time the player spent in each quadrant when the time is out?
I can’t get good results. Here is the code I’m using in the main loop:
The results (Latency#, TimeIResult#,…) I get using this code are wrong. The latency# should be 60.0 but I always obtain bigger results (like 60.012) . The sum of the 4 TimeXResult# gives the same number (i.e. 60.012).
Is it a conversion type problem? Or the lost of precision is due to the mathematic operations?
Any suggestions to do it better? I need “millisec” precision.
Thanks a lot
FiNegirO
Imagine a 2d square area, divide it in 4 quadrant and let a player move in the area for 1 minute. How is the best way to calculate the time the player spent in each quadrant when the time is out?
I can’t get good results. Here is the code I’m using in the main loop:
If EntityX (player) >= 0 And EntityZ (player) >= 0 And insideI = 0 Then ;enter the I quadrant startTimeI = MilliSecs() insideI = 1 ;------------- TimeII = TimeII + insideII * (MilliSecs() - startTimeII) insideII = 0 TimeIII = TimeIII + insideIII * (MilliSecs() - startTimeIII) insideIII = 0 TimeIV = TimeIV + insideIV * (MilliSecs() - startTimeIV) insideIV = 0 ;------------- ElseIf EntityX (player) >= 0 And EntityZ (player) < 0 And insideII = 0 Then ;enter the II quadrant startTimeII = MilliSecs() insideII = 1 ;------------- TimeI = TimeI + insideI * (MilliSecs() - startTimeI) insideI = 0 TimeIII = TimeIII + insideIII * (MilliSecs() - startTimeIII) insideIII = 0 TimeIV = TimeIV + insideIV * (MilliSecs() - startTimeIV) insideIV = 0 ;------------- ElseIf EntityX (player) < 0 And EntityZ (player) < 0 And insideIII = 0 Then ;enter the III quadrant startTimeIII = MilliSecs() insideIII = 1 ;------------- TimeI = TimeI + insideI * (MilliSecs() - startTimeI) insideI = 0 TimeII = TimeII + insideII * (MilliSecs() - startTimeII) insideII = 0 TimeIV = TimeIV + insideIV * (MilliSecs() - startTimeIV) insideIV = 0 ;------------- ElseIf EntityX (player) < 0 And EntityZ (player) >= 0 And insideIV = 0 Then ;enter the IV quadrant startTimeIV = MilliSecs() insideIV = 1 ;------------- TimeI = TimeI + insideI * (MilliSecs() - startTimeI) insideI = 0 TimeII = TimeII + insideII * (MilliSecs() - startTimeII) insideII = 0 TimeIII = TimeIII + insideIII * (MilliSecs() - startTimeIII) insideIII = 0 ;------------- EndIf If MilliSecs() >= iniTime + 60000 Latency# = (MilliSecs() - iniTime) / 1000.0 ;------------- TimeI = TimeI + insideI * (MilliSecs() - startTimeI) insideI = 0 TimeII = TimeII + insideII * (MilliSecs() - startTimeII) insideII = 0 TimeIII = TimeIII + insideIII * (MilliSecs() - startTimeIII) insideIII = 0 TimeIV = TimeIV + insideIV * (MilliSecs() - startTimeIV) insideIV = 0 ;------------- TimeIResult# = TimeI / 1000.0 TimeIIResult# = TimeII / 1000.0 TimeIIIResult# = TimeIII / 1000.0 TimeIVResult# = TimeIV / 1000.0
The results (Latency#, TimeIResult#,…) I get using this code are wrong. The latency# should be 60.0 but I always obtain bigger results (like 60.012) . The sum of the 4 TimeXResult# gives the same number (i.e. 60.012).
Is it a conversion type problem? Or the lost of precision is due to the mathematic operations?
Any suggestions to do it better? I need “millisec” precision.
Thanks a lot
FiNegirO