Make bouncing grenades stop spinning quicker
This commit is contained in:
@@ -39,7 +39,8 @@ doGravityPU pj
|
||||
|
||||
applyGravityPU :: Projectile -> World -> World
|
||||
applyGravityPU pj
|
||||
| (pj ^. pjPos . _z) < 1 && norm (_pjVel pj) < 1 = topj . pjVel .~ 0
|
||||
| (pj ^. pjPos . _z) < 1 && norm (_pjVel pj) < 1 =
|
||||
(topj . pjVel .~ 0) . (topj . pjSpin .~ 0)
|
||||
| otherwise = topj . pjVel . _z -~ 0.5
|
||||
where
|
||||
topj = cWorld . lWorld . projectiles . ix (pj ^. pjID)
|
||||
@@ -91,32 +92,21 @@ shellHitCreature p cr pj
|
||||
(pj ^. pjDir - cr ^. crDir)
|
||||
|
||||
shellHitFloor :: Point3 -> Projectile -> World -> World
|
||||
shellHitFloor p pj w
|
||||
| z < 1 && norm (_pjVel pj) < 1 = w
|
||||
| otherwise =
|
||||
w
|
||||
& topj . pjPos .~ (p & _z .~ 0.1)
|
||||
& topj . pjVel . _z %~ bouncez
|
||||
& topj . pjVel . _xy %~ decvel
|
||||
& topj . pjSpin %~ decspin
|
||||
& bounceSound pj
|
||||
shellHitFloor p pj =
|
||||
(topj . pjPos .~ (p & _z .~ 0.1))
|
||||
. (topj . pjVel . _z %~ bouncez)
|
||||
. (topj . pjVel . _xy %~ decvel)
|
||||
. (topj . pjSpin *~ 0.9)
|
||||
. (bounceSound pj)
|
||||
where
|
||||
bouncez x
|
||||
| x < -1 = -0.5 * x
|
||||
| otherwise = 0
|
||||
bouncez x = max 0 (-0.5 * x)
|
||||
topj = cWorld . lWorld . projectiles . ix (pj ^. pjID)
|
||||
zvel = pj ^. pjVel . _z
|
||||
z = pj ^. pjPos . _z + zvel
|
||||
decvel v
|
||||
| magV v > 1 = rotateV (5 * pj ^. pjSpin) $ 0.8 * v
|
||||
| norm v > 1 = rotateV (5 * pj ^. pjSpin) $ 0.8 * v
|
||||
| otherwise = 0
|
||||
decspin x
|
||||
| abs x < 0.01 = 0
|
||||
| otherwise = x * 0.9
|
||||
|
||||
destroyProjectile :: Projectile -> World -> World
|
||||
destroyProjectile pj =
|
||||
(cWorld . lWorld . projectiles %~ IM.delete pjid) . removelink
|
||||
destroyProjectile pj = (cWorld . lWorld . projectiles %~ IM.delete pjid) . removelink
|
||||
where
|
||||
pjid = pj ^. pjID
|
||||
removelink = fromMaybe id $ do
|
||||
|
||||
Reference in New Issue
Block a user