Skip to content

Commit

Permalink
fix incorrect service touch coordinates caused by client view scale (c…
Browse files Browse the repository at this point in the history
  • Loading branch information
matrixhawk authored May 12, 2023
1 parent 1364c74 commit ba956e6
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ class CocosRemoteRenderInstance extends ICocosRemoteRender.Stub {
private int mRenderTargetHeight = 0;
private String mExtraArg = "";
private CocosTouchHandler mTouchHandler;

private int mClientViewWidth = 0;
private int mClientViewHeight = 0;
private float mTouchScaleX = 1f;
private float mTouchScaleY = 1f;

CocosRemoteRenderInstance(long platformHandle) {
mPlatformHandle = platformHandle;
Expand Down Expand Up @@ -152,7 +155,7 @@ public boolean onTouchEvent(MotionEvent event) throws RemoteException {
if (mTouchHandler == null) {
return false;
}
return mTouchHandler.onTouchEvent(event);
return mTouchHandler.onTouchEvent(event, mTouchScaleX, mTouchScaleY);
}

@Override
Expand All @@ -173,6 +176,12 @@ public void resume() {

@Override
public void updateClientWindowSize(int width, int height) throws RemoteException {
mClientViewWidth = width;
mClientViewHeight = height;
if (mClientViewWidth>0 && mClientViewHeight>0){
mTouchScaleX = mRenderTargetWidth/(float)mClientViewWidth;
mTouchScaleY = mRenderTargetHeight/(float)mClientViewHeight;
}
//TODO(cjh):
Log.e(TAG, "Not supported!");
nativeOnRenderSizeChanged(mPlatformHandle, mClientId, width, height);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public CocosTouchHandler(int windowId) {
mWindowId = windowId;
}

boolean onTouchEvent(MotionEvent pMotionEvent) {
boolean onTouchEvent(MotionEvent pMotionEvent, float scaleX, float scaleY) {
// these data are used in ACTION_MOVE and ACTION_CANCEL
final int pointerNumber = pMotionEvent.getPointerCount();
final int[] ids = new int[pointerNumber];
Expand All @@ -48,8 +48,8 @@ boolean onTouchEvent(MotionEvent pMotionEvent) {

for (int i = 0; i < pointerNumber; i++) {
ids[i] = pMotionEvent.getPointerId(i);
xs[i] = pMotionEvent.getX(i);
ys[i] = pMotionEvent.getY(i);
xs[i] = pMotionEvent.getX(i)*scaleX;
ys[i] = pMotionEvent.getY(i)*scaleY;
}

switch (pMotionEvent.getAction() & MotionEvent.ACTION_MASK) {
Expand All @@ -61,8 +61,8 @@ boolean onTouchEvent(MotionEvent pMotionEvent) {

final int indexPointerDown = pMotionEvent.getAction() >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
final int idPointerDown = pMotionEvent.getPointerId(indexPointerDown);
final float xPointerDown = pMotionEvent.getX(indexPointerDown);
final float yPointerDown = pMotionEvent.getY(indexPointerDown);
final float xPointerDown = pMotionEvent.getX(indexPointerDown)*scaleX;
final float yPointerDown = pMotionEvent.getY(indexPointerDown)*scaleY;
CocosHelper.runOnGameThreadAtForeground(new Runnable() {
@Override
public void run() {
Expand Down Expand Up @@ -104,8 +104,8 @@ public void run() {
case MotionEvent.ACTION_POINTER_UP:
final int indexPointUp = pMotionEvent.getAction() >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
final int idPointerUp = pMotionEvent.getPointerId(indexPointUp);
final float xPointerUp = pMotionEvent.getX(indexPointUp);
final float yPointerUp = pMotionEvent.getY(indexPointUp);
final float xPointerUp = pMotionEvent.getX(indexPointUp)*scaleX;
final float yPointerUp = pMotionEvent.getY(indexPointUp)*scaleY;
CocosHelper.runOnGameThreadAtForeground(new Runnable() {
@Override
public void run() {
Expand Down Expand Up @@ -145,6 +145,10 @@ public void run() {
return true;
}

boolean onTouchEvent(MotionEvent pMotionEvent) {
return onTouchEvent(pMotionEvent, 1f, 1f);
}

public void setStopHandleTouchAndKeyEvents(boolean value) {
mStopHandleTouchAndKeyEvents = value;
}
Expand Down

0 comments on commit ba956e6

Please sign in to comment.