Hand/handle position refactor
This commit is contained in:
@@ -135,4 +135,4 @@ shoulderSH = translateSHz 20
|
|||||||
|
|
||||||
drawEquipment :: Creature -> SPic
|
drawEquipment :: Creature -> SPic
|
||||||
{-# INLINE drawEquipment #-}
|
{-# INLINE drawEquipment #-}
|
||||||
drawEquipment cr = foldMap (itemEquipPict cr) (invLDT $ _crInv cr)
|
drawEquipment cr = foldMap (itemEquipPict cr) (invLDT' $ _crInv cr)
|
||||||
|
|||||||
@@ -95,7 +95,8 @@ crInAimStance as cr = crIsAiming cr && mitstance == Just as
|
|||||||
where
|
where
|
||||||
mitstance = do
|
mitstance = do
|
||||||
i <- cr ^? crManipulation . manObject . imRootSelectedItem
|
i <- cr ^? crManipulation . manObject . imRootSelectedItem
|
||||||
itm <- invRootTrees' (cr ^. crInv) ^? ix i
|
--itm <- invRootTrees' (cr ^. crInv) ^? ix i
|
||||||
|
itm <- invRootTrees (cr ^. crInv) ^? ix i
|
||||||
return $ aimStance itm
|
return $ aimStance itm
|
||||||
--cr ^? crInv . ix i . itUse . heldAim . aimStance
|
--cr ^? crInv . ix i . itUse . heldAim . aimStance
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import Dodge.Data.AimStance
|
|||||||
--aStance :: LocationLDT ItemLink CItem -> AimStance
|
--aStance :: LocationLDT ItemLink CItem -> AimStance
|
||||||
--aStance loc = case loc ^. locLDT . ldtValue . _1 . itType of
|
--aStance loc = case loc ^. locLDT . ldtValue . _1 . itType of
|
||||||
--
|
--
|
||||||
aimStance :: LDTree ItemLink CItem -> AimStance
|
aimStance :: LDTree ItemLink OItem -> AimStance
|
||||||
aimStance ldt = itemBaseStance $ ldt ^. ldtValue . _1
|
aimStance ldt = itemBaseStance $ ldt ^. ldtValue . _1
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,17 +15,18 @@ import Dodge.Item.Draw.SPic
|
|||||||
import Dodge.Item.HeldOffset
|
import Dodge.Item.HeldOffset
|
||||||
import ShapePicture
|
import ShapePicture
|
||||||
|
|
||||||
itemEquipPict :: Creature -> LDTree ItemLink CItem -> SPic
|
itemEquipPict :: Creature -> LDTree ItemLink OItem -> SPic
|
||||||
itemEquipPict cr itmtree
|
itemEquipPict cr itmtree
|
||||||
| Just i <- itm ^? itLocation . ilInvID
|
| Just i <- itm ^? itLocation . ilInvID
|
||||||
, Just esite <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just
|
, Just esite <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just
|
||||||
, Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip
|
, Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip
|
||||||
= equipPosition esite cr attachpos (itemSPic itm)
|
= equipPosition esite cr attachpos (itemSPic itm)
|
||||||
| itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem
|
| itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem
|
||||||
= overPosSP (heldItemOffset itm cr) (itemTreeSPic itmtree)
|
= overPosSP (heldItemOffset loc cr) (itemTreeSPic itmtree)
|
||||||
| otherwise = mempty
|
| otherwise = mempty
|
||||||
where
|
where
|
||||||
itm = itmtree ^. ldtValue . _1
|
itm = itmtree ^. ldtValue . _1
|
||||||
|
loc = LocLDT TopLDT itmtree
|
||||||
|
|
||||||
equipAttachPos :: EquipItemType -> Point3
|
equipAttachPos :: EquipItemType -> Point3
|
||||||
equipAttachPos = \case
|
equipAttachPos = \case
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ import Picture
|
|||||||
import Shape
|
import Shape
|
||||||
import ShapePicture
|
import ShapePicture
|
||||||
|
|
||||||
itemTreeSPic :: LDTree ItemLink CItem -> SPic
|
itemTreeSPic :: LDTree ItemLink OItem -> SPic
|
||||||
itemTreeSPic (LDT (itm,_) l r) = itemSPic itm <> foldMap (itemRotTreeSPic itm) (l <> r)
|
itemTreeSPic (LDT (itm,_,_) l r) = itemSPic itm <> foldMap (itemRotTreeSPic itm) (l <> r)
|
||||||
|
|
||||||
itemRotTreeSPic :: Item -> (ItemLink, LDTree ItemLink CItem) -> SPic
|
itemRotTreeSPic :: Item -> (ItemLink, LDTree ItemLink OItem) -> SPic
|
||||||
itemRotTreeSPic par (il, t) = translateSP p . overPosSP (Q.rotate q) $ itemTreeSPic t
|
itemRotTreeSPic par (il, t) = translateSP p . overPosSP (Q.rotate q) $ itemTreeSPic t
|
||||||
where
|
where
|
||||||
(p, q) = orientAttachment par il itm
|
(p, q) = orientAttachment par il itm
|
||||||
|
|||||||
@@ -72,20 +72,20 @@ heldItemRelativeOrient itm cr (p, q)
|
|||||||
sLen = _strideLength $ _crStance cr
|
sLen = _strideLength $ _crStance cr
|
||||||
|
|
||||||
handleOrient :: LocationLDT ItemLink OItem -> Point3Q
|
handleOrient :: LocationLDT ItemLink OItem -> Point3Q
|
||||||
handleOrient _ = (V3 3 0 0, Q.qID)
|
handleOrient _ = (V3 (-3) 0 0, Q.qID)
|
||||||
|
|
||||||
-- note this is relative to the creature
|
-- note this is relative to the creature
|
||||||
handOrient :: Creature -> AimStance -> Point3Q
|
handOrient :: Creature -> AimStance -> Point3Q
|
||||||
handOrient cr = case cr ^. crStance . posture of
|
handOrient cr = case cr ^. crStance . posture of
|
||||||
Aiming -> \case
|
Aiming -> \case
|
||||||
TwoHandUnder -> (V3 1 0 shoulderHeight, Q.qID)
|
TwoHandUnder -> (V3 (-3) 0 shoulderHeight, Q.qID)
|
||||||
TwoHandOver -> (V3 0 0 shoulderHeight, Q.qID)
|
TwoHandOver -> (V3 0 0 shoulderHeight, Q.qID)
|
||||||
OneHand -> (V3 13 (-2) shoulderHeight, Q.qID)
|
OneHand -> (V3 13 (-2) shoulderHeight, Q.qID)
|
||||||
TwoHandFlat -> (V3 13 0 shoulderHeight, Q.qID)
|
TwoHandFlat -> (V3 13 0 shoulderHeight, Q.qID)
|
||||||
AtEase -> \case
|
AtEase -> \case
|
||||||
OneHand -> (V3 (10 + walkhandp) (-7) 15, Q.qID)
|
OneHand -> (V3 (10 + walkhandp) (-7) 15, Q.qID)
|
||||||
TwoHandFlat -> (V3 10 0 15, Q.axisAngle (V3 0 0 1) $ twoFlatHRot cr)
|
TwoHandFlat -> (V3 10 0 15, Q.axisAngle (V3 0 0 1) $ twoFlatHRot cr)
|
||||||
TwoHandUnder -> (V3 10 0 15, Q.axisAngle (V3 0 0 1) (strideRot cr + 1.2))
|
TwoHandUnder -> (V3 7 (-8) 15, Q.axisAngle (V3 0 0 1) (strideRot cr + 1.2))
|
||||||
TwoHandOver -> (V3 10 0 15, Q.axisAngle (V3 0 0 1) (strideRot cr + 1.2))
|
TwoHandOver -> (V3 10 0 15, Q.axisAngle (V3 0 0 1) (strideRot cr + 1.2))
|
||||||
where
|
where
|
||||||
walkhandp = case cr ^? crStance . carriage of
|
walkhandp = case cr ^? crStance . carriage of
|
||||||
@@ -112,8 +112,14 @@ aimStanceHandlePos _ it = case itemBaseStance it of
|
|||||||
OneHand -> V2 10 (-2)
|
OneHand -> V2 10 (-2)
|
||||||
TwoHandFlat -> V2 10 0
|
TwoHandFlat -> V2 10 0
|
||||||
|
|
||||||
heldItemOffset :: Item -> Creature -> Point3 -> Point3
|
heldItemOffset :: LocationLDT ItemLink OItem -> Creature -> Point3 -> Point3
|
||||||
heldItemOffset itm cr p = fst (heldItemRelativeOrient itm cr (p, Q.qID))
|
heldItemOffset loc cr p = x + Q.rotate q p
|
||||||
|
where
|
||||||
|
(x,q) = handOrient cr (aimStance (loc ^. locLDT))
|
||||||
|
`Q.comp` handleOrient loc
|
||||||
|
|
||||||
|
heldItemOffset' :: Item -> Creature -> Point3 -> Point3
|
||||||
|
heldItemOffset' itm cr p = fst (heldItemRelativeOrient itm cr (p, Q.qID))
|
||||||
|
|
||||||
shoulderHeight :: Float
|
shoulderHeight :: Float
|
||||||
shoulderHeight = 18
|
shoulderHeight = 18
|
||||||
|
|||||||
@@ -3354,10 +3354,10 @@ advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f
|
|||||||
advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 44;" f
|
advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 44;" f
|
||||||
aimDelaySweep src/Dodge/Render/Picture.hs 264;" f
|
aimDelaySweep src/Dodge/Render/Picture.hs 264;" f
|
||||||
aimStance src/Dodge/Item/AimStance.hs 13;" f
|
aimStance src/Dodge/Item/AimStance.hs 13;" f
|
||||||
aimStanceHandlePos src/Dodge/Item/HeldOffset.hs 105;" f
|
aimStanceHandlePos src/Dodge/Item/HeldOffset.hs 108;" f
|
||||||
aimStanceInfo src/Dodge/Item/Info.hs 243;" f
|
aimStanceInfo src/Dodge/Item/Info.hs 243;" f
|
||||||
aimTurn src/Dodge/Creature/YourControl.hs 165;" f
|
aimTurn src/Dodge/Creature/YourControl.hs 165;" f
|
||||||
aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 101;" f
|
aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 104;" f
|
||||||
airlock src/Dodge/Room/Airlock.hs 19;" f
|
airlock src/Dodge/Room/Airlock.hs 19;" f
|
||||||
airlock0 src/Dodge/Room/Airlock.hs 25;" f
|
airlock0 src/Dodge/Room/Airlock.hs 25;" f
|
||||||
airlock90 src/Dodge/Room/Airlock.hs 122;" f
|
airlock90 src/Dodge/Room/Airlock.hs 122;" f
|
||||||
@@ -4528,14 +4528,15 @@ halfHeight src/Dodge/Base/Window.hs 48;" f
|
|||||||
halfWidth src/Dodge/Base/Window.hs 48;" f
|
halfWidth src/Dodge/Base/Window.hs 48;" f
|
||||||
haltSound src/Dodge/SoundLogic.hs 38;" f
|
haltSound src/Dodge/SoundLogic.hs 38;" f
|
||||||
hammerCheck src/Dodge/HeldUse.hs 63;" f
|
hammerCheck src/Dodge/HeldUse.hs 63;" f
|
||||||
handOrient src/Dodge/Item/HeldOffset.hs 75;" f
|
handOrient src/Dodge/Item/HeldOffset.hs 78;" f
|
||||||
handleEvent src/Dodge/Event.hs 27;" f
|
handleEvent src/Dodge/Event.hs 27;" f
|
||||||
handleHotkeys src/Dodge/Creature/YourControl.hs 45;" f
|
handleHotkeys src/Dodge/Creature/YourControl.hs 45;" f
|
||||||
handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f
|
handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f
|
||||||
handleMouseButtonEvent src/Dodge/Event/Input.hs 63;" f
|
handleMouseButtonEvent src/Dodge/Event/Input.hs 63;" f
|
||||||
handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f
|
handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f
|
||||||
handleMouseWheelEvent src/Dodge/Event/Input.hs 58;" f
|
handleMouseWheelEvent src/Dodge/Event/Input.hs 58;" f
|
||||||
handlePos src/Dodge/Item/HeldOffset.hs 130;" f
|
handleOrient src/Dodge/Item/HeldOffset.hs 74;" f
|
||||||
|
handlePos src/Dodge/Item/HeldOffset.hs 136;" f
|
||||||
handleResizeEvent src/Dodge/Event.hs 53;" f
|
handleResizeEvent src/Dodge/Event.hs 53;" f
|
||||||
handleTextInput src/Dodge/Event/Input.hs 18;" f
|
handleTextInput src/Dodge/Event/Input.hs 18;" f
|
||||||
handleWindowMoveEvent src/Dodge/Event.hs 44;" f
|
handleWindowMoveEvent src/Dodge/Event.hs 44;" f
|
||||||
@@ -4560,14 +4561,15 @@ heldAimStance src/Dodge/Item/AimStance.hs 22;" f
|
|||||||
heldAimZoom src/Dodge/Update/Camera.hs 140;" f
|
heldAimZoom src/Dodge/Update/Camera.hs 140;" f
|
||||||
heldEffect src/Dodge/HeldUse.hs 60;" f
|
heldEffect src/Dodge/HeldUse.hs 60;" f
|
||||||
heldEffectMuzzles src/Dodge/HeldUse.hs 127;" f
|
heldEffectMuzzles src/Dodge/HeldUse.hs 127;" f
|
||||||
heldHandlePos src/Dodge/Item/HeldOffset.hs 135;" f
|
heldHandlePos src/Dodge/Item/HeldOffset.hs 141;" f
|
||||||
heldInfo src/Dodge/Item/Info.hs 90;" f
|
heldInfo src/Dodge/Item/Info.hs 90;" f
|
||||||
heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 18;" f
|
heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 18;" f
|
||||||
heldItemBulkiness src/Dodge/Creature/YourControl.hs 177;" f
|
heldItemBulkiness src/Dodge/Creature/YourControl.hs 177;" f
|
||||||
heldItemInvLock src/Dodge/HeldUse.hs 474;" f
|
heldItemInvLock src/Dodge/HeldUse.hs 474;" f
|
||||||
heldItemMuzVel src/Dodge/HeldUse.hs 1055;" f
|
heldItemMuzVel src/Dodge/HeldUse.hs 1055;" f
|
||||||
heldItemMuzzles src/Dodge/HeldUse.hs 156;" f
|
heldItemMuzzles src/Dodge/HeldUse.hs 156;" f
|
||||||
heldItemOffset src/Dodge/Item/HeldOffset.hs 112;" f
|
heldItemOffset src/Dodge/Item/HeldOffset.hs 115;" f
|
||||||
|
heldItemOffset' src/Dodge/Item/HeldOffset.hs 118;" f
|
||||||
heldItemOrient2D src/Dodge/Item/HeldOffset.hs 37;" f
|
heldItemOrient2D src/Dodge/Item/HeldOffset.hs 37;" f
|
||||||
heldItemOrient2D' src/Dodge/Item/HeldOffset.hs 42;" f
|
heldItemOrient2D' src/Dodge/Item/HeldOffset.hs 42;" f
|
||||||
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 47;" f
|
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 47;" f
|
||||||
@@ -4743,7 +4745,7 @@ itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f
|
|||||||
itemInvLock src/Dodge/HeldUse.hs 469;" f
|
itemInvLock src/Dodge/HeldUse.hs 469;" f
|
||||||
itemMuzzles src/Dodge/HeldUse.hs 141;" f
|
itemMuzzles src/Dodge/HeldUse.hs 141;" f
|
||||||
itemRandomOffset src/Dodge/HeldUse.hs 992;" f
|
itemRandomOffset src/Dodge/HeldUse.hs 992;" f
|
||||||
itemRelativeOrient src/Dodge/Item/HeldOffset.hs 179;" f
|
itemRelativeOrient src/Dodge/Item/HeldOffset.hs 185;" f
|
||||||
itemRooms src/Dodge/LockAndKey.hs 39;" f
|
itemRooms src/Dodge/LockAndKey.hs 39;" f
|
||||||
itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f
|
itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f
|
||||||
itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f
|
itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f
|
||||||
@@ -4865,7 +4867,7 @@ locGoHelp src/Dodge/DoubleTree.hs 273;" f
|
|||||||
locGoLeft src/Dodge/DoubleTree.hs 262;" f
|
locGoLeft src/Dodge/DoubleTree.hs 262;" f
|
||||||
locGoRight src/Dodge/DoubleTree.hs 267;" f
|
locGoRight src/Dodge/DoubleTree.hs 267;" f
|
||||||
locLeftmost src/Dodge/DoubleTree.hs 255;" f
|
locLeftmost src/Dodge/DoubleTree.hs 255;" f
|
||||||
locOrientation src/Dodge/Item/HeldOffset.hs 94;" f
|
locOrientation src/Dodge/Item/HeldOffset.hs 97;" f
|
||||||
locRightmost src/Dodge/DoubleTree.hs 258;" f
|
locRightmost src/Dodge/DoubleTree.hs 258;" f
|
||||||
locToTop src/Dodge/DoubleTree.hs 250;" f
|
locToTop src/Dodge/DoubleTree.hs 250;" f
|
||||||
locUp src/Dodge/DoubleTree.hs 237;" f
|
locUp src/Dodge/DoubleTree.hs 237;" f
|
||||||
@@ -5809,7 +5811,7 @@ shootingRange src/Dodge/Room/Room.hs 332;" f
|
|||||||
shortPoint2 src/Dodge/ShortShow.hs 4;" f
|
shortPoint2 src/Dodge/ShortShow.hs 4;" f
|
||||||
shortShow src/ShortShow.hs 9;" f
|
shortShow src/ShortShow.hs 9;" f
|
||||||
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f
|
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f
|
||||||
shoulderHeight src/Dodge/Item/HeldOffset.hs 115;" f
|
shoulderHeight src/Dodge/Item/HeldOffset.hs 121;" f
|
||||||
shoulderSH src/Dodge/Creature/Picture.hs 133;" f
|
shoulderSH src/Dodge/Creature/Picture.hs 133;" f
|
||||||
shoulderSP src/Dodge/Creature/HandPos.hs 170;" f
|
shoulderSP src/Dodge/Creature/HandPos.hs 170;" f
|
||||||
showAttachItem src/Dodge/Item/Display.hs 91;" f
|
showAttachItem src/Dodge/Item/Display.hs 91;" f
|
||||||
@@ -5959,7 +5961,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f
|
|||||||
strFromHeldItem src/Dodge/Creature/Statistics.hs 60;" f
|
strFromHeldItem src/Dodge/Creature/Statistics.hs 60;" f
|
||||||
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 35;" f
|
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 35;" f
|
||||||
strictify src/MaybeHelp.hs 37;" f
|
strictify src/MaybeHelp.hs 37;" f
|
||||||
strideRot src/Dodge/Item/HeldOffset.hs 118;" f
|
strideRot src/Dodge/Item/HeldOffset.hs 124;" f
|
||||||
stringToList src/Picture/Base.hs 313;" f
|
stringToList src/Picture/Base.hs 313;" f
|
||||||
stringToListGrad src/Picture/Text.hs 12;" f
|
stringToListGrad src/Picture/Text.hs 12;" f
|
||||||
stripZ src/Geometry/Vector3D.hs 97;" f
|
stripZ src/Geometry/Vector3D.hs 97;" f
|
||||||
@@ -6183,7 +6185,7 @@ twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f
|
|||||||
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f
|
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f
|
||||||
twists src/Dodge/Creature/Test.hs 108;" f
|
twists src/Dodge/Creature/Test.hs 108;" f
|
||||||
twoFlat src/Dodge/Creature/Test.hs 105;" f
|
twoFlat src/Dodge/Creature/Test.hs 105;" f
|
||||||
twoFlatHRot src/Dodge/Item/HeldOffset.hs 127;" f
|
twoFlatHRot src/Dodge/Item/HeldOffset.hs 133;" f
|
||||||
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f
|
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f
|
||||||
twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f
|
twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f
|
||||||
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 533;" f
|
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 533;" f
|
||||||
|
|||||||
Reference in New Issue
Block a user