From 7585531dd1e710360194a05171188896c3a90cfa Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 25 Oct 2025 13:54:40 +0100 Subject: [PATCH] Simplify Prop drawing --- src/Dodge/Data/Prop.hs | 21 +-- src/Dodge/Default/Prop.hs | 2 +- src/Dodge/Placement/Instance.hs | 2 - src/Dodge/Placement/Instance/LightSource.hs | 2 +- .../Placement/Instance/LightSource/Cover.hs | 43 ------- src/Dodge/Prop/Draw.hs | 69 +--------- src/Dodge/Room/LongDoor.hs | 11 +- src/Dodge/Room/Tutorial.hs | 4 +- tags | 120 +++++++++--------- 9 files changed, 73 insertions(+), 201 deletions(-) delete mode 100644 src/Dodge/Placement/Instance/LightSource/Cover.hs diff --git a/src/Dodge/Data/Prop.hs b/src/Dodge/Data/Prop.hs index 9908e3a00..b2747cd68 100644 --- a/src/Dodge/Data/Prop.hs +++ b/src/Dodge/Data/Prop.hs @@ -14,7 +14,7 @@ import ShapePicture.Data data Prop = ShapeProp { _prPos :: Point2 - , _prDraw :: PropDraw + , _prDraw :: SPic , _prUpdate :: PropUpdate , _prID :: Int , _prRot :: Float @@ -22,10 +22,7 @@ data Prop = ShapeProp } data DebrisType - = Gib - { _gibSize :: Float - , _gibColor :: Color - } + = Gib { _gibSize :: Float , _gibColor :: Color } | BlockDebris {_bdColor :: Color} data Debris = DebrisChunk @@ -36,15 +33,6 @@ data Debris = DebrisChunk , _dbSpin :: Q.Quaternion Float } -data PropDraw - = PropDrawFlatTranslate SPic - | PropDoubleLampCover Float - | PropVerticalLampCover Float - | PropLampCover Float - --- | PropDrawGib Float ---deriving (Eq, Ord, Show, Read) --Generic, Flat) - data PropUpdate = PropUpdateId | PropUpdateAnd PropUpdate PropUpdate @@ -56,21 +44,16 @@ data PropUpdate | PropUpdateWhen WdBl PropUpdate | PropUpdateIf WdBl PropUpdate PropUpdate ---deriving (Eq, Ord, Show, Read) --Generic, Flat) - data PrWdLsLs = PrWdLsId | PrWdLsSetPosition WdP2f Point3 | PrWdLsSetColor Point3 ---deriving (Eq, Ord, Show, Read) --Generic, Flat) - makeLenses ''Prop makeLenses ''Debris makeLenses ''DebrisType deriveJSON defaultOptions ''DebrisType deriveJSON defaultOptions ''Debris -deriveJSON defaultOptions ''PropDraw deriveJSON defaultOptions ''PrWdLsLs deriveJSON defaultOptions ''PropUpdate deriveJSON defaultOptions ''Prop diff --git a/src/Dodge/Default/Prop.hs b/src/Dodge/Default/Prop.hs index 537665c04..36cb1c43d 100644 --- a/src/Dodge/Default/Prop.hs +++ b/src/Dodge/Default/Prop.hs @@ -7,7 +7,7 @@ defaultProp :: Prop defaultProp = ShapeProp { _prPos = V2 0 0 - , _prDraw = PropDrawFlatTranslate mempty + , _prDraw = mempty , _prID = 0 , _prUpdate = PropUpdateId , _prToggle = True diff --git a/src/Dodge/Placement/Instance.hs b/src/Dodge/Placement/Instance.hs index dae2bbed6..670d21b98 100644 --- a/src/Dodge/Placement/Instance.hs +++ b/src/Dodge/Placement/Instance.hs @@ -1,7 +1,6 @@ module Dodge.Placement.Instance ( module Dodge.Placement.Instance.Door , module Dodge.Placement.Instance.LightSource - , module Dodge.Placement.Instance.LightSource.Cover , module Dodge.Placement.Instance.Wall , module Dodge.Placement.Instance.Tank , module Dodge.Placement.Instance.Button @@ -14,7 +13,6 @@ module Dodge.Placement.Instance where import Dodge.Placement.Instance.Door import Dodge.Placement.Instance.Tank -import Dodge.Placement.Instance.LightSource.Cover import Dodge.Placement.Instance.LightSource import Dodge.Placement.Instance.LightSource.Flicker import Dodge.Placement.Instance.Wall diff --git a/src/Dodge/Placement/Instance/LightSource.hs b/src/Dodge/Placement/Instance/LightSource.hs index 970691316..5b41154d6 100644 --- a/src/Dodge/Placement/Instance/LightSource.hs +++ b/src/Dodge/Placement/Instance/LightSource.hs @@ -57,7 +57,7 @@ moveLSThen posf off sh = propLSThen (PropUpdatePosition posf) (PrWdLsSetPosition , _prRot = 0 , _prUpdate = PropUpdateId , --, _prDraw = PropDrawSPic $ noPic $ uncurryV translateSHf (_prPos pr) $ rotateSH (_pjRot pr) sh - _prDraw = PropDrawFlatTranslate $ noPic sh + _prDraw = noPic sh , _prToggle = True } diff --git a/src/Dodge/Placement/Instance/LightSource/Cover.hs b/src/Dodge/Placement/Instance/LightSource/Cover.hs deleted file mode 100644 index c3079bbb2..000000000 --- a/src/Dodge/Placement/Instance/LightSource/Cover.hs +++ /dev/null @@ -1,43 +0,0 @@ -module Dodge.Placement.Instance.LightSource.Cover where - -import Dodge.Data.Prop -import Dodge.Data.WorldEffect -import Dodge.Default.Prop -import Geometry.Data - -lampCover :: Float -> Prop -lampCover h = - ShapeProp - { _prPos = V2 0 0 - , _prID = 0 - , _prRot = 0 - , _prUpdate = PropRotate 0.15 - , _prDraw = PropLampCover h - , _prToggle = True - } - -lampCoverWhen :: WdBl -> Point2 -> Float -> Prop -lampCoverWhen cond pos h = - defaultProp - { _prPos = pos - , _prUpdate = PropSetToggleAnd cond (PropRotate 0.15) - , _prDraw = PropLampCover h - , _prToggle = True - } - -doubleLampCover :: Float -> Prop -doubleLampCover h = - defaultProp - { _prPos = V2 0 0 - , _prUpdate = PropRotate 0.15 - , _prDraw = PropDoubleLampCover h - } - --- on the current (27/9/21) version of shadow stencilling, this glitches --- slightly when the shadow rotates towards the screen -verticalLampCover :: Float -> Prop -verticalLampCover h = - defaultProp - { _prUpdate = PropRotate 0.15 - , _prDraw = PropVerticalLampCover h - } diff --git a/src/Dodge/Prop/Draw.hs b/src/Dodge/Prop/Draw.hs index 33ab0cfee..f5392039d 100644 --- a/src/Dodge/Prop/Draw.hs +++ b/src/Dodge/Prop/Draw.hs @@ -1,11 +1,12 @@ {-# LANGUAGE LambdaCase #-} + module Dodge.Prop.Draw ( propSPic, debrisSPic, ) where -import Dodge.Block.Debris import Control.Lens +import Dodge.Block.Debris import Dodge.Data.Prop import Geometry.Data import Geometry.Polygon @@ -15,21 +16,17 @@ import Shape import ShapePicture propSPic :: Prop -> SPic -propSPic pr = drawProp (_prDraw pr) pr +propSPic pr = drawProp pr debrisSPic :: Debris -> SPic debrisSPic db = translateSP (_dbPos db) . overPosSP (Q.rotate (_dbRot db)) $ - case db ^. dbType of + case db ^. dbType of Gib x col -> noPic $ drawGib x col BlockDebris m -> noPic . colorSH m $ cubeShape 4 -drawProp :: PropDraw -> Prop -> SPic -drawProp = \case - PropDoubleLampCover h -> drawDoubleLampCover h - PropVerticalLampCover h -> drawVerticalLampCover h - PropLampCover h -> drawLampCover h - PropDrawFlatTranslate x -> \pr -> - uncurryV translateSPxy (_prPos pr) $ rotateSP (_prRot pr) x +drawProp :: Prop -> SPic +drawProp pr = + uncurryV translateSPxy (_prPos pr) $ rotateSP (_prRot pr) $ pr ^. prDraw drawGib :: Float -> Color -> Shape drawGib x col = flesh <> skin @@ -42,55 +39,3 @@ drawGib x col = flesh <> skin translateSH (V3 1 1 (1 - x)) baseCube baseCube = upperPrismPoly Small Typical (2 * x) $ square x -drawLampCover :: Float -> Prop -> SPic -drawLampCover h pr = - noPic - ( translateSHz (h -2.5) . uncurryV translateSHxy (_prPos pr) $ - rotateSH (_prRot pr) $ - mconcat - [ aface 1 2 (-1) - , aface 1 (-1) 2 - , aface 2 2 (-1) - , aface 2 (-1) 2 - , upperPrismPoly Small Essential 1 [V2 2 2, V2 (-1) 2, V2 2 (-1)] - ] - ) - where - aface ztran s w = translateSHz ztran . upperPrismPoly Small Essential 1 $ rectNSWE 3 s w 3 - -drawVerticalLampCover :: Float -> Prop -> SPic -drawVerticalLampCover h pr = - noPic - ( translateSHz h . uncurryV translateSHxy (_prPos pr) - . rotateSHx (_prRot pr) - . translateSHz (-3) - . upperPrismPoly Small Essential 1 - $ rectNSWE 2 (-2) (-5) 5 - ) - ---drawMovingShape :: Prop -> SPic -> SPic ---drawMovingShape pr = --- translateSPz (_prPosZ pr) --- . uncurryV translateSPxy (_prPos pr) --- . overPosSP (Q.rotate (_prQuat pr)) - ---drawMovingShapeCol :: Prop -> Shape -> SPic ---drawMovingShapeCol pr = --- noPic --- . translateSHz (_prPosZ pr) --- . uncurryV translateSHxy (_prPos pr) --- . overPosSH (Q.rotate (_prQuat pr)) --- . colorSH (_prColor pr) - -drawDoubleLampCover :: Float -> Prop -> SPic -drawDoubleLampCover h pr = - noPic - ( translateSHz (h -2.5) . uncurryV translateSHxy (_prPos pr) $ - rotateSH (_prRot pr) $ - mconcat - [ upperPrismPoly Small Essential 5 $ rectNSWE 6 5 (-6) 6 - , upperPrismPoly Small Essential 5 $ rectNSWE (-5) (-6) (-6) 6 - , upperPrismPoly Small Essential 1 [V2 0 (-1), V2 6 5, V2 (-6) 5] - , upperPrismPoly Small Essential 1 [V2 0 1, V2 (-6) (-5), V2 6 (-5)] - ] - ) diff --git a/src/Dodge/Room/LongDoor.hs b/src/Dodge/Room/LongDoor.hs index 531bdf96d..7527f9150 100644 --- a/src/Dodge/Room/LongDoor.hs +++ b/src/Dodge/Room/LongDoor.hs @@ -52,8 +52,8 @@ twinSlowDoorRoom w h x = [ pContID (PS (V2 0 (h -5)) pi) (PutButton $ makeButton col NoWorldEffect) $ \btid -> jsps0J (putSlideDr (thedoor btid) thewall 1 (V2 x 1) (V2 x h)) $ ps0 (putSlideDr (thedoor btid) thewall 1 (V2 (- x) 1) (V2 (- x) h)) $ - \did -> jps0' (PutLS (lsColPos (V3 0.75 0 0) (V3 0 (h -1) lampheight))) $ - \lspl -> jsps0 $ PutProp $ addColorChange (fromJust $ _plMID lspl) did $ lampCoverWhen (WdBlDoorMoving did) (V2 0 (h -1)) lampheight + \_ -> jps0' (PutLS (lsColPos (V3 0.75 0 0) (V3 0 (h -1) lampheight))) $ + \_ -> Nothing -- jsps0 $ PutProp $ addColorChange (fromJust $ _plMID lspl) did $ lampCoverWhen (WdBlDoorMoving did) (V2 0 (h -1)) lampheight ] , _rmBound = ps , _rmName = "twinSlowDoorRoom" @@ -63,13 +63,6 @@ twinSlowDoorRoom w h x = --thewall = switchWallCol red thewall = defaultDoorWall wlSpeed = 0.5 - addColorChange lsid drid = - over prUpdate $ - PropUpdateAnd $ - PropUpdateIf - (WdBlDoorMoving drid) - (PropUpdateLS lsid (PrWdLsSetColor (V3 8 0 0))) - (PropUpdateLS lsid (PrWdLsSetColor 0.7)) lampheight = 41 ps = [ rectNSWE h 0 (- w) w diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 7a07732a5..c5c1b519d 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -46,7 +46,8 @@ tutAnoTree = do [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor , return $ tToBTree "cor" $ return $ cleatOnward corridor - , return $ tToBTree "cor" $ return $ cleatOnward airlock90 +-- , return $ tToBTree "cor" $ return $ cleatOnward airlock90 + , return $ tToBTree "cor" $ return $ cleatOnward (twinSlowDoorRoom 80 200 40) , return $ tToBTree "cor" $ return $ cleatOnward corridor , return $ tToBTree "cor" $ return $ cleatOnward airlock0 , return $ tToBTree "cor" $ return $ cleatOnward corridor @@ -62,7 +63,6 @@ tutAnoTree = do , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor --- , return $ tToBTree "cor" $ return $ cleatOnward (twinSlowDoorRoom 80 200 40) -- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor , return $ tToBTree "cor" $ return $ cleatOnward corridor diff --git a/tags b/tags index 474918612..f08e4842b 100644 --- a/tags +++ b/tags @@ -127,7 +127,7 @@ BlConst src/Dodge/Data/BlBl.hs 11;" C BlId src/Dodge/Data/BlBl.hs 12;" C BlNegate src/Dodge/Data/BlBl.hs 10;" C Block src/Dodge/Data/Block.hs 20;" t -BlockDebris src/Dodge/Data/Prop.hs 29;" C +BlockDebris src/Dodge/Data/Prop.hs 26;" C BlockDegradeSound src/Dodge/Data/SoundOrigin.hs 30;" C BlockPart src/Dodge/Data/Wall/Structure.hs 14;" C BlockedLink src/Dodge/Data/Room.hs 50;" C @@ -305,8 +305,8 @@ DamageHitSound src/Dodge/Data/SoundOrigin.hs 40;" C DamageLaser src/Dodge/Data/Laser.hs 15;" C DamageSensor src/Dodge/Data/Machine/Sensor.hs 19;" t DamageType src/Dodge/Data/Damage/Type.hs 3;" t -Debris src/Dodge/Data/Prop.hs 31;" t -DebrisChunk src/Dodge/Data/Prop.hs 31;" C +Debris src/Dodge/Data/Prop.hs 28;" t +DebrisChunk src/Dodge/Data/Prop.hs 28;" C DebrisType src/Dodge/Data/Prop.hs 24;" t DebugBool src/Dodge/Data/Config.hs 66;" t DebugItem src/Dodge/Data/Universe.hs 57;" t @@ -984,10 +984,10 @@ Polyhedron src/Polyhedra/Data.hs 13;" C PosInf src/Dodge/Data/CardinalPoint.hs 36;" C PosRooms src/Dodge/Tree/Shift.hs 28;" t Posture src/Dodge/Data/Creature/Stance.hs 33;" t -PrWdLsId src/Dodge/Data/Prop.hs 65;" C -PrWdLsLs src/Dodge/Data/Prop.hs 64;" t -PrWdLsSetColor src/Dodge/Data/Prop.hs 67;" C -PrWdLsSetPosition src/Dodge/Data/Prop.hs 66;" C +PrWdLsId src/Dodge/Data/Prop.hs 59;" C +PrWdLsLs src/Dodge/Data/Prop.hs 58;" t +PrWdLsSetColor src/Dodge/Data/Prop.hs 61;" C +PrWdLsSetPosition src/Dodge/Data/Prop.hs 60;" C PreloadData src/Data/Preload.hs 10;" t PrimitiveMode src/Shader/Data.hs 99;" t PrintMaterial src/Dodge/Data/AmmoType.hs 12;" C @@ -997,22 +997,21 @@ ProjectileParams src/Dodge/Data/Item/Use.hs 51;" C ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 36;" C ProjectileType src/Dodge/Data/Projectile.hs 30;" t Prop src/Dodge/Data/Prop.hs 15;" t -PropDoubleLampCover src/Dodge/Data/Prop.hs 44;" C -PropDraw src/Dodge/Data/Prop.hs 41;" t -PropDrawFlatTranslate src/Dodge/Data/Prop.hs 43;" C -PropDrawSPic src/Dodge/Data/Prop.hs 42;" C -PropLampCover src/Dodge/Data/Prop.hs 46;" C -PropRotate src/Dodge/Data/Prop.hs 54;" C -PropSetToggleAnd src/Dodge/Data/Prop.hs 55;" C -PropUpdate src/Dodge/Data/Prop.hs 51;" t -PropUpdateAnd src/Dodge/Data/Prop.hs 53;" C -PropUpdateId src/Dodge/Data/Prop.hs 52;" C -PropUpdateIf src/Dodge/Data/Prop.hs 60;" C -PropUpdateLS src/Dodge/Data/Prop.hs 57;" C -PropUpdatePosition src/Dodge/Data/Prop.hs 58;" C -PropUpdateWhen src/Dodge/Data/Prop.hs 59;" C -PropUpdates src/Dodge/Data/Prop.hs 56;" C -PropVerticalLampCover src/Dodge/Data/Prop.hs 45;" C +PropDoubleLampCover src/Dodge/Data/Prop.hs 38;" C +PropDraw src/Dodge/Data/Prop.hs 36;" t +PropDrawFlatTranslate src/Dodge/Data/Prop.hs 37;" C +PropLampCover src/Dodge/Data/Prop.hs 40;" C +PropRotate src/Dodge/Data/Prop.hs 48;" C +PropSetToggleAnd src/Dodge/Data/Prop.hs 49;" C +PropUpdate src/Dodge/Data/Prop.hs 45;" t +PropUpdateAnd src/Dodge/Data/Prop.hs 47;" C +PropUpdateId src/Dodge/Data/Prop.hs 46;" C +PropUpdateIf src/Dodge/Data/Prop.hs 54;" C +PropUpdateLS src/Dodge/Data/Prop.hs 51;" C +PropUpdatePosition src/Dodge/Data/Prop.hs 52;" C +PropUpdateWhen src/Dodge/Data/Prop.hs 53;" C +PropUpdates src/Dodge/Data/Prop.hs 50;" C +PropVerticalLampCover src/Dodge/Data/Prop.hs 39;" C ProxSensor src/Dodge/Data/Machine/Sensor.hs 25;" C ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 34;" t ProximitySensor src/Dodge/Data/Machine/Sensor.hs 25;" t @@ -1521,7 +1520,7 @@ _avatarMaterial src/Dodge/Data/Creature/Misc.hs 61;" f _avatarPulse src/Dodge/Data/Creature/Misc.hs 60;" f _barrelShader src/Data/Preload/Render.hs 23;" f _barrelType src/Dodge/Data/Creature/Misc.hs 71;" f -_bdColor src/Dodge/Data/Prop.hs 29;" f +_bdColor src/Dodge/Data/Prop.hs 26;" f _bdMaxX src/Dodge/Data/Bounds.hs 12;" f _bdMaxY src/Dodge/Data/Bounds.hs 14;" f _bdMinX src/Dodge/Data/Bounds.hs 11;" f @@ -1692,11 +1691,11 @@ _cwgRoomClipping src/Dodge/Data/CWorld.hs 40;" f _cwgSeed src/Dodge/Data/CWorld.hs 41;" f _cwgWorldBounds src/Dodge/Data/CWorld.hs 38;" f _cylinderSize src/Shape/Data.hs 14;" f -_dbPos src/Dodge/Data/Prop.hs 32;" f -_dbRot src/Dodge/Data/Prop.hs 35;" f -_dbSpin src/Dodge/Data/Prop.hs 36;" f -_dbType src/Dodge/Data/Prop.hs 33;" f -_dbVel src/Dodge/Data/Prop.hs 34;" f +_dbPos src/Dodge/Data/Prop.hs 29;" f +_dbRot src/Dodge/Data/Prop.hs 32;" f +_dbSpin src/Dodge/Data/Prop.hs 33;" f +_dbType src/Dodge/Data/Prop.hs 30;" f +_dbVel src/Dodge/Data/Prop.hs 31;" f _debris src/Dodge/Data/LWorld.hs 99;" f _debugFunction src/Dodge/Data/Universe.hs 59;" f _debugMessage src/Dodge/Data/Universe.hs 58;" f @@ -1797,11 +1796,9 @@ _floorItems src/Dodge/Data/LWorld.hs 125;" f _floorShader src/Data/Preload/Render.hs 44;" f _floorVBO src/Data/Preload/Render.hs 43;" f _foreShapes src/Dodge/Data/LWorld.hs 130;" f -_fsDir src/Dodge/Data/ForegroundShape.hs 15;" f -_fsID src/Dodge/Data/ForegroundShape.hs 13;" f -_fsPos src/Dodge/Data/ForegroundShape.hs 14;" f -_fsRad src/Dodge/Data/ForegroundShape.hs 16;" f -_fsSPic src/Dodge/Data/ForegroundShape.hs 17;" f +_fsDir src/Dodge/Data/ForegroundShape.hs 14;" f +_fsPos src/Dodge/Data/ForegroundShape.hs 13;" f +_fsSPic src/Dodge/Data/ForegroundShape.hs 15;" f _fullscreenShader src/Data/Preload/Render.hs 20;" f _futureWorlds src/Dodge/Data/World.hs 67;" f _futureWorlds src/Dodge/Data/World.hs 73;" f @@ -1816,8 +1813,8 @@ _getSoundID src/Sound/Data.hs 30;" f _gfConstant src/Dodge/Data/GenFloat.hs 9;" f _gfMax src/Dodge/Data/GenFloat.hs 10;" f _gfMin src/Dodge/Data/GenFloat.hs 10;" f -_gibColor src/Dodge/Data/Prop.hs 27;" f -_gibSize src/Dodge/Data/Prop.hs 26;" f +_gibColor src/Dodge/Data/Prop.hs 25;" f +_gibSize src/Dodge/Data/Prop.hs 25;" f _gnHitEffect src/Dodge/Data/Projectile.hs 31;" f _grBound src/Dodge/GameRoom.hs 15;" f _grDir src/Dodge/GameRoom.hs 17;" f @@ -2491,7 +2488,7 @@ addGirderNS' src/Dodge/Room/Modify/Girder.hs 55;" f addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f -addPane src/Dodge/Placement/PlaceSpot.hs 180;" f +addPane src/Dodge/Placement/PlaceSpot.hs 176;" f addPointPolygon src/Geometry/Polygon.hs 134;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f @@ -2614,7 +2611,7 @@ bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 516;" f bangRod src/Dodge/Item/Held/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f -barPP src/Dodge/Room/Foreground.hs 236;" f +barPP src/Dodge/Room/Foreground.hs 231;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f barrelShape src/Dodge/Render/ShapePicture.hs 80;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 406;" f @@ -3021,7 +3018,7 @@ deadRot src/Dodge/Creature/Picture.hs 84;" f deadScalp src/Dodge/Creature/Picture.hs 81;" f deadUpperBody src/Dodge/Creature/Picture.hs 113;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f -debrisSPic src/Dodge/Prop/Draw.hs 20;" f +debrisSPic src/Dodge/Prop/Draw.hs 21;" f debrisSize src/Dodge/Block/Debris.hs 84;" f debugEvent src/Dodge/Debug.hs 36;" f debugEvents src/Dodge/Debug.hs 21;" f @@ -3271,7 +3268,7 @@ drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f drawForceField src/Dodge/Wall/Draw.hs 13;" f drawGapPlus src/Dodge/Render/Picture.hs 280;" f -drawGib src/Dodge/Prop/Draw.hs 37;" f +drawGib src/Dodge/Prop/Draw.hs 38;" f drawHUD src/Dodge/Render/HUD.hs 51;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 19;" f drawInspectWall src/Dodge/Debug/Picture.hs 253;" f @@ -3282,7 +3279,7 @@ drawItemConnections src/Dodge/Render/HUD.hs 319;" f drawJumpDown src/Dodge/Render/Picture.hs 192;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLabelledList src/Dodge/Render/List.hs 212;" f -drawLampCover src/Dodge/Prop/Draw.hs 48;" f +drawLampCover src/Dodge/Prop/Draw.hs 49;" f drawLaser src/Dodge/Laser/Update.hs 29;" f drawLightSource src/Dodge/LightSource/Draw.hs 7;" f drawLinearShockwave src/Dodge/LinearShockwave/Draw.hs 10;" f @@ -3307,7 +3304,7 @@ drawPathing src/Dodge/Debug/Picture.hs 403;" f drawPlus src/Dodge/Render/Picture.hs 165;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f -drawProp src/Dodge/Prop/Draw.hs 26;" f +drawProp src/Dodge/Prop/Draw.hs 27;" f drawProxSensor src/Dodge/Machine/Draw.hs 37;" f drawPulseBall src/Dodge/Render/ShapePicture.hs 63;" f drawQuitTerminal src/Dodge/Render/Picture.hs 147;" f @@ -3585,9 +3582,9 @@ getWallPathing src/Dodge/Wall/Pathing.hs 7;" f getWallSPic src/Dodge/Render/Walls.hs 53;" f getWindowSize src/Dodge/WindowSize.hs 5;" f gimbal src/Dodge/Item/Scope.hs 153;" f -girder src/Dodge/Room/Foreground.hs 211;" f -girderV src/Dodge/Room/Foreground.hs 182;" f -girderV' src/Dodge/Room/Foreground.hs 157;" f +girder src/Dodge/Room/Foreground.hs 206;" f +girderV src/Dodge/Room/Foreground.hs 177;" f +girderV' src/Dodge/Room/Foreground.hs 153;" f girderZ src/Dodge/Room/Foreground.hs 108;" f glNamedBufferSubDataH src/Shader/Bind.hs 53;" f glassLesson src/Dodge/Room/GlassLesson.hs 23;" f @@ -4137,7 +4134,7 @@ metalPlate src/Dodge/Item/Craftable.hs 35;" f mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f -midBounds src/Dodge/Room/Foreground.hs 151;" f +midBounds src/Dodge/Room/Foreground.hs 150;" f midChasm src/Dodge/Room/Tutorial.hs 172;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f @@ -4200,16 +4197,16 @@ muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 678;" f muzzlePos src/Dodge/HeldUse.hs 769;" f muzzleRandPos src/Dodge/HeldUse.hs 778;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 188;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 191;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 198;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 184;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 194;" f mvGust src/Dodge/Update.hs 784;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 233;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 229;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 185;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 181;" f myIntersectLineLine src/Geometry/Intersect.hs 198;" f myIntersectSegSeg src/Geometry/Intersect.hs 176;" f myParams src/Dodge/Combine/Graph.hs 101;" f @@ -4346,20 +4343,20 @@ pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 20;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 53;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 201;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 197;" f plNew src/Dodge/Base/NewID.hs 19;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f -placeChasm src/Dodge/Placement/PlaceSpot.hs 159;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 228;" f +placeChasm src/Dodge/Placement/PlaceSpot.hs 155;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 224;" f placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 43;" f placeSpot src/Dodge/Placement/PlaceSpot.hs 34;" f placeSpotID src/Dodge/Placement/PlaceSpot.hs 105;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 68;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 175;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 171;" f plainRegex src/Dodge/DisplayInventory.hs 189;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4482,7 +4479,7 @@ prismPoly src/Shape.hs 59;" f projV src/Geometry/Vector.hs 177;" f projV3 src/Geometry/Vector3D.hs 127;" f propLSThen src/Dodge/Placement/Instance/LightSource.hs 29;" f -propSPic src/Dodge/Prop/Draw.hs 17;" f +propSPic src/Dodge/Prop/Draw.hs 18;" f propSetToggleAnd src/Dodge/Prop/Update.hs 39;" f propUpdateIf src/Dodge/Prop/Update.hs 23;" f propUpdatePosition src/Dodge/Prop/Update.hs 28;" f @@ -4531,8 +4528,8 @@ putTerminal src/Dodge/Placement/Instance/Terminal.hs 54;" f putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 22;" f putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 17;" f putTurret src/Dodge/Placement/Instance/Turret.hs 11;" f -putWireEnd src/Dodge/Wire.hs 31;" f -putWireStart src/Dodge/Wire.hs 34;" f +putWireEnd src/Dodge/Wire.hs 29;" f +putWireStart src/Dodge/Wire.hs 32;" f qID src/Quaternion.hs 58;" f qToAng src/Quaternion.hs 55;" f qToV2 src/Quaternion.hs 52;" f @@ -4544,7 +4541,6 @@ qz src/Quaternion.hs 67;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f -radBounds src/Dodge/Room/Foreground.hs 154;" f radToDeg src/Geometry/Vector.hs 123;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f @@ -4858,8 +4854,8 @@ setupWorldBounds src/Dodge/Layout.hs 116;" f sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f shadVBOptr src/Shader.hs 40;" f shaderTypeExt src/Shader/Compile.hs 172;" f -shapeBounds src/Dodge/Room/Foreground.hs 148;" f -shapePoints src/Dodge/Room/Foreground.hs 145;" f +shapeBounds src/Dodge/Room/Foreground.hs 147;" f +shapePoints src/Dodge/Room/Foreground.hs 144;" f shapeVerxAttributes src/Shape/Parameters.hs 13;" f shapeVerxSize src/Shape/Parameters.hs 10;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f @@ -5477,7 +5473,7 @@ vertTrans src/MatrixHelper.hs 87;" f verticalLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 38;" f verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f -verticalWire src/Dodge/Wire.hs 24;" f +verticalWire src/Dodge/Wire.hs 23;" f vgunMuzzles src/Dodge/HeldUse.hs 341;" f viewBoundaries src/Dodge/Debug/Picture.hs 327;" f viewClipBounds src/Dodge/Debug/Picture.hs 336;" f