| 787 | return b_clamb_jump; |
| 788 | } |
| 789 | bool CPHSimpleCharacter::ValidateWalkOnMesh() |
| 790 | { |
| 791 | Fvector AABB, AABB_forbid, center, center_forbid, accel_add, accel; |
| 792 | |
| 793 | AABB.x = m_radius; |
| 794 | AABB.y = m_radius; |
| 795 | AABB.z = m_radius; |
| 796 | |
| 797 | AABB_forbid.set(AABB); |
| 798 | // AABB_forbid.x*=0.7f; |
| 799 | // AABB_forbid.z*=0.7f; |
| 800 | AABB_forbid.y += m_radius; |
| 801 | AABB_forbid.mul(CHWON_AABB_FB_FACTOR); |
| 802 | |
| 803 | accel_add.set(m_acceleration); |
| 804 | float mag = accel_add.magnitude(); |
| 805 | if (!(mag > 0.f)) |
| 806 | return true; |
| 807 | accel_add.mul(CHWON_ACCLEL_SHIFT / mag); |
| 808 | accel.set(accel_add); |
| 809 | accel.div(CHWON_ACCLEL_SHIFT); |
| 810 | AABB.mul(CHWON_AABB_FACTOR); |
| 811 | GetPosition(center); |
| 812 | center.add(accel_add); |
| 813 | center_forbid.set(center); |
| 814 | center_forbid.y += CHWON_CALL_FB_HIGHT; |
| 815 | center.y += m_radius + CHWON_CALL_UP_SHIFT; |
| 816 | |
| 817 | // perform single query / two usages |
| 818 | Fbox query, tmp; |
| 819 | Fvector q_c, q_d; |
| 820 | query.set(center_forbid, center_forbid); |
| 821 | query.grow(AABB_forbid); |
| 822 | tmp.set(center, center); |
| 823 | tmp.grow(AABB); |
| 824 | query.merge(tmp); |
| 825 | query.get_CD(q_c, q_d); |
| 826 | |
| 827 | XRC.box_query(0, Level().ObjectSpace.GetStaticModel(), q_c, q_d); |
| 828 | // Fvector fv_dir;fv_dir.mul(accel,1.f/mag); |
| 829 | Fvector sd_dir; |
| 830 | sd_dir.set(-accel.z, 0, accel.x); |
| 831 | Fvector obb_fb; |
| 832 | obb_fb.set(m_radius * 0.5f, m_radius * 2.f, m_radius * 0.7f); |
| 833 | Fvector obb; |
| 834 | obb.set(m_radius * 0.5f, m_radius, m_radius * 0.7f); |
| 835 | #ifdef DEBUG |
| 836 | if (ph_dbg_draw_mask.test(phDbgCharacterControl)) |
| 837 | { |
| 838 | Fmatrix m; |
| 839 | m.identity(); |
| 840 | m.i.set(sd_dir); |
| 841 | m.k.set(accel); |
| 842 | m.c.set(center); |
| 843 | DBG_DrawOBB(m, obb, D3DCOLOR_XRGB(0, 255, 0)); |
| 844 | m.c.set(center_forbid); |
| 845 | DBG_DrawOBB(m, obb_fb, D3DCOLOR_XRGB(255, 0, 0)); |
| 846 | } |
nothing calls this directly
no test coverage detected