menthahud-lyra/materials/vgui/replay/thumbnails/speedo/horizontal/speedo.vmt
2024-04-19 01:01:37 +01:00

248 lines
8.1 KiB
Text

#base "../mod.vmt"
"UnlitGeneric" {
$digit 0
$override 0
$leading 0
$leading_check 0
$left 0
$left_factor1 0
$left_factor2 0
$left_factor3 0
$lt 9999
$gt -1
$const_interval 0.06 // update interval
$const_ten 10 $const_one 1 $const_half 0.5 $const_zero 0
$const_hun 100 $const_tou 1000
$value 0 $value_digit 0
$temp 0.0 $time 0.0 $interval 0.0 $update 0 $oldtime 0.0
$pos "[0.0 0.0 0.0]" $posx 0.0 $posy 0.0
$dx 0.0 $dy 0.0 $oldposx 0.0 $oldposy 0.0
$dx2 0.0 $dy2 0.0 $hd2 0.0
$number 0.0 $sqrt 0.0
$hd 0.0 $hspeed 0.0
Proxies {
// Reset oldtime on new map
LessOrEqual {
lessEqualVar $oldtime greaterVar $const_zero
srcVar1 $oldtime srcVar2 $time
resultVar $oldtime
}
// Get current time
CurrentTime { resultVar $time }
// Calculate current interval
Subtract { srcVar1 $time srcVar2 $oldtime resultVar $interval }
// Sets $update to 1 if it's time to update
LessOrEqual {
lessEqualVar $const_zero greaterVar $const_one
srcVar1 $interval srcVar2 $const_interval
resultVar $update
}
// Save current time if updating
LessOrEqual {
lessEqualVar $oldtime greaterVar $time
srcVar1 $update srcVar2 $const_zero
resultVar $oldtime
}
// Get player's position
PlayerPosition { scale 1 resultVar $pos }
Clamp { srcVar1 $const_zero min "$pos[0]" max "$pos[0]" resultVar $posx }
Clamp { srcVar1 $const_zero min "$pos[1]" max "$pos[1]" resultVar $posy }
// Calculate displacement
Subtract { srcVar1 $posx srcVar2 $oldposx resultVar $dx }
Subtract { srcVar1 $posy srcVar2 $oldposy resultVar $dy }
// Store current position if updating
// Save current time if updating
LessOrEqual {
lessEqualVar $oldposx greaterVar $posx
srcVar1 $update srcVar2 $const_zero
resultVar $oldposx
}
LessOrEqual {
lessEqualVar $oldposy greaterVar $posy
srcVar1 $update srcVar2 $const_zero
resultVar $oldposy
}
// Square of horizontal distance moved
Multiply { srcVar1 $dx srcVar2 $dx resultVar $dx2 }
Multiply { srcVar1 $dy srcVar2 $dy resultVar $dy2 }
Add { srcVar1 $dx2 srcVar2 $dy2 resultVar $hd2 }
// Start square root
Equals { srcVar1 $hd2 resultVar $number }
Equals { srcVar1 $const_one resultVar $sqrt }
// 20 iterations of Newton's method, sqrt = 0.5*(sqrt + number/sqrt)
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
Divide { srcVar1 $number srcVar2 $sqrt resultVar $temp }
Add { srcVar1 $sqrt srcVar2 $temp resultVar $temp }
Multiply { srcVar1 $const_half srcVar2 $temp resultVar $sqrt }
// Set horizontal displacement
Equals { srcVar1 $sqrt resultVar $hd }
// Calculate horizontal speed
Divide { srcVar1 $hd srcVar2 $interval resultVar $hspeed }
// Round horizontal speed
Add { srcVar1 $hspeed srcVar2 $const_half resultVar $hspeed }
Int { srcVar1 $hspeed resultVar $hspeed }
// Change display value if updating
LessOrEqual {
lessEqualVar $value greaterVar $hspeed
srcVar1 $update srcVar2 $const_zero
resultVar $value
}
// Swap digits if ($left == 1)
Equals { srcVar1 $digit resultVar $override }
Equals { srcVar1 $const_ten resultVar $left_factor1 }
Equals { srcVar1 $const_hun resultVar $left_factor2 }
Equals { srcVar1 $const_tou resultVar $left_factor3 }
Divide { srcVar1 $left_factor1 srcVar2 $digit resultVar $left_factor1 }
Divide { srcVar1 $left_factor2 srcVar2 $digit resultVar $left_factor2 }
Divide { srcVar1 $left_factor3 srcVar2 $digit resultVar $left_factor3 }
LessOrEqual {
lessEqualVar $override greaterVar $left_factor1
srcVar1 $value srcVar2 $const_ten
resultVar $override
}
LessOrEqual {
lessEqualVar $override greaterVar $left_factor2
srcVar1 $value srcVar2 $const_hun
resultVar $override
}
LessOrEqual {
lessEqualVar $override greaterVar $left_factor3
srcVar1 $value srcVar2 $const_tou
resultVar $override
}
LessOrEqual {
lessEqualVar $digit greaterVar $override
srcVar1 $left srcVar2 $const_zero
resultVar $override
}
// Display digit
Divide { srcVar1 $value srcVar2 $override resultVar $value_digit }
WrapMinMax { srcVar1 $value_digit maxVal $const_ten resultVar $frame }
// Set to frame 10 (empty) if ($leading == 1) && digit is leading zero
Equals { srcVar1 $const_zero resultVar $leading_check }
LessOrEqual {
lessEqualVar $value greaterVar $const_tou
srcVar1 $leading srcVar2 $const_zero
resultVar $leading_check
}
Add { srcVar1 $leading_check srcVar2 $const_one resultVar $leading_check }
LessOrEqual {
lessEqualVar $const_ten greaterVar $frame
srcVar1 $leading_check srcVar2 $digit
resultVar $frame
}
// Set to frame 10 (empty) if (less than $lt or greater than $gt)
LessOrEqual {
lessEqualVar $frame greaterVar $const_ten
srcVar1 $value srcVar2 $lt
resultVar $frame
}
LessOrEqual {
lessEqualVar $const_ten greaterVar $frame
srcVar1 $value srcVar2 $gt
resultVar $frame
}
}
}