diff blow/Makefile blow_analog_pad/Makefile 4,5c4,5 < SRCS = blow.c physics.c sjoy.c < OBJS = blow.o physics.o sjoy.o --- > SRCS = blow.c physics.c sjoy.c lmp_joypad.c > OBJS = blow.o physics.o sjoy.o lmp_joypad.o diff blow/blow.c blow_analog_pad/blow.c 27a28,31 > #include "lmp_joypad.h" > #define DIGITAL_PAD 0 > > 484a489 > float theta2, phi2, padwork; 491a497,499 > /* --- アナログジョイスティックサンプルで追加 */ > padread lmp_read; > /* ------------------------------------------ */ 575c583,584 < --- > > #if DIGITAL_PAD 576a586,589 > #else > /* ----- アナログジョイスティックサンプル */ > lmp_pad_init(PAD_ANALOG_ON, PAD_ANALOG_BUTTON_OFF); > #endif 602a616 > #if DIGITAL_PAD 620c634 < --- > 635a650,718 > > #else > /* ----- アナログジョイスティックで回す */ > lmp_pad_poll(); > lmp_pad_read(0, &lmp_read); > printf("0: %f\n", padwork); > > /* ----- theta direction */ > if (lmp_read.stick_l[1] > 0xa0) { > padwork = (float)(lmp_read.stick_l[1] - 0xa0); > theta -= (dtheta * 2.0f / (97.0f - padwork)); > } > if (lmp_read.stick_l[1] < 0x60) { > padwork = (float)(0x60 - lmp_read.stick_l[1]); > theta += (dtheta * 2.0f / (97.0f - padwork)); > } > > /* ----- phi direction */ > if (lmp_read.stick_l[0] > 0xa0) { > padwork = (float)(lmp_read.stick_l[0] - 0xa0); > phi -= (dtheta * 2.0f / (97.0f - padwork)); > } > if (lmp_read.stick_l[0] < 0x60) { > padwork = (float)(0x60 - lmp_read.stick_l[0]); > phi += (dtheta * 2.0f / (97.0f - padwork)); > } > > /* ------- 右側スティックは絶対カメラ指定 */ > /* ----- theta direction */ > theta2 = 0.0f; > if (lmp_read.stick_r[1] > 0xa0) { > padwork = (float)(lmp_read.stick_r[1] - 0xa0); > theta2 = (dtheta * padwork / 2.0f); > } > if (lmp_read.stick_r[1] < 0x60) { > padwork = (float)(0x60 - lmp_read.stick_r[1]); > theta2 = -(dtheta * padwork / 2.0f); > } > > /* ----- phi direction */ > phi2 = 0.0f; > if (lmp_read.stick_r[0] > 0xa0) { > padwork = (float)(lmp_read.stick_r[0] - 0xa0); > phi2 = (dtheta * padwork / 4.0f); > } > if (lmp_read.stick_r[0] < 0x60) { > padwork = (float)(0x60 - lmp_read.stick_r[0]); > phi2 = -(dtheta * padwork / 4.0f); > } > > theta2 += theta; > phi2 += phi; > // --- adjust invalid angle --- > if (theta2 > 2.0f * pi) { > theta2 -= 2.0f * pi; > } else if (theta2 < 0.0f) { > theta2 += 2.0f * pi; > } > > if (phi2 >= 0.49f * pi) { > phi2 = 0.49f * pi; > } else if (phi2 <= -0.49f * pi) { > phi2 = -0.49f * pi; > } > > // --- Viewing Matrix --- > SetViewPosition(view, theta2, phi2); > #endif >