Separate and reify laser beams

This commit is contained in:
2022-07-23 23:26:39 +01:00
parent 262ac237cd
commit 7563441154
13 changed files with 102 additions and 72 deletions
+20
View File
@@ -0,0 +1,20 @@
module Dodge.Laser.Update
where
import Dodge.Item.Weapon.LaserPath
import Dodge.WorldEvent.Damage
import Dodge.Data
import Geometry
updateLaser :: World -> LaserStart -> (World, Laser)
updateLaser w pt =
( damThingHitWith (\p1 p2 p3 -> Damage LASERING dam p1 p2 p3 NoDamageEffect) sp xp thHit w
, Laser {_laPoints = sp:ps , _laColor = _lpColor pt}
)
where
phasev = _lpPhaseV pt
sp = _lpPos pt
dir = _lpDir pt
dam = _lpDamage pt
xp = sp +.+ 800 *.* unitVectorAtAngle dir
(thHit, ps) = reflectLaserAlong phasev sp xp w