Move hands to touch walls

This commit is contained in:
2026-03-30 15:50:25 +01:00
parent 4598deb70f
commit c7866cf668
5 changed files with 141 additions and 94 deletions
+41 -4
View File
@@ -14,6 +14,9 @@ module Dodge.Creature.HandPos (
rightHandPQ,
) where
import Control.Monad
import qualified Data.IntMap.Strict as IM
import Linear
import Control.Lens
import Dodge.Creature.Test
import Dodge.Data.Creature
@@ -61,11 +64,44 @@ rightHandPQ cr
| oneH cr = (V3 11 (-3) 20, Q.qID)
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0, Q.qID)
| twoFlat cr = (V3 4 (-8) 12, Q.qID)
-- | wl <- crRightHandWall cr = (0, Q.qID)
| Just p <- crRightHandWall cr = (20 & _xy .~ p, Q.qID)
| otherwise = (handWalkingPos LeftForward (-8) cr, Q.qID)
--crRightHandWall :: IM.IntMap Wall -> Creature -> Wall
--crRightHandWall wls cr
crRightHandWall :: Creature -> Maybe Point2
crRightHandWall cr = do
(_,p) <- IM.lookupMin (cr ^. crWallTouch)
let wp = p - cr ^. crPos . _xy
dp = argV wp
ang = nearZeroAngle (cd - dp)
cdp = unitVectorAtAngle cd
x | ang < 0 = 0.8 - (0.5 * ang / (pi / 4))
| otherwise = 0.8* dotV cdp (signorm wp)
y | ang < 0 = 2 - (5 * ang / (pi / 4))
| otherwise = 2
ep = wp - y *^ signorm wp + x *^ vNormal wp
guard $ ang > negate (pi / 8)
return $ ep & _xy %~ rot
where
cd = cr ^. crDir
rot = rotateV (negate cd)
crLeftHandWall :: Creature -> Maybe Point2
crLeftHandWall cr = do
(_,p) <- IM.lookupMin (cr ^. crWallTouch)
let wp = p - cr ^. crPos . _xy
dp = argV wp
ang = nearZeroAngle (cd - dp)
cdp = unitVectorAtAngle cd
x | ang > 0 = 0.8 + (0.5 * ang / (pi / 4))
| otherwise = 0.8* dotV cdp (signorm wp)
y | ang > 0 = 2 + (5 * ang / (pi / 4))
| otherwise = 2
ep = wp - y *^ signorm wp - x *^ vNormal wp
guard $ ang < (pi / 8)
return $ ep & _xy %~ rot
where
cd = cr ^. crDir
rot = rotateV (negate cd)
translateToRightHand :: Creature -> SPic -> SPic
translateToRightHand = overPosSP . translatePointToRightHand
@@ -75,9 +111,10 @@ rightWristPQ cr = rightHandPQ cr `Q.comp` (V3 0 (-4) (-4), Q.qID)
leftHandPQ :: Creature -> Point3Q
leftHandPQ cr
| oneH cr = (V3 0 8 10, Q.qz 0.4)
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 12 4 0, Q.qz 0.4)
| twoFlat cr = (V3 4 8 12, Q.qID)
| Just p <- crLeftHandWall cr = (20 & _xy .~ p, Q.qID)
| oneH cr = (V3 0 8 10, Q.qz 0.4)
| otherwise = (handWalkingPos RightForward 8 cr, Q.qID)
translatePointToLeftHand :: Creature -> Point3 -> Point3
+2 -3
View File
@@ -22,6 +22,7 @@ import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import qualified Data.Map.Strict as M
import qualified Data.IntMap.Strict as IM
import Dodge.Data.ActionPlan
import Dodge.Data.Creature.Misc
import Dodge.Data.Creature.Perception
@@ -30,8 +31,6 @@ import Dodge.Data.Creature.State
import Dodge.Data.Item
import Dodge.Data.Material
import Geometry.Data
import qualified Data.IntSet as IS
--import qualified IntMapHelp as IM
data Creature = Creature
{ _crPos :: Point3
@@ -58,7 +57,7 @@ data Creature = Creature
, _crIntention :: Intention
, _crName :: String
, _crDeathTimer :: Int
, _crWallTouch :: IS.IntSet
, _crWallTouch :: IM.IntMap Point2
}
data CrHP
+1 -1
View File
@@ -34,7 +34,7 @@ import Data.Monoid
import RandomHelp
testStringInit :: Universe -> [String]
testStringInit u = [fromMaybe "" $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crName]
testStringInit u = fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . ix 0 . crWallTouch . each
-- (fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crStance . carriage . strideAmount)
-- a <> fromMaybe [] (do
-- a w1 <- u ^? uvWorld . cWorld . lWorld . walls . ix 18
+19 -9
View File
@@ -9,7 +9,6 @@ import Data.Maybe
import qualified Data.IntMap.Strict as IM
import Control.Lens
import Data.Foldable
import qualified Data.IntSet as IS
import Dodge.Base
import Dodge.Creature.Radius
import Dodge.Data.Universe
@@ -56,14 +55,14 @@ pushCr w wls cr
| otherwise = ecr
where
-- stwls = IM.filter (\wl -> uncurry circOnSegNoEndpoints (wl ^. wlLine) sp r) wls
twls = IM.elems $ IM.restrictKeys wls (ecr ^. crWallTouch) -- `IM.union` stwls
twls = IM.elems $ IM.intersection wls (ecr ^. crWallTouch) -- `IM.union` stwls
-- ep = ecr ^. crPos . _xy
ap = cr ^. crOldPos . _xy
-- sp = cr ^. crPos . _xy
ecr = foldl' f (cr & crWallTouch .~ mempty) wls
r = crRad (cr ^. crType)
f acr wl = case pushOutFromWall r (acr ^. crPos . _xy) (wl ^. wlLine) of
Just p -> acr & crPos . _xy .~ p & crWallTouch %~ IS.insert (wl ^. wlID)
f acr wl = case pushOutFromWall' r (acr ^. crPos . _xy) (wl ^. wlLine) of
Just (p,hitp) -> acr & crPos . _xy .~ p & crWallTouch . at (wl ^. wlID) ?~ hitp
Nothing -> acr
wallMovement :: LWorld -> Point2 -> Wall -> Point2
@@ -100,11 +99,22 @@ wlWlCrush' w p w1 w2 = (t w1 w2 || t w2 w1) -- test either wall is moving toward
wallBuffer :: Float
wallBuffer = 0
-- assumes that the wall is orientated
-- assumes wall points are different
pushOutFromWall :: Float -> Point2 -> (Point2, Point2) -> Maybe Point2
pushOutFromWall rad cp2 (wp1, wp2)
| isOnWall = Just newP
---- assumes that the wall is orientated
---- assumes wall points are different
--pushOutFromWall :: Float -> Point2 -> (Point2, Point2) -> Maybe Point2
--pushOutFromWall rad cp2 (wp1, wp2)
-- | isOnWall = Just newP
-- | otherwise = Nothing
-- where
-- n = errorNormalizeV 61 $ vNormal (wp1 - wp2)
-- wp1' = wp1 + rad *^ n
-- wp2' = wp2 + rad *^ n
-- newP = errorClosestPointOnLine 5 wp1' wp2' cp2
-- isOnWall = circOnSegNoEndpoints wp1 wp2 cp2 rad
pushOutFromWall' :: Float -> Point2 -> (Point2, Point2) -> Maybe (Point2,Point2)
pushOutFromWall' rad cp2 (wp1, wp2)
| isOnWall = Just (newP,newP - rad *^ n)
| otherwise = Nothing
where
n = errorNormalizeV 61 $ vNormal (wp1 - wp2)
+78 -77
View File
@@ -15,7 +15,7 @@
<$> src/Dodge/Data/ActionPlan.hs 156;" o
<$> src/Dodge/Data/CWorld.hs 52;" o
<$> src/Dodge/Data/Camera.hs 38;" o
<$> src/Dodge/Data/Creature.hs 93;" o
<$> src/Dodge/Data/Creature.hs 92;" o
<$> src/Dodge/Data/LWorld.hs 179;" o
<$> src/Dodge/Data/Terminal.hs 69;" o
ABSOLUTE src/Dodge/Data/Item/Combine.hs 39;" C
@@ -239,7 +239,7 @@ ContextDT src/Dodge/Data/DoubleTree.hs 25;" t
ContinentalGovernment src/Dodge/Data/Scenario.hs 51;" C
ControlDeckSS src/Dodge/Data/Scenario.hs 89;" C
ConvexPoly src/Geometry/ConvexPoly.hs 25;" t
CookDeath src/Dodge/Data/Creature.hs 70;" C
CookDeath src/Dodge/Data/Creature.hs 69;" C
CookingDamage src/Dodge/Data/Damage/Type.hs 5;" C
Corporation src/Dodge/Data/Scenario.hs 46;" C
Cosmic src/Dodge/Data/Scenario.hs 74;" C
@@ -252,16 +252,16 @@ CrGroup src/Dodge/Data/Creature/State.hs 23;" t
CrGroupID src/Dodge/Data/Creature/State.hs 29;" C
CrGroupParams src/Dodge/Data/CrGroupParams.hs 12;" t
CrGroupUpdate src/Dodge/Data/CrGroupParams.hs 20;" t
CrHP src/Dodge/Data/Creature.hs 64;" t
CrHP src/Dodge/Data/Creature.hs 63;" t
CrHitSound src/Dodge/Data/SoundOrigin.hs 32;" C
CrID src/Dodge/Data/CrWlID.hs 10;" C
CrImp src/Dodge/Data/CreatureEffect.hs 9;" t
CrInt src/Dodge/Data/Item/Location.hs 22;" t
CrIsAiming src/Dodge/Data/CreatureEffect.hs 20;" C
CrIsAnimate src/Dodge/Data/CreatureEffect.hs 20;" C
CrIsCorpse src/Dodge/Data/Creature.hs 66;" C
CrIsGibs src/Dodge/Data/Creature.hs 67;" C
CrIsPitted src/Dodge/Data/Creature.hs 68;" C
CrIsCorpse src/Dodge/Data/Creature.hs 65;" C
CrIsGibs src/Dodge/Data/Creature.hs 66;" C
CrIsPitted src/Dodge/Data/Creature.hs 67;" C
CrMouth src/Dodge/Data/SoundOrigin.hs 16;" C
CrMvType src/Dodge/Data/Creature/Misc.hs 26;" t
CrMvType src/Dodge/Data/Creature/Misc.hs 29;" C
@@ -278,7 +278,7 @@ Cr_status src/Dodge/Data/Config.hs 84;" C
CraftType src/Dodge/Data/Item/Combine.hs 49;" t
CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C
CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C
Creature src/Dodge/Data/Creature.hs 36;" t
Creature src/Dodge/Data/Creature.hs 35;" t
CreaturePart src/Dodge/Data/Wall/Structure.hs 16;" C
CreatureShape src/Dodge/Data/Creature/Misc.hs 74;" t
CreatureType src/Dodge/Data/Creature/Misc.hs 58;" t
@@ -307,7 +307,7 @@ DamageHitSound src/Dodge/Data/SoundOrigin.hs 41;" 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
DeathType src/Dodge/Data/Creature.hs 70;" t
DeathType src/Dodge/Data/Creature.hs 69;" t
Debris src/Dodge/Data/Prop.hs 25;" t
DebrisChunk src/Dodge/Data/Prop.hs 25;" C
DebrisType src/Dodge/Data/Prop.hs 21;" t
@@ -494,7 +494,7 @@ GeoObjShads src/Dodge/Data/Config.hs 117;" C
GetTo src/Dodge/Data/ActionPlan.hs 141;" C
GetToPoint src/Dodge/Data/Scenario.hs 12;" C
Gib src/Dodge/Data/Prop.hs 22;" C
GibsDeath src/Dodge/Data/Creature.hs 70;" C
GibsDeath src/Dodge/Data/Creature.hs 69;" C
Glass src/Dodge/Data/Material.hs 14;" C
GlassBreakSound src/Dodge/Data/SoundOrigin.hs 34;" C
Goal src/Dodge/Data/ActionPlan.hs 149;" t
@@ -519,7 +519,7 @@ HEATSENSOR src/Dodge/Data/Item/Combine.hs 82;" C
HELD src/Dodge/Data/Item/Combine.hs 16;" C
HOMINGMODULE src/Dodge/Data/Item/Combine.hs 101;" C
HOSE src/Dodge/Data/Item/Combine.hs 54;" C
HP src/Dodge/Data/Creature.hs 65;" C
HP src/Dodge/Data/Creature.hs 64;" C
HUD src/Dodge/Data/HUD.hs 29;" t
HalfRes src/Dodge/Data/Config.hs 113;" C
HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C
@@ -586,7 +586,7 @@ Inspect_wall src/Dodge/Data/Config.hs 106;" C
Institution src/Dodge/Data/Scenario.hs 42;" t
Int2 src/Geometry/Data.hs 21;" t
IntID src/Dodge/Data/Universe.hs 120;" t
Intention src/Dodge/Data/Creature.hs 72;" t
Intention src/Dodge/Data/Creature.hs 71;" t
IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C
IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C
IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t
@@ -750,7 +750,7 @@ MedBaySS src/Dodge/Data/Scenario.hs 100;" C
Medium src/Shape/Data.hs 25;" C
Melee src/Dodge/Data/ActionPlan.hs 40;" C
MeleeStrike src/Dodge/Data/ActionPlan.hs 144;" C
Memory src/Dodge/Data/Creature.hs 79;" t
Memory src/Dodge/Data/Creature.hs 78;" t
MenuOption src/Dodge/Data/Universe.hs 109;" t
MenuOptionDisplay src/Dodge/Data/Universe.hs 104;" t
MetaBranch src/Dodge/Data/MetaTree.hs 19;" t
@@ -997,7 +997,7 @@ PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C
Placement src/Dodge/Data/GenWorld.hs 114;" t
PlacementSpot src/Dodge/Data/GenWorld.hs 98;" t
PlainBarrel src/Dodge/Data/Creature/Misc.hs 86;" C
PlainDeath src/Dodge/Data/Creature.hs 70;" C
PlainDeath src/Dodge/Data/Creature.hs 69;" C
PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C
PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t
PlasmaBallType src/Dodge/Data/PlasmaBall.hs 20;" t
@@ -1013,7 +1013,7 @@ Point3Q src/Geometry/Data.hs 52;" t
Point4 src/Geometry/Data.hs 41;" t
Poison src/Dodge/Data/Damage.hs 26;" C
PoisonDamage src/Dodge/Data/Damage/Type.hs 6;" C
PoisonDeath src/Dodge/Data/Creature.hs 70;" C
PoisonDeath src/Dodge/Data/Creature.hs 69;" C
PoisonGas src/Dodge/Data/Cloud.hs 42;" C
PolyEdge src/Dodge/Data/Room.hs 51;" C
PolyShad src/Picture/Data.hs 31;" C
@@ -1674,36 +1674,36 @@ _cpPoints src/Geometry/ConvexPoly.hs 26;" f
_cpRad src/Geometry/ConvexPoly.hs 28;" f
_cpVigilance src/Dodge/Data/Creature/Perception.hs 31;" f
_cpVision src/Dodge/Data/Creature/Perception.hs 34;" f
_crActionPlan src/Dodge/Data/Creature.hs 52;" f
_crDamage src/Dodge/Data/Creature.hs 49;" f
_crDeathTimer src/Dodge/Data/Creature.hs 60;" f
_crDir src/Dodge/Data/Creature.hs 40;" f
_crEquipment src/Dodge/Data/Creature.hs 48;" f
_crFaction src/Dodge/Data/Creature.hs 56;" f
_crGroup src/Dodge/Data/Creature.hs 57;" f
_crActionPlan src/Dodge/Data/Creature.hs 51;" f
_crDamage src/Dodge/Data/Creature.hs 48;" f
_crDeathTimer src/Dodge/Data/Creature.hs 59;" f
_crDir src/Dodge/Data/Creature.hs 39;" f
_crEquipment src/Dodge/Data/Creature.hs 47;" f
_crFaction src/Dodge/Data/Creature.hs 55;" f
_crGroup src/Dodge/Data/Creature.hs 56;" f
_crGroupCenter src/Dodge/Data/CrGroupParams.hs 15;" f
_crGroupID src/Dodge/Data/Creature/State.hs 27;" f
_crGroupIDs src/Dodge/Data/CrGroupParams.hs 14;" f
_crGroupParamID src/Dodge/Data/CrGroupParams.hs 13;" f
_crGroupUpdate src/Dodge/Data/CrGroupParams.hs 16;" f
_crHP src/Dodge/Data/Creature.hs 45;" f
_crID src/Dodge/Data/Creature.hs 44;" f
_crIntention src/Dodge/Data/Creature.hs 58;" f
_crInv src/Dodge/Data/Creature.hs 46;" f
_crManipulation src/Dodge/Data/Creature.hs 47;" f
_crMemory src/Dodge/Data/Creature.hs 54;" f
_crMvAim src/Dodge/Data/Creature.hs 42;" f
_crMvDir src/Dodge/Data/Creature.hs 41;" f
_crName src/Dodge/Data/Creature.hs 59;" f
_crOldPos src/Dodge/Data/Creature.hs 38;" f
_crPain src/Dodge/Data/Creature.hs 50;" f
_crPerception src/Dodge/Data/Creature.hs 53;" f
_crPos src/Dodge/Data/Creature.hs 37;" f
_crStance src/Dodge/Data/Creature.hs 51;" f
_crType src/Dodge/Data/Creature.hs 43;" f
_crVocalization src/Dodge/Data/Creature.hs 55;" f
_crWallTouch src/Dodge/Data/Creature.hs 61;" f
_crZVel src/Dodge/Data/Creature.hs 39;" f
_crHP src/Dodge/Data/Creature.hs 44;" f
_crID src/Dodge/Data/Creature.hs 43;" f
_crIntention src/Dodge/Data/Creature.hs 57;" f
_crInv src/Dodge/Data/Creature.hs 45;" f
_crManipulation src/Dodge/Data/Creature.hs 46;" f
_crMemory src/Dodge/Data/Creature.hs 53;" f
_crMvAim src/Dodge/Data/Creature.hs 41;" f
_crMvDir src/Dodge/Data/Creature.hs 40;" f
_crName src/Dodge/Data/Creature.hs 58;" f
_crOldPos src/Dodge/Data/Creature.hs 37;" f
_crPain src/Dodge/Data/Creature.hs 49;" f
_crPerception src/Dodge/Data/Creature.hs 52;" f
_crPos src/Dodge/Data/Creature.hs 36;" f
_crStance src/Dodge/Data/Creature.hs 50;" f
_crType src/Dodge/Data/Creature.hs 42;" f
_crVocalization src/Dodge/Data/Creature.hs 54;" f
_crWallTouch src/Dodge/Data/Creature.hs 60;" f
_crZVel src/Dodge/Data/Creature.hs 38;" f
_crZoning src/Dodge/Data/World.hs 48;" f
_creatureGroups src/Dodge/Data/LWorld.hs 96;" f
_creatures src/Dodge/Data/LWorld.hs 95;" f
@@ -2054,7 +2054,7 @@ _mtTree src/Dodge/Data/MetaTree.hs 13;" f
_musicData src/Data/Preload.hs 13;" f
_mvAimSpeed src/Dodge/Data/Creature/Misc.hs 33;" f
_mvSpeed src/Dodge/Data/Creature/Misc.hs 28;" f
_mvToPoint src/Dodge/Data/Creature.hs 74;" f
_mvToPoint src/Dodge/Data/Creature.hs 73;" f
_mvTurnJit src/Dodge/Data/Creature/Misc.hs 32;" f
_mvTurnRad src/Dodge/Data/Creature/Misc.hs 31;" f
_mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f
@@ -2066,7 +2066,7 @@ _mzRandomOffset src/Dodge/Data/Muzzle.hs 17;" f
_mzRot src/Dodge/Data/Muzzle.hs 11;" f
_nodeMetaTree src/Dodge/Data/MetaTree.hs 17;" f
_nodeTree src/Dodge/Data/MetaTree.hs 16;" f
_nodesSearched src/Dodge/Data/Creature.hs 81;" f
_nodesSearched src/Dodge/Data/Creature.hs 80;" f
_nonInf src/Dodge/Data/CardinalPoint.hs 44;" f
_numLinkEW src/Dodge/Data/Room.hs 34;" f
_numLinkNS src/Dodge/Data/Room.hs 35;" f
@@ -2326,7 +2326,7 @@ _soundStatus src/Sound/Data.hs 45;" f
_soundTime src/Sound/Data.hs 44;" f
_soundVolume src/Sound/Data.hs 49;" f
_soundVolumeFraction src/Sound/Data.hs 50;" f
_soundsToInvestigate src/Dodge/Data/Creature.hs 80;" f
_soundsToInvestigate src/Dodge/Data/Creature.hs 79;" f
_spPixelOff src/Dodge/Data/ScreenPos.hs 14;" f
_spScreenOff src/Dodge/Data/ScreenPos.hs 13;" f
_sparks src/Dodge/Data/LWorld.hs 110;" f
@@ -2358,7 +2358,7 @@ _swarm src/Dodge/Data/Creature/State.hs 26;" f
_taArcSteps src/Dodge/Data/TeslaArc.hs 17;" f
_taColor src/Dodge/Data/TeslaArc.hs 18;" f
_taTimer src/Dodge/Data/TeslaArc.hs 16;" f
_targetCr src/Dodge/Data/Creature.hs 73;" f
_targetCr src/Dodge/Data/Creature.hs 72;" f
_targetID src/Dodge/Data/ActionPlan.hs 67;" f
_targetSeenAt src/Dodge/Data/ActionPlan.hs 68;" f
_tbPos src/Dodge/Data/TractorBeam.hs 12;" f
@@ -2474,7 +2474,7 @@ _vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f
_vertices src/Polyhedra/Data.hs 22;" f
_viDist src/Dodge/Data/Creature/Perception.hs 41;" f
_viFOV src/Dodge/Data/Creature/Perception.hs 40;" f
_viewPoint src/Dodge/Data/Creature.hs 75;" f
_viewPoint src/Dodge/Data/Creature.hs 74;" f
_volleyNumBarrels src/Dodge/Data/TriggerType.hs 13;" f
_volleyRate src/Dodge/Data/TriggerType.hs 13;" f
_volume_master src/Dodge/Data/Config.hs 49;" f
@@ -2671,7 +2671,7 @@ axisInt src/Geometry/Intersect.hs 246;" f
azure src/Color.hs 49;" f
bQuadToF src/Geometry/Bezier.hs 37;" f
bQuadToLine src/Geometry/Bezier.hs 30;" f
backPQ src/Dodge/Creature/HandPos.hs 124;" f
backPQ src/Dodge/Creature/HandPos.hs 146;" f
backgroundSpaceS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 729;" f
backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f
backpackShape src/Dodge/Item/Draw/SPic.hs 188;" f
@@ -2837,7 +2837,7 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f
checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f
checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f
chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f
chestPQ src/Dodge/Creature/HandPos.hs 121;" f
chestPQ src/Dodge/Creature/HandPos.hs 143;" f
chooseCursorBorders src/Dodge/Render/List.hs 141;" f
chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f
chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 35;" f
@@ -2886,8 +2886,8 @@ clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f
clsNearRect src/Dodge/Zoning/Cloud.hs 18;" f
clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f
cogRaised src/Dodge/Creature/Perception.hs 101;" f
colCrWall src/Dodge/WallCreatureCollisions.hs 28;" f
colCrsWalls src/Dodge/WallCreatureCollisions.hs 20;" f
colCrWall src/Dodge/WallCreatureCollisions.hs 27;" f
colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f
collectDamageTypes src/Dodge/Damage.hs 53;" f
collectInvItems src/Dodge/Inventory.hs 205;" f
collide3 src/Dodge/Base/Collide.hs 129;" f
@@ -2984,6 +2984,7 @@ crMvType src/Dodge/Creature/MoveType.hs 6;" f
crNearPoint src/Dodge/Creature/Test.hs 132;" f
crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f
crRad src/Dodge/Creature/Radius.hs 7;" f
crRightHandWall src/Dodge/Creature/HandPos.hs 70;" f
crSafeDistFromTarg src/Dodge/Creature/Test.hs 75;" f
crSetRoots src/Dodge/Inventory/Location.hs 55;" f
crShape src/Dodge/Creature/Shape.hs 8;" f
@@ -3494,7 +3495,7 @@ equipInfo src/Dodge/Item/Info.hs 140;" f
equipItemSPic src/Dodge/Item/Draw/SPic.hs 159;" f
equipPosition src/Dodge/Item/Draw.hs 38;" f
equipSiteInfo src/Dodge/Item/Info.hs 253;" f
equipSitePQ src/Dodge/Creature/HandPos.hs 28;" f
equipSitePQ src/Dodge/Creature/HandPos.hs 31;" f
equipType src/Dodge/Data/EquipType.hs 10;" f
equipmentDesignation src/Dodge/Inventory/RBList.hs 52;" f
equipmentStrValue src/Dodge/Creature/Statistics.hs 56;" f
@@ -3717,7 +3718,7 @@ haltSound src/Dodge/SoundLogic.hs 38;" f
hammerCheck src/Dodge/HeldUse.hs 67;" f
handHandleOrient src/Dodge/Item/HeldOffset.hs 57;" f
handOrient src/Dodge/Item/HeldOffset.hs 39;" f
handWalkingPos src/Dodge/Creature/HandPos.hs 41;" f
handWalkingPos src/Dodge/Creature/HandPos.hs 44;" f
handleEvent src/Dodge/Event.hs 27;" f
handleHotkeys src/Dodge/Creature/YourControl.hs 46;" f
handleKeyboardEvent src/Dodge/Event/Input.hs 23;" f
@@ -3740,7 +3741,7 @@ head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 68;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 423;" f
headMap src/Dodge/DoubleTree.hs 118;" f
headPQ src/Dodge/Creature/HandPos.hs 115;" f
headPQ src/Dodge/Creature/HandPos.hs 137;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f
healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 108;" f
healthTest src/Dodge/Room/LasTurret.hs 130;" f
@@ -4003,13 +4004,13 @@ leaveResetQuitTerminal src/Dodge/WorldEffect.hs 163;" f
led src/Dodge/Item/Held/Utility.hs 23;" f
left src/DoubleStack.hs 16;" f
leftChildList src/Dodge/Item/Grammar.hs 193;" f
leftHandPQ src/Dodge/Creature/HandPos.hs 72;" f
leftHandPQ src/Dodge/Creature/HandPos.hs 94;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 170;" f
leftPad src/Padding.hs 15;" f
leftRightCombine src/Dodge/Item/Grammar.hs 205;" f
leftWristPQ src/Dodge/Creature/HandPos.hs 85;" f
legPQ src/Dodge/Creature/HandPos.hs 91;" f
legPQ' src/Dodge/Creature/HandPos.hs 96;" f
leftWristPQ src/Dodge/Creature/HandPos.hs 107;" f
legPQ src/Dodge/Creature/HandPos.hs 113;" f
legPQ' src/Dodge/Creature/HandPos.hs 118;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 448;" f
lerpP2A src/Dodge/ShiftPoint.hs 14;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 86;" f
@@ -4310,7 +4311,7 @@ nextInSectionSS src/Dodge/SelectionSections.hs 34;" f
nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f
noPic src/ShapePicture.hs 25;" f
noShape src/ShapePicture.hs 29;" f
noclipCheck src/Dodge/WallCreatureCollisions.hs 23;" f
noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f
nodesNear src/Dodge/Path.hs 75;" f
nonConvexChasm src/Dodge/Room/Tutorial.hs 260;" f
nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f
@@ -4562,10 +4563,10 @@ pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f
ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f
pulseChecker src/Dodge/Item/Equipment.hs 84;" f
pushCaverns src/Dodge/Room/LongDoor.hs 192;" f
pushCr src/Dodge/WallCreatureCollisions.hs 43;" f
pushCr src/Dodge/WallCreatureCollisions.hs 42;" f
pushL src/DoubleStack.hs 20;" f
pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 116;" f
pushOutFromWall src/Dodge/WallCreatureCollisions.hs 105;" f
pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 126;" f
pushOutFromWall' src/Dodge/WallCreatureCollisions.hs 115;" f
pushR src/DoubleStack.hs 24;" f
pushScreen src/Dodge/Menu/PushPop.hs 9;" f
pushYouOutFromWalls src/Dodge/Update.hs 342;" f
@@ -4729,11 +4730,11 @@ rhombus src/Polyhedra.hs 69;" f
rifle src/Dodge/Item/Held/Cane.hs 19;" f
right src/DoubleStack.hs 16;" f
rightChildList src/Dodge/Item/Grammar.hs 199;" f
rightHandPQ src/Dodge/Creature/HandPos.hs 59;" f
rightHandPQ src/Dodge/Creature/HandPos.hs 62;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 181;" f
rightPad src/Padding.hs 19;" f
rightPadNoSquash src/Padding.hs 23;" f
rightWristPQ src/Dodge/Creature/HandPos.hs 69;" f
rightWristPQ src/Dodge/Creature/HandPos.hs 91;" f
rlPosDir src/Dodge/RoomLink.hs 112;" f
rlauncherPic src/Dodge/Item/Draw/SPic.hs 399;" f
rmInLinks src/Dodge/RoomLink.hs 153;" f
@@ -5017,10 +5018,10 @@ slapClean7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 747;" f
slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 667;" f
slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 629;" f
slideWindow src/ListHelp.hs 81;" f
slowCrush90 src/Dodge/Room/LongDoor.hs 257;" f
slowCrush90 src/Dodge/Room/LongDoor.hs 263;" f
slowCrushRoom src/Dodge/Room/LongDoor.hs 148;" f
slowDoorRoom src/Dodge/Room/LongDoor.hs 303;" f
slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 320;" f
slowDoorRoom src/Dodge/Room/LongDoor.hs 309;" f
slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 326;" f
smallBattery src/Dodge/Item/Ammo.hs 57;" f
smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f
smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f
@@ -5090,7 +5091,7 @@ sqPlatformChasm src/Dodge/Room/Tutorial.hs 225;" f
sqSpitChasm src/Dodge/Room/Tutorial.hs 240;" f
square src/Geometry/Polygon.hs 56;" f
squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f
squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 119;" f
squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 129;" f
squashNormalizeV src/Geometry/Vector.hs 160;" f
ssLookupDown src/Dodge/SelectionSections.hs 96;" f
ssLookupGE' src/Dodge/SelectionSections.hs 150;" f
@@ -5304,8 +5305,8 @@ translate3 src/Picture/Base.hs 112;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 50;" f
translateFloatingCameraKeys src/Dodge/Update/Camera.hs 68;" f
translateH src/Picture/Base.hs 104;" f
translatePointToLeftHand src/Dodge/Creature/HandPos.hs 79;" f
translatePointToRightHand src/Dodge/Creature/HandPos.hs 38;" f
translatePointToLeftHand src/Dodge/Creature/HandPos.hs 101;" f
translatePointToRightHand src/Dodge/Creature/HandPos.hs 41;" f
translateSH src/Shape.hs 242;" f
translateSHxy src/Shape.hs 246;" f
translateSHz src/Shape.hs 250;" f
@@ -5313,11 +5314,11 @@ translateSP src/ShapePicture.hs 53;" f
translateSPxy src/ShapePicture.hs 45;" f
translateSPz src/ShapePicture.hs 49;" f
translateScreenPos src/Dodge/ScreenPos.hs 12;" f
translateToES src/Dodge/Creature/HandPos.hs 25;" f
translateToLeftHand src/Dodge/Creature/HandPos.hs 82;" f
translateToLeftLeg src/Dodge/Creature/HandPos.hs 88;" f
translateToRightHand src/Dodge/Creature/HandPos.hs 66;" f
translateToRightLeg src/Dodge/Creature/HandPos.hs 112;" f
translateToES src/Dodge/Creature/HandPos.hs 28;" f
translateToLeftHand src/Dodge/Creature/HandPos.hs 104;" f
translateToLeftLeg src/Dodge/Creature/HandPos.hs 110;" f
translateToRightHand src/Dodge/Creature/HandPos.hs 88;" f
translateToRightLeg src/Dodge/Creature/HandPos.hs 134;" f
translateXY src/Polyhedra.hs 23;" f
trapTBH src/Geometry/Polygon.hs 22;" f
trapezionBWHW src/Geometry/Polygon.hs 34;" f
@@ -5417,7 +5418,7 @@ updateCreatureStrides src/Dodge/Update.hs 370;" f
updateDebris src/Dodge/Update.hs 656;" f
updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f
updateDebugMessageOffset src/Dodge/Update.hs 102;" f
updateDelayedEvents src/Dodge/Update.hs 997;" f
updateDelayedEvents src/Dodge/Update.hs 994;" f
updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
updateDistortion src/Dodge/Distortion.hs 8;" f
updateDistortions src/Dodge/Update.hs 635;" f
@@ -5587,9 +5588,9 @@ volleyGunShape src/Dodge/Item/Draw/SPic.hs 355;" f
walkNozzle src/Dodge/HeldUse.hs 826;" f
walkableNodeNear src/Dodge/Path.hs 69;" f
wallBlips src/Dodge/RadarSweep.hs 99;" f
wallBuffer src/Dodge/WallCreatureCollisions.hs 100;" f
wallBuffer src/Dodge/WallCreatureCollisions.hs 99;" f
wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f
wallMovement src/Dodge/WallCreatureCollisions.hs 69;" f
wallMovement src/Dodge/WallCreatureCollisions.hs 68;" f
wallToSurface src/Dodge/Base/Collide.hs 182;" f
wallsFromRooms src/Dodge/Layout.hs 141;" f
wallsToDraw src/Dodge/Render/Walls.hs 18;" f
@@ -5643,9 +5644,9 @@ wlIsOpaque src/Dodge/Base/Wall.hs 6;" f
wlIsSeeThrough src/Dodge/Base/Wall.hs 11;" f
wlOpaqueDraw src/Dodge/Render/Walls.hs 53;" f
wlSeeThroughDraw src/Dodge/Render/Walls.hs 56;" f
wlWlCrush' src/Dodge/WallCreatureCollisions.hs 90;" f
wlWlCrush' src/Dodge/WallCreatureCollisions.hs 89;" f
wlZoneSize src/Dodge/Zoning/Wall.hs 51;" f
wlsCrush' src/Dodge/WallCreatureCollisions.hs 81;" f
wlsCrush' src/Dodge/WallCreatureCollisions.hs 80;" f
wlsFromIXs src/Dodge/Zoning/Wall.hs 34;" f
wlsHit src/Dodge/WorldEvent/ThingsHit.hs 156;" f
wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 168;" f