@@ -644,13 +644,6 @@ static void RotatePad(int *pX, int *pY, float flAngleInRad)
644644 * pX = (int )(SDL_cosf (flAngleInRad ) * origX - SDL_sinf (flAngleInRad ) * origY );
645645 * pY = (int )(SDL_sinf (flAngleInRad ) * origX + SDL_cosf (flAngleInRad ) * origY );
646646}
647- static void RotatePadShort (short * pX , short * pY , float flAngleInRad )
648- {
649- short int origX = * pX , origY = * pY ;
650-
651- * pX = (short )(SDL_cosf (flAngleInRad ) * origX - SDL_sinf (flAngleInRad ) * origY );
652- * pY = (short )(SDL_sinf (flAngleInRad ) * origX + SDL_cosf (flAngleInRad ) * origY );
653- }
654647
655648//---------------------------------------------------------------------------
656649// Format the first part of the state packet
@@ -774,9 +767,16 @@ static void FormatStatePacketUntilGyro(SteamControllerStateInternal_t *pState, V
774767//---------------------------------------------------------------------------
775768static bool UpdateBLESteamControllerState (const uint8_t * pData , int nDataSize , SteamControllerStateInternal_t * pState )
776769{
777- const float flRotationAngle = 0.261799f ;
770+ int nLeftPadX ;
771+ int nLeftPadY ;
772+ int nRightPadX ;
773+ int nRightPadY ;
774+ int nPadOffset ;
778775 uint32_t ucOptionDataMask ;
779776
777+ // 15 degrees in rad
778+ const float flRotationAngle = 0.261799f ;
779+
780780 pState -> unPacketNum ++ ;
781781 ucOptionDataMask = (* pData ++ & 0xF0 );
782782 ucOptionDataMask |= (uint32_t )(* pData ++ ) << 8 ;
@@ -805,22 +805,22 @@ static bool UpdateBLESteamControllerState(const uint8_t *pData, int nDataSize, S
805805 }
806806 if (ucOptionDataMask & k_EBLELeftTrackpadChunk ) {
807807 int nLength = sizeof (pState -> sLeftPadX ) + sizeof (pState -> sLeftPadY );
808- int nPadOffset ;
809808 SDL_memcpy (& pState -> sLeftPadX , pData , nLength );
810809 if (pState -> ulButtons & STEAM_LEFTPAD_FINGERDOWN_MASK ) {
811810 nPadOffset = 1000 ;
812811 } else {
813812 nPadOffset = 0 ;
814813 }
815814
816- RotatePadShort (& pState -> sLeftPadX , & pState -> sLeftPadY , - flRotationAngle );
817- pState -> sLeftPadX = clamp (pState -> sLeftPadX + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
818- pState -> sLeftPadY = clamp (pState -> sLeftPadY + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
815+ nLeftPadX = pState -> sLeftPadX ;
816+ nLeftPadY = pState -> sLeftPadY ;
817+ RotatePad (& nLeftPadX , & nLeftPadY , - flRotationAngle );
818+ pState -> sLeftPadX = (short )clamp (nLeftPadX + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
819+ pState -> sLeftPadY = (short )clamp (nLeftPadY + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
819820 pData += nLength ;
820821 }
821822 if (ucOptionDataMask & k_EBLERightTrackpadChunk ) {
822823 int nLength = sizeof (pState -> sRightPadX ) + sizeof (pState -> sRightPadY );
823- int nPadOffset = 0 ;
824824
825825 SDL_memcpy (& pState -> sRightPadX , pData , nLength );
826826
@@ -830,9 +830,11 @@ static bool UpdateBLESteamControllerState(const uint8_t *pData, int nDataSize, S
830830 nPadOffset = 0 ;
831831 }
832832
833- RotatePadShort (& pState -> sRightPadX , & pState -> sRightPadY , flRotationAngle );
834- pState -> sRightPadX = clamp (pState -> sRightPadX + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
835- pState -> sRightPadY = clamp (pState -> sRightPadY + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
833+ nRightPadX = pState -> sRightPadX ;
834+ nRightPadY = pState -> sRightPadY ;
835+ RotatePad (& nRightPadX , & nRightPadY , flRotationAngle );
836+ pState -> sRightPadX = (short )clamp (nRightPadX + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
837+ pState -> sRightPadY = (short )clamp (nRightPadY + nPadOffset , SDL_MIN_SINT16 , SDL_MAX_SINT16 );
836838 pData += nLength ;
837839 }
838840 if (ucOptionDataMask & k_EBLEIMUAccelChunk ) {
0 commit comments