diff --git a/src/Dodge/Creature/HandPos.hs b/src/Dodge/Creature/HandPos.hs index 7586e1f89..9756dd5dd 100644 --- a/src/Dodge/Creature/HandPos.hs +++ b/src/Dodge/Creature/HandPos.hs @@ -47,6 +47,22 @@ 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) + | 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) | twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 4 (-10) . offTrans | twoFlat cr = waistSP . translateSPf 4 (-8) . offTrans @@ -54,7 +70,7 @@ translateToRightHand' cr Just (Walking sa LeftForward) -> waistSP . translateSPf (-f sa) (-off) . offTrans _ -> waistSP . translateSPf 0 (-off) . offTrans where - offTrans = translateSP (V3 0 (-4) (-4)) + offTrans = translateSP (V3 0 4 (-4)) off = 8 sLen = _strideLength $ _crStance cr f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen @@ -74,6 +90,19 @@ translatePointToLeftHand cr translateToLeftHand :: Creature -> SPic -> SPic 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 | twists cr = shoulderSP . translateSPf 0 5 . rotateSP (-1) . translateSPf 12 4 . offTrans | twoFlat cr = waistSP . translateSPf 4 8 . offTrans diff --git a/src/Dodge/Item/Equipment/Shape.hs b/src/Dodge/Item/Equipment/Shape.hs index 80770dba8..be35aae1b 100644 --- a/src/Dodge/Item/Equipment/Shape.hs +++ b/src/Dodge/Item/Equipment/Shape.hs @@ -13,8 +13,8 @@ pictureOnEquip sp cr itm = fromMaybe mempty $ do return $ equipPosition epos cr sp equipPosition :: EquipPosition -> Creature -> SPic -> SPic equipPosition epos cr sh = case epos of - OnLeftWrist -> translateToLeftHand cr sh - OnRightWrist -> translateToRightHand cr sh + OnLeftWrist -> translateToLeftWrist cr sh + OnRightWrist -> translateToRightWrist cr sh OnLegs -> translateToLeftLeg cr sh <> translateToRightLeg cr (mirrorSPxz sh) OnHead -> translateToHead cr sh