Refactor, try to limit dependencies
This commit is contained in:
@@ -1,33 +1,36 @@
|
||||
module Dodge.Creature.HandPos where
|
||||
import Dodge.Data
|
||||
import Dodge.Creature.Test
|
||||
--import Shape
|
||||
import ShapePicture
|
||||
import Geometry
|
||||
|
||||
import Control.Lens
|
||||
import Data.Maybe
|
||||
import Dodge.Creature.Test
|
||||
import Dodge.Data.Creature
|
||||
import Geometry
|
||||
import ShapePicture
|
||||
|
||||
-- the position of a weapon handle
|
||||
aimingWeaponHandlePos :: Creature -> Item -> Float
|
||||
aimingWeaponHandlePos cr it = case it ^? itUse. useAim . aimStance of
|
||||
Just TwoHandTwist -> -5
|
||||
Just OneHand -> 14
|
||||
Just TwoHandFlat -> 1.2 * _crRad cr
|
||||
aimingWeaponHandlePos cr it = case it ^? itUse . heldAim . aimStance of
|
||||
Just TwoHandTwist -> -5
|
||||
Just OneHand -> 14
|
||||
Just TwoHandFlat -> 1.2 * _crRad cr
|
||||
Just LeaveHolstered -> 0
|
||||
Nothing -> 0
|
||||
Nothing -> 0
|
||||
|
||||
aimingWeaponZeroPos :: Creature -> Item -> Float
|
||||
aimingWeaponZeroPos cr it = aimingWeaponHandlePos cr it
|
||||
- fromMaybe 0 (it ^? itUse . useAim . aimHandlePos)
|
||||
aimingWeaponZeroPos cr it =
|
||||
aimingWeaponHandlePos cr it
|
||||
- fromMaybe 0 (it ^? itUse . heldAim . aimHandlePos)
|
||||
|
||||
aimingMuzzlePos :: Creature -> Item -> Float
|
||||
aimingMuzzlePos cr it = aimingWeaponZeroPos cr it
|
||||
+ fromMaybe 0 (it ^? itUse . useAim . aimMuzPos)
|
||||
aimingMuzzlePos cr it =
|
||||
aimingWeaponZeroPos cr it
|
||||
+ fromMaybe 0 (it ^? itUse . heldAim . aimMuzPos)
|
||||
|
||||
translatePointToRightHand :: Creature -> Point3 -> Point3
|
||||
translatePointToRightHand cr = translatePointToRightHand' cr . mirrorV3xz
|
||||
|
||||
mirrorV3xz :: Point3 -> Point3
|
||||
mirrorV3xz (V3 x y z) = V3 x (-y) z
|
||||
mirrorV3xz (V3 x y z) = V3 x (- y) z
|
||||
|
||||
translatePointToRightHand' :: Creature -> Point3 -> Point3
|
||||
translatePointToRightHand' cr
|
||||
@@ -35,8 +38,8 @@ translatePointToRightHand' cr
|
||||
| twists cr = (+.+.+ V3 0 5 20) . rotate3 (-1) . (+.+.+ V3 4 (-10) 0)
|
||||
| twoFlat cr = (+.+.+ V3 4 (-8) 10)
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> (+.+.+ V3 (-f sa) (-off) 10)
|
||||
_ -> (+.+.+ V3 0 (-off) 10)
|
||||
Just (Walking sa LeftForward) -> (+.+.+ V3 (- f sa) (- off) 10)
|
||||
_ -> (+.+.+ V3 0 (- off) 10)
|
||||
where
|
||||
off = 8
|
||||
sLen = _strideLength $ _crStance cr
|
||||
@@ -47,12 +50,12 @@ translateToRightHand cr = translateToRightHand' cr . mirrorSPxz
|
||||
|
||||
translateToRightHand' :: Creature -> SPic -> SPic
|
||||
translateToRightHand' cr
|
||||
| oneH cr = shoulderSP . translateSPf 11 (-3) . rotateSP (-0.5)-- . scaleSH (V3 1 1.5 1)
|
||||
| oneH cr = shoulderSP . translateSPf 11 (-3) . rotateSP (-0.5) -- . scaleSH (V3 1 1.5 1)
|
||||
| twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 4 (-10)
|
||||
| twoFlat cr = waistSP . translateSPf 4 (-8)
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> waistSP . translateSPf (-f sa) (-off)
|
||||
_ -> waistSP . translateSPf 0 (-off)
|
||||
Just (Walking sa LeftForward) -> waistSP . translateSPf (- f sa) (- off)
|
||||
_ -> waistSP . translateSPf 0 (- off)
|
||||
where
|
||||
off = 8
|
||||
sLen = _strideLength $ _crStance cr
|
||||
@@ -63,12 +66,12 @@ translateToRightWrist cr = translateToRightWrist' cr . mirrorSPxz
|
||||
|
||||
translateToRightWrist' :: Creature -> SPic -> SPic
|
||||
translateToRightWrist' cr
|
||||
| oneH cr = shoulderSP . translateSPf 11 (-3) . rotateSP (-0.5) . offTrans-- . scaleSH (V3 1 1.5 1)
|
||||
| oneH cr = shoulderSP . translateSPf 11 (-3) . rotateSP (-0.5) . offTrans -- . scaleSH (V3 1 1.5 1)
|
||||
| twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 4 (-10) . offTrans
|
||||
| twoFlat cr = waistSP . translateSPf 4 (-8) . offTrans
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> waistSP . translateSPf (-f sa) (-off) . offTrans
|
||||
_ -> waistSP . translateSPf 0 (-off) . offTrans
|
||||
Just (Walking sa LeftForward) -> waistSP . translateSPf (- f sa) (- off) . offTrans
|
||||
_ -> waistSP . translateSPf 0 (- off) . offTrans
|
||||
where
|
||||
offTrans = translateSP (V3 0 4 (-4))
|
||||
off = 8
|
||||
@@ -81,7 +84,7 @@ translatePointToLeftHand cr
|
||||
| twists cr = (+.+.+ V3 0 5 20) . rotate3 (-1) . (+.+.+ V3 12 4 0) . rotate3 0.4
|
||||
| twoFlat cr = (+.+.+ V3 4 8 10)
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa RightForward) -> (+.+.+ V3 (-f sa) off 10)
|
||||
Just (Walking sa RightForward) -> (+.+.+ V3 (- f sa) off 10)
|
||||
_ -> (+.+.+ V3 0 off 10)
|
||||
where
|
||||
off = 8
|
||||
@@ -94,7 +97,7 @@ translateToLeftHand cr
|
||||
| twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 12 4
|
||||
| twoFlat cr = waistSP . translateSPf 4 8
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa RightForward) -> waistSP . translateSPf (-f sa) off
|
||||
Just (Walking sa RightForward) -> waistSP . translateSPf (- f sa) off
|
||||
_ -> waistSP . translateSPf 0 off
|
||||
where
|
||||
off = 8
|
||||
@@ -107,7 +110,7 @@ translateToLeftWrist cr
|
||||
| twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 12 4 . offTrans
|
||||
| twoFlat cr = waistSP . translateSPf 4 8 . offTrans
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa RightForward) -> waistSP . translateSPf (-f sa) off . offTrans
|
||||
Just (Walking sa RightForward) -> waistSP . translateSPf (- f sa) off . offTrans
|
||||
_ -> waistSP . translateSPf 0 off . offTrans
|
||||
where
|
||||
offTrans = translateSP (V3 0 4 (-4))
|
||||
@@ -116,20 +119,22 @@ translateToLeftWrist cr
|
||||
f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen
|
||||
|
||||
translateToLeftLeg :: Creature -> SPic -> SPic
|
||||
translateToLeftLeg cr = rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> translateSPf ( f sa) off
|
||||
Just (Walking sa RightForward) -> translateSPf (-f sa) off
|
||||
_ -> translateSPf 0 off
|
||||
translateToLeftLeg cr =
|
||||
rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> translateSPf (f sa) off
|
||||
Just (Walking sa RightForward) -> translateSPf (- f sa) off
|
||||
_ -> translateSPf 0 off
|
||||
where
|
||||
off = 5
|
||||
sLen = _strideLength $ _crStance cr
|
||||
f i = 6 * fromIntegral (sLen - i) / fromIntegral sLen
|
||||
|
||||
translateToRightLeg :: Creature -> SPic -> SPic
|
||||
translateToRightLeg cr = rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> translateSPf (-f sa) (-off)
|
||||
Just (Walking sa RightForward) -> translateSPf ( f sa) (-off)
|
||||
_ -> translateSPf 0 (-off)
|
||||
translateToRightLeg cr =
|
||||
rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> translateSPf (- f sa) (- off)
|
||||
Just (Walking sa RightForward) -> translateSPf (f sa) (- off)
|
||||
_ -> translateSPf 0 (- off)
|
||||
where
|
||||
off = 5
|
||||
sLen = _strideLength $ _crStance cr
|
||||
@@ -137,35 +142,40 @@ translateToRightLeg cr = rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStanc
|
||||
|
||||
translateToHead :: Creature -> SPic -> SPic
|
||||
translateToHead cr
|
||||
| twists cr = translateSPz 20 . translateSPf 0 5 . rotateSP (-1) . translateSPf (negate 2.5) 0.25
|
||||
| twists cr =
|
||||
translateSPz 20 . translateSPf 0 5 . rotateSP (-1) . translateSPf (negate 2.5) 0.25
|
||||
. rotateSP 1
|
||||
| oneH cr = translateSPz 20 . rotateSP 0.5 . translateSPf 2.5 0
|
||||
| oneH cr =
|
||||
translateSPz 20 . rotateSP 0.5 . translateSPf 2.5 0
|
||||
. rotateSP (negate 0.5)
|
||||
| otherwise = translateSPz 20 . translateSPf 2.5 0
|
||||
| otherwise = translateSPz 20 . translateSPf 2.5 0
|
||||
|
||||
translatePointToHead :: Creature -> Point3 -> Point3
|
||||
translatePointToHead cr
|
||||
| twists cr = (+.+.+ V3 0 5 20) . rotate3 (-1) . (+.+.+ V3 (negate 2.5) 0.25 0)
|
||||
| twists cr =
|
||||
(+.+.+ V3 0 5 20) . rotate3 (-1) . (+.+.+ V3 (negate 2.5) 0.25 0)
|
||||
. rotate3 1
|
||||
| oneH cr = (+.+.+ V3 0 0 20) . rotate3 0.5 . (+.+.+ V3 2.5 0 0)
|
||||
| oneH cr =
|
||||
(+.+.+ V3 0 0 20) . rotate3 0.5 . (+.+.+ V3 2.5 0 0)
|
||||
. rotate3 (negate 0.5)
|
||||
| otherwise = (+.+.+ V3 2.5 0 20)
|
||||
|
||||
translateToChest :: Creature -> SPic -> SPic
|
||||
translateToChest cr
|
||||
| oneH cr = rotateSP 0.5
|
||||
-- | twists cr = translateSPf 0 5 . rotateSP (-1)
|
||||
| oneH cr = rotateSP 0.5
|
||||
-- | twists cr = translateSPf 0 5 . rotateSP (-1)
|
||||
| twists cr = rotateSP (-1)
|
||||
| otherwise = id
|
||||
|
||||
translateToBack :: Creature -> SPic -> SPic
|
||||
translateToBack cr
|
||||
| oneH cr = rotateSP 0.5
|
||||
-- | twists cr = translateSPf 0 5 . rotateSP (-1)
|
||||
| oneH cr = rotateSP 0.5
|
||||
-- | twists cr = translateSPf 0 5 . rotateSP (-1)
|
||||
| twists cr = rotateSP (-1)
|
||||
| otherwise = id
|
||||
|
||||
shoulderSP :: SPic -> SPic
|
||||
shoulderSP = translateSPz 20
|
||||
|
||||
waistSP :: SPic -> SPic
|
||||
waistSP = translateSPz 10
|
||||
|
||||
Reference in New Issue
Block a user