Differentiate wrist and hand positions
This commit is contained in:
@@ -47,6 +47,22 @@ translateToRightHand cr = translateToRightHand' cr . mirrorSPxz
|
|||||||
|
|
||||||
translateToRightHand' :: Creature -> SPic -> SPic
|
translateToRightHand' :: Creature -> SPic -> SPic
|
||||||
translateToRightHand' cr
|
translateToRightHand' cr
|
||||||
|
| 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)
|
||||||
|
where
|
||||||
|
off = 8
|
||||||
|
sLen = _strideLength $ _crStance cr
|
||||||
|
f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen
|
||||||
|
|
||||||
|
translateToRightWrist :: Creature -> SPic -> SPic
|
||||||
|
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
|
| twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 4 (-10) . offTrans
|
||||||
| twoFlat cr = waistSP . translateSPf 4 (-8) . offTrans
|
| twoFlat cr = waistSP . translateSPf 4 (-8) . offTrans
|
||||||
@@ -54,7 +70,7 @@ translateToRightHand' cr
|
|||||||
Just (Walking sa LeftForward) -> waistSP . translateSPf (-f sa) (-off) . offTrans
|
Just (Walking sa LeftForward) -> waistSP . translateSPf (-f sa) (-off) . offTrans
|
||||||
_ -> waistSP . translateSPf 0 (-off) . offTrans
|
_ -> waistSP . translateSPf 0 (-off) . offTrans
|
||||||
where
|
where
|
||||||
offTrans = translateSP (V3 0 (-4) (-4))
|
offTrans = translateSP (V3 0 4 (-4))
|
||||||
off = 8
|
off = 8
|
||||||
sLen = _strideLength $ _crStance cr
|
sLen = _strideLength $ _crStance cr
|
||||||
f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen
|
f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen
|
||||||
@@ -74,6 +90,19 @@ translatePointToLeftHand cr
|
|||||||
|
|
||||||
translateToLeftHand :: Creature -> SPic -> SPic
|
translateToLeftHand :: Creature -> SPic -> SPic
|
||||||
translateToLeftHand cr
|
translateToLeftHand cr
|
||||||
|
| oneH cr = waistSP . rotateSP 0.4 . translateSPf 0 off
|
||||||
|
| 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
|
||||||
|
_ -> waistSP . translateSPf 0 off
|
||||||
|
where
|
||||||
|
off = 8
|
||||||
|
sLen = _strideLength $ _crStance cr
|
||||||
|
f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen
|
||||||
|
|
||||||
|
translateToLeftWrist :: Creature -> SPic -> SPic
|
||||||
|
translateToLeftWrist cr
|
||||||
| oneH cr = waistSP . rotateSP 0.4 . translateSPf 0 off . offTrans
|
| oneH cr = waistSP . rotateSP 0.4 . translateSPf 0 off . offTrans
|
||||||
| twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 12 4 . offTrans
|
| twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 12 4 . offTrans
|
||||||
| twoFlat cr = waistSP . translateSPf 4 8 . offTrans
|
| twoFlat cr = waistSP . translateSPf 4 8 . offTrans
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ pictureOnEquip sp cr itm = fromMaybe mempty $ do
|
|||||||
return $ equipPosition epos cr sp
|
return $ equipPosition epos cr sp
|
||||||
equipPosition :: EquipPosition -> Creature -> SPic -> SPic
|
equipPosition :: EquipPosition -> Creature -> SPic -> SPic
|
||||||
equipPosition epos cr sh = case epos of
|
equipPosition epos cr sh = case epos of
|
||||||
OnLeftWrist -> translateToLeftHand cr sh
|
OnLeftWrist -> translateToLeftWrist cr sh
|
||||||
OnRightWrist -> translateToRightHand cr sh
|
OnRightWrist -> translateToRightWrist cr sh
|
||||||
OnLegs -> translateToLeftLeg cr sh <>
|
OnLegs -> translateToLeftLeg cr sh <>
|
||||||
translateToRightLeg cr (mirrorSPxz sh)
|
translateToRightLeg cr (mirrorSPxz sh)
|
||||||
OnHead -> translateToHead cr sh
|
OnHead -> translateToHead cr sh
|
||||||
|
|||||||
Reference in New Issue
Block a user