diff --git a/ghcidOutput b/ghcidOutput index 6a9b0bba0..5f118b5ba 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,5 +1,12 @@ -/home/justin/Haskell/loop/src/Shader/Parameters.hs:9:1-19: warning: [-Wunused-imports] - The import of ‘Picture.Data’ is redundant - | -9 | import Picture.Data - | ^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Item/Held.hs:(26,23)-(68,28): warning: [-Wincomplete-patterns] + Pattern match(es) are non-exhaustive + In a case alternative: Patterns not matched: FORCEFIELDGUN + | +26 | itemFromHeldType ht = case ht of + | ^^^^^^^^^^... +/home/justin/Haskell/loop/src/Dodge/HeldUse.hs:(186,66)-(194,53): warning: [-Wincomplete-patterns] + Pattern match(es) are non-exhaustive + In a case alternative: Patterns not matched: MuzzleForceField + | +186 | removeAmmoFromMag x mid cr . makeMuzzleFlare mz itmtree cr $ case _mzEffect mz of + | ^^^^^^^^^^^^^^^^^^^^... diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 3f11a7adb..3f0240a74 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -122,8 +122,7 @@ inventoryX c = case c of , makeTypeCraftNum 2 PIPE ] 'B' -> - [ forceFieldGun - , wristArmour + [ wristArmour , wristArmour , autoRifle , tinMag diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index 69ecd3af9..64229c6fb 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -164,7 +164,6 @@ data HeldItemType | POISONSPRAYER | DRONELAUNCHER | SHATTERGUN - | FORCEFIELDGUN | HELDDETECTOR Detector | TORCH | FLATSHIELD diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 1f00f51df..5b223e85c 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -191,7 +191,6 @@ useLoadedAmmo itmtree cr (cme, w) (mzid, Just (mz, x, magtree)) = (,) (cme & cme MuzzleLauncher -> createProjectile magtree mz itmtree cr w MuzzleNozzle{} -> useGasParams mid mz itm cr $ walkNozzle mzid mz itm cr w MuzzleShatter -> shootShatter itm cr w - MuzzleForceField -> useForceFieldGun itm cr w MuzzleDetector -> itemDetectorEffect itm cr w where mid = magtree ^? ldtValue . itLocation . ilInvID @@ -444,25 +443,6 @@ shootTeslaArc itm cr mz w = pos = _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm) dir = _crDir cr + _mzRot mz --- I believe because the targeting returns to nothing straight after you release --- the rmb, it is possible for this to do nothing --- TODO investigate more and fix -useForceFieldGun :: Item -> Creature -> World -> World -useForceFieldGun _ _ = id - ---useForceFieldGun itm cr w = fromMaybe w $ do --- a <- cr ^? crTargeting . ctPos . _Just --- let mwp = mouseWorldPos (w ^. input) (w ^. wCam) --- b = if dist a mwp < 100 then mwp else a +.+ 100 *.* normalizeV (mwp -.- a) --- wlline = (a, b) --- return $ --- w --- & cWorld . lWorld . walls %~ IM.insertWith (\_ x -> x) i forceField{_wlID = i} --- & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID (_itLocation itm)) . itParams . paramMID ?~ i --- & moveWallIDUnsafe i wlline --- where --- i = fromMaybe (IM.newKey (_walls (_lWorld (_cWorld w)))) $ itm ^? itParams . paramMID . _Just - determineProjectileTracking :: LabelDoubleTree ComposeLinkType Item -> LabelDoubleTree ComposeLinkType Item -> diff --git a/src/Dodge/Item/Held.hs b/src/Dodge/Item/Held.hs index bb6d4334c..58480a2be 100644 --- a/src/Dodge/Item/Held.hs +++ b/src/Dodge/Item/Held.hs @@ -64,6 +64,5 @@ itemFromHeldType ht = case ht of -- REMOTELAUNCHER -> remoteLauncher POISONSPRAYER -> poisonSprayer DRONELAUNCHER -> undefined - FORCEFIELDGUN -> forceFieldGun HELDDETECTOR d -> clickDetector d FLATSHIELD -> flatShield diff --git a/src/Dodge/Item/Held/Utility.hs b/src/Dodge/Item/Held/Utility.hs index a125f433e..d8b8597c4 100644 --- a/src/Dodge/Item/Held/Utility.hs +++ b/src/Dodge/Item/Held/Utility.hs @@ -31,22 +31,6 @@ torch = -- & itUse . heldAim . aimHandlePos .~ 5 & itUse . heldAim . aimMuzzles . ix 0 . mzPos . _x .~ 10 -forceFieldGun :: Item -forceFieldGun = - defaultHeldItem --- & itUse . useTargeting ?~ TargetRBLine --- & itType . iyModules . at ModTarget ?~ TARGET TargetRBLine - & itParams .~ ParamMID Nothing --- & itUse . heldUse .~ HeldForceField --useForceFieldGun - & itUse . heldDelay .~ NoDelay - -- & itUse . heldMods .~ AmmoHammerTimeUseOneMod -- this is slightly different --- & itUse . heldMods .~ ForceFieldMod -- this is slightly different - -- than the list below - --[ hammerCheckI , ammoCheckI , useAmmoAmount 1] - & itType .~ HELD FORCEFIELDGUN - & itUse . heldAmmoTypes .~ singleAmmo ElectricalAmmo - & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleForceField - {- | Sends out pulses that display walls. -} diff --git a/src/Dodge/LockAndKey.hs b/src/Dodge/LockAndKey.hs index 013ba96d6..c67c24c2d 100644 --- a/src/Dodge/LockAndKey.hs +++ b/src/Dodge/LockAndKey.hs @@ -90,13 +90,6 @@ itemRooms = [ rc [sniperRifle] ] ) - , - ( HELD FORCEFIELDGUN - , join $ - takeOne - [ rc [forceFieldGun] - ] - ) , ( HELD $ KEYCARD 0 , join $ diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 97b461dad..b3e1fccfd 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -59,8 +59,8 @@ doDrawing' win pdata u = do shadV = _pictureShaders pdata nFls = w ^. cWorld . numberFloorVerxs -- bind as much data into vbos as feasible at this point - -- count mutable vectors setup (what is the 6 here?) - layerCounts <- UMV.replicate (numLayers * 6) 0 + -- count mutable vectors setup + pokeCounts <- UMV.replicate (numLayers * numShads) 0 -- attempt to poke in parallel let wswp = wallSPics <> worldSPic cfig u ws = wswp ^. _1 @@ -70,7 +70,7 @@ doDrawing' win pdata u = do (\_ a b -> return (a, b)) ( pokeLayVerxs shadV - layerCounts + pokeCounts wp ) ( pokeWallsWindows @@ -94,7 +94,7 @@ doDrawing' win pdata u = do (V.fromList $ w ^. cWorld . lWorld . clouds) --(sortOn (^. clPos . _3) $ w ^. cWorld . lWorld . clouds) -- bind wall points, silhouette data, surface geometry - bufferShaderLayers shadV layerCounts + bufferShaderLayers shadV pokeCounts mapM_ (uncurry bufferPokedVBO) [ (pdata ^. vboWindows, nWins) @@ -219,9 +219,9 @@ doDrawing' win pdata u = do glDepthFunc GL_LESS glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA glDepthMask GL_FALSE - renderLayer BloomNoZWrite shadV layerCounts + renderLayer BloomNoZWrite shadV pokeCounts glDepthMask GL_TRUE - renderLayer BloomLayer shadV layerCounts + renderLayer BloomLayer shadV pokeCounts --setup downscale viewport for blurring bloom --setViewportSize (round winx `div` (2 * resFact)) (round winy `div` (2 * resFact)) setViewport _graphics_downsize_resolution cfig @@ -253,7 +253,7 @@ doDrawing' win pdata u = do GL_COLOR 0 ptr --- renderLayer MidLayer shadV layerCounts +-- renderLayer MidLayer shadV pokeCounts glUseProgram (pdata ^. cloudShader . shaderUINT) glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName glDrawElements @@ -372,11 +372,11 @@ doDrawing' win pdata u = do --glDepthMask GL_TRUE glEnable GL_BLEND glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA - renderLayer DebugLayer shadV layerCounts + renderLayer DebugLayer shadV pokeCounts glBindBufferBase GL_UNIFORM_BUFFER 0 (pdata ^. matUBO) withArray (scaleMatrix (2 / windowXFloat cfig) (2 / windowYFloat cfig)) $ \ptr -> glNamedBufferSubData (pdata ^. matUBO) 0 64 ptr - renderLayer FixedCoordLayer shadV layerCounts + renderLayer FixedCoordLayer shadV pokeCounts SDL.glSwapWindow win getDistortions :: Configuration -> World -> [Distortion] diff --git a/src/Shader/Compile.hs b/src/Shader/Compile.hs index fd05133d9..702d65030 100644 --- a/src/Shader/Compile.hs +++ b/src/Shader/Compile.hs @@ -5,13 +5,9 @@ module Shader.Compile ( makeShaderVBO, makeShaderUsingVBO, makeByteStringShaderUsingVAO, - makeStaticShader, makeShaderUsingVAO, setupVAOUsingVBO, - setupVAOvbo, setupEBO, - setupVertexAttribPointer, - makeSourcedShader, toFloatVAs, setupStaticVBOVAO ) where @@ -29,8 +25,6 @@ import Graphics.GL.Core45 import Shader.Data import Shader.Parameters ---import Graphics.GL.Core45 - {- | Compiles a full shader found within the shader directory. The shader is made up of files begining with the inputted string with extensions .vert, .geom etc. @@ -70,10 +64,7 @@ makeShaderEBO s shaderlist sizes pm vbo = do shad <- makeShaderUsingVBO s shaderlist sizes pm vbo ebo <- setupEBO (shad ^. shaderVAO) glVertexArrayElementBuffer (shad ^. shaderVAO . vaoName) (ebo ^. eboName) - return - ( shad - , ebo - ) + return (shad, ebo) makeShaderUsingVBO :: -- | First part of the name of the shader @@ -92,6 +83,7 @@ makeShaderUsingVBO s shaderlist sizes pm vbo = do setupVBO :: Int -> IO VBO setupVBO vertexsize = do vboname <- mglCreate glCreateBuffers + -- unclear whether this should also be multiplied by floatSize thePtr <- mallocBytes (vertexsize * numDrawableVertices) -- Allocate space glNamedBufferData @@ -120,8 +112,6 @@ setupStaticVBOVAO vas vdata = withArrayLen vdata $ \i ptr -> do } vao <- setupVAOUsingVBO vas vbo return (vbo,vao) - - setupVBOStatic :: Int -> IO VBO setupVBOStatic vertexsize = do @@ -170,33 +160,6 @@ makeShaderUsingVAO s shaderlist pm theVAO = do , _shaderPrimitive = pm } --- this should be changed to some FIXED STORAGE SHADER --- I cannot think of any other reason to have it -{- | -Compiles a full shader found within the shader directory. -The shader is made up of files begining with the inputted string with extensions .vert, .geom etc. --} -makeStaticShader :: - Storable a => - -- | First part of the name of the shader - String -> - -- | shader types - [GLenum] -> - [VertexAttribute] -> - [a] -> - PrimitiveMode -> - IO Shader -makeStaticShader s shaderlist vas vdata pm = do - prog <- makeSourcedShader s shaderlist - (_, vao) <- setupStaticVBOVAO vas vdata - return - ( Shader - { _shaderUINT = prog - , _shaderVAO = vao - , _shaderPrimitive = pm - } - ) - {- | Compile shader and get its uniform locations. supposes the shader code is in the shader folder, with the string names followed by .vert/.geom/.frag. @@ -213,16 +176,6 @@ shaderTypeExt GL_FRAGMENT_SHADER = ".frag" shaderTypeExt GL_COMPUTE_SHADER = ".comp" shaderTypeExt _ = undefined -setupVAOvbo :: [VertexAttribute] -> Int -> GLuint -> IO VAO -setupVAOvbo sizes strd vbo = do - vaoname <- mglCreate glCreateVertexArrays - glBindVertexArray vaoname - setupVertexAttribs vbo vaoname sizes (fromIntegral strd * fromIntegral floatSize) - return $ - VAO - { _vaoName = vaoname - } - setupVAOUsingVBO :: [VertexAttribute] -> VBO -> IO VAO setupVAOUsingVBO vas vbo = do let strd = vbo ^. vboVertexBytes diff --git a/src/Shader/Parameters.hs b/src/Shader/Parameters.hs index d0a1e3887..b2798c154 100644 --- a/src/Shader/Parameters.hs +++ b/src/Shader/Parameters.hs @@ -6,7 +6,7 @@ module Shader.Parameters , glushortSize , numGLushort ) where -import Picture.Data +--import Picture.Data import Graphics.GL.Core45 import Foreign @@ -30,10 +30,12 @@ numGLushort :: Int numGLushort = fromIntegral (maxBound :: GLushort) + 1 {-# INLINE numGLushort #-} +-- why 6? numDrawableVertices :: Int {-# INLINE numDrawableVertices #-} numDrawableVertices = 6 * numSubElements +-- why this number? numSubElements :: Int {-# INLINE numSubElements #-} numSubElements = 65536 diff --git a/tags b/tags index d767bccc5..488b5f78f 100644 --- a/tags +++ b/tags @@ -76,7 +76,7 @@ ArbitraryImpulseEffect src/Dodge/Data/ActionPlan.hs 48;" C ArbitraryImpulseFunction src/Dodge/Data/ActionPlan.hs 46;" C Arc src/Dodge/Tesla/Arc.hs 1;" m Arc src/Picture/Arc.hs 1;" m -ArcShad src/Picture/Data.hs 37;" C +ArcShad src/Picture/Data.hs 38;" C ArcStep src/Dodge/Data/ArcStep.hs 14;" t ArcStep src/Dodge/ArcStep.hs 1;" m ArcStep src/Dodge/Data/ArcStep.hs 6;" m @@ -620,7 +620,7 @@ EighthRes src/Dodge/Data/Config.hs 95;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricalAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 43;" C Electronics src/Dodge/Data/Material.hs 11;" C -EllShad src/Picture/Data.hs 38;" C +EllShad src/Picture/Data.hs 39;" C Enable_debug src/Dodge/Data/Config.hs 68;" C EncircleFlock src/Dodge/Data/Creature/State.hs 37;" C EndArc src/Dodge/Data/ArcStep.hs 22;" C @@ -1385,7 +1385,7 @@ Perception src/Dodge/Creature/Perception.hs 2;" m Perception src/Dodge/Data/Creature/Perception.hs 6;" m PerturbTillBreakPreviousArc src/Dodge/Data/Item/Params.hs 34;" C PickOnePlacement src/Dodge/Data/GenWorld.hs 87;" C -Picture src/Picture/Data.hs 44;" t +Picture src/Picture/Data.hs 46;" t Picture src/Dodge/Creature/Picture.hs 5;" m Picture src/Dodge/Debug/Picture.hs 1;" m Picture src/Dodge/Picture.hs 4;" m @@ -1413,7 +1413,7 @@ Point2 src/Geometry/Data.hs 19;" t Point3 src/Geometry/Data.hs 25;" t Point4 src/Geometry/Data.hs 29;" t Poke src/Shader/Poke.hs 1;" m -PolyShad src/Picture/Data.hs 35;" C +PolyShad src/Picture/Data.hs 36;" C Polygon src/Geometry/Polygon.hs 2;" m Polyhedra src/Polyhedra/Data.hs 13;" t Polyhedra src/Polyhedra.hs 1;" m @@ -1679,7 +1679,7 @@ SetLSCol src/Dodge/Data/WorldEffect.hs 27;" C SetTarget src/Dodge/Creature/SetTarget.hs 2;" m SetTrigger src/Dodge/Data/WorldEffect.hs 25;" C Setup src/Framebuffer/Setup.hs 2;" m -ShadNum src/Picture/Data.hs 34;" t +ShadNum src/Picture/Data.hs 35;" t Shader src/Shader/Data.hs 51;" t Shader src/Shader.hs 1;" m ShaderTexture src/Shader/Data.hs 94;" t @@ -1898,7 +1898,7 @@ TestString src/Dodge/TestString.hs 2;" m Text src/Dodge/Equipment/Text.hs 1;" m Text src/Dodge/Update/Input/Text.hs 1;" m Text src/Picture/Text.hs 1;" m -TextShad src/Picture/Data.hs 36;" C +TextShad src/Picture/Data.hs 37;" C ThingsHit src/Dodge/WorldEvent/ThingsHit.hs 6;" m ThirdPartyLens src/ThirdPartyLens.hs 2;" m ThrustPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 30;" C @@ -3376,7 +3376,7 @@ attachOnward src/Dodge/Tree/Compose.hs 95;" f attachOnward' src/Dodge/Tree/Compose.hs 98;" f attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f -attribSize src/Shader/Compile.hs 352;" f +attribSize src/Shader/Compile.hs 353;" f augmentedHUD src/Dodge/Item/Scope.hs 47;" f autoAmr src/Dodge/Item/Held/Rod.hs 51;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 350;" f @@ -3530,7 +3530,7 @@ chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f checkBlockHP src/Dodge/Block.hs 46;" f checkDeath src/Dodge/Creature/State.hs 79;" f checkEndGame src/Dodge/Update.hs 584;" f -checkErrorGL src/Shader/Compile.hs 301;" f +checkErrorGL src/Shader/Compile.hs 302;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 16;" f @@ -3623,7 +3623,7 @@ commonPrefix src/Dodge/Debug/Terminal.hs 142;" f compactDraw src/Dodge/LevelGen.hs 91;" f compactDraw' src/Dodge/LevelGen.hs 102;" f compactDrawTree src/Dodge/LevelGen.hs 85;" f -compileAndCheckShader src/Shader/Compile.hs 323;" f +compileAndCheckShader src/Shader/Compile.hs 324;" f composeNode src/Dodge/Tree/Compose.hs 76;" f composeTree src/Dodge/Tree/Compose.hs 46;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 458;" f @@ -4235,7 +4235,7 @@ fletchingModule src/Dodge/Item/Scope.hs 32;" f flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f flickerUpdate src/Dodge/Placement/Instance/LightSource/Flicker.hs 24;" f flipSwitch src/Dodge/Button/Event.hs 21;" f -floatSize src/Shader/Parameters.hs 16;" f +floatSize src/Shader/Parameters.hs 17;" f flockACC src/Dodge/Creature/ReaderUpdate.hs 87;" f flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 15;" f flockCenterFunc src/Dodge/Creature/Boid.hs 253;" f @@ -4348,7 +4348,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 436;" f glassSwitchBack src/Dodge/Room/Room.hs 72;" f glassSwitchBackCrits src/Dodge/Room/Room.hs 101;" f glassWallDamage src/Dodge/Wall/DamageEffect.hs 48;" f -glushortSize src/Shader/Parameters.hs 24;" f +glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 136;" f gotoTerminal src/Dodge/Update.hs 120;" f @@ -4724,7 +4724,7 @@ makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f makeBullet src/Dodge/HeldUse.hs 341;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f -makeByteStringShaderUsingVAO src/Shader/Compile.hs 137;" f +makeByteStringShaderUsingVAO src/Shader/Compile.hs 138;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f makeColorTermLine src/Dodge/Terminal.hs 127;" f makeColorTermPara src/Dodge/Terminal.hs 124;" f @@ -4757,15 +4757,15 @@ makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 31;" f makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 49;" f makeShaderEBO src/Shader/Compile.hs 59;" f -makeShaderProgram src/Shader/Compile.hs 287;" f -makeShaderUsingVAO src/Shader/Compile.hs 155;" f +makeShaderProgram src/Shader/Compile.hs 288;" f +makeShaderUsingVAO src/Shader/Compile.hs 156;" f makeShaderUsingVBO src/Shader/Compile.hs 78;" f makeShaderVBO src/Shader/Compile.hs 38;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f -makeSourcedShader src/Shader/Compile.hs 203;" f +makeSourcedShader src/Shader/Compile.hs 204;" f makeStartCloudAt src/Dodge/WorldEvent/Cloud.hs 60;" f makeStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 22;" f -makeStaticShader src/Shader/Compile.hs 178;" f +makeStaticShader src/Shader/Compile.hs 179;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSwitch src/Dodge/LevelGen/Switch.hs 52;" f makeSwitchSPic src/Dodge/LevelGen/Switch.hs 40;" f @@ -4951,15 +4951,15 @@ normalizeV src/Geometry/Vector.hs 43;" f normalizeV3 src/Geometry/Vector3D.hs 84;" f nullCommand src/Dodge/Update/Scroll.hs 142;" f numColor src/Color.hs 124;" f -numDrawableElements src/Shader/Parameters.hs 32;" f -numGLushort src/Shader/Parameters.hs 28;" f +numDrawableVertices src/Shader/Parameters.hs 33;" f +numGLushort src/Shader/Parameters.hs 29;" f numLayers src/Picture/Data.hs 31;" f numMetaTree src/Dodge/Tree/Compose.hs 119;" f numMetaTree' src/Dodge/Tree/Compose.hs 122;" f numSelfTree src/Dodge/Tree/Compose.hs 107;" f numSelfTree' src/Dodge/Tree/Compose.hs 110;" f -numShads src/Picture/Data.hs 41;" f -numSubElements src/Shader/Parameters.hs 36;" f +numShads src/Picture/Data.hs 42;" f +numSubElements src/Shader/Parameters.hs 37;" f numTraversable src/TreeHelp.hs 183;" f obstacleColor src/Dodge/Debug/Picture.hs 225;" f obstructPathsCrossing src/Dodge/Path.hs 138;" f @@ -5524,7 +5524,7 @@ setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 317;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f -setShaderSource src/Shader/Compile.hs 336;" f +setShaderSource src/Shader/Compile.hs 337;" f setShadowLimits src/Dodge/Shadows.hs 11;" f setSoundVolume src/Sound.hs 156;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 74;" f @@ -5538,23 +5538,23 @@ setVol src/Dodge/Config/Update.hs 30;" f setWristShieldPos src/Dodge/Euse.hs 100;" f setupConLoop src/Loop.hs 102;" f setupConLoop' src/Loop.hs 192;" f -setupEBO src/Shader/Compile.hs 234;" f +setupEBO src/Shader/Compile.hs 235;" f setupFramebuffer2GivenStencil src/Framebuffer/Setup.hs 46;" f setupFramebuffer3GivenStencil src/Framebuffer/Setup.hs 62;" f setupFramebufferGivenStencil src/Framebuffer/Setup.hs 31;" f setupLoop src/Loop.hs 30;" f setupShadowFramebuffer src/Framebuffer/Setup.hs 24;" f -setupStaticVBOVAO src/Shader/Compile.hs 107;" f -setupVAOUsingVBO src/Shader/Compile.hs 225;" f -setupVAOvbo src/Shader/Compile.hs 215;" f +setupStaticVBOVAO src/Shader/Compile.hs 108;" f +setupVAOUsingVBO src/Shader/Compile.hs 226;" f +setupVAOvbo src/Shader/Compile.hs 216;" f setupVBO src/Shader/Compile.hs 92;" f -setupVBOStatic src/Shader/Compile.hs 125;" f -setupVBOVAO src/Shader/Compile.hs 246;" f -setupVertexAttribPointer src/Shader/Compile.hs 270;" f -setupVertexAttribs src/Shader/Compile.hs 264;" f +setupVBOStatic src/Shader/Compile.hs 126;" f +setupVBOVAO src/Shader/Compile.hs 247;" f +setupVertexAttribPointer src/Shader/Compile.hs 271;" f +setupVertexAttribs src/Shader/Compile.hs 265;" f setupWorldBounds src/Dodge/Layout.hs 125;" f shadVBOptr src/Shader.hs 40;" f -shaderTypeExt src/Shader/Compile.hs 208;" f +shaderTypeExt src/Shader/Compile.hs 209;" f shapeBounds src/Dodge/Room/Foreground.hs 148;" f shapePoints src/Dodge/Room/Foreground.hs 145;" f shapeVerxAttributes src/Shape/Parameters.hs 13;" f @@ -5815,9 +5815,9 @@ textJustifyLeft src/Picture/Base.hs 208;" f textJustifyRight src/Picture/Base.hs 198;" f textRight src/Picture/Base.hs 203;" f textVMirror src/Picture/Base.hs 216;" f -tflat2 src/Picture/Data.hs 58;" f -tflat3 src/Picture/Data.hs 62;" f -tflat4 src/Picture/Data.hs 66;" f +tflat2 src/Picture/Data.hs 60;" f +tflat3 src/Picture/Data.hs 64;" f +tflat4 src/Picture/Data.hs 68;" f theCleanup appDodge/Main.hs 74;" f theColumns src/Dodge/Tree/Shift.hs 139;" f theUpdateStep appDodge/Main.hs 102;" f @@ -5848,7 +5848,7 @@ toBothLnk src/Dodge/RoomLink.hs 121;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 144;" f toCombNodeLabel src/Dodge/Combine/Graph.hs 81;" f -toFloatVAs src/Shader/Compile.hs 257;" f +toFloatVAs src/Shader/Compile.hs 258;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 58;" f toOnward src/Dodge/Tree/Compose.hs 101;" f @@ -5957,7 +5957,7 @@ twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 388;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 424;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 416;" f -ubyteSize src/Shader/Parameters.hs 12;" f +ubyteSize src/Shader/Parameters.hs 13;" f uncurryV src/Geometry/Data.hs 46;" f unfoldrMID src/MonadHelp.hs 33;" f unitVectorAtAngle src/Geometry/Vector.hs 100;" f @@ -6138,7 +6138,7 @@ vShape src/Dodge/Placement/Instance/LightSource.hs 114;" f vToL src/MatrixHelper.hs 46;" f vToQuat src/Quaternion.hs 38;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 130;" f -vasTightStride src/Shader/Compile.hs 343;" f +vasTightStride src/Shader/Compile.hs 344;" f vecBetweenSpeed src/Dodge/Base.hs 124;" f vecTurnTo src/Dodge/Movement/Turn.hs 26;" f vert src/Shader/Data.hs 102;" f @@ -6194,7 +6194,7 @@ windowLineType src/Dodge/Placement/Instance/Wall.hs 83;" f windowXFloat src/Dodge/Data/Config.hs 61;" f windowYFloat src/Dodge/Data/Config.hs 63;" f withAlpha src/Color.hs 10;" f -withByteString src/Shader/Compile.hs 370;" f +withByteString src/Shader/Compile.hs 371;" f withCrPos src/Dodge/Item/Weapon/TriggerType.hs 381;" f withCrPosShift src/Dodge/Item/Weapon/TriggerType.hs 384;" f withFlare src/Dodge/Item/Weapon/TriggerType.hs 348;" f