48class ObjectPoihana final :
public ObjectPoihanaBase {
51 ~ObjectPoihana()
override;
56 void calc()
override {
57 ObjectPoihanaBase::calc();
61 void enterStateStub() {}
65 m_walkState = WalkState::NeedTarget;
68 void calcStateStub() {}
71 void calcState0And1() {
73 calcPosAndCollision();
74 calcOrthonormalBasis();
75 setTransform(m_workMat);
80 return m_workMat.base(3);
83 void calcCurRot(f32 t);
84 void calcOrthonormalBasis();
96 void calcPosAndCollision() {
98 m_workMat.setBase(3, m_workMat.base(3) + (m_extVel + m_vel));
104 f32 scale = (v0.z * v1.z + (v0.x * v1.x + v0.y * v1.y)) /
110 static constexpr std::array<StateManagerEntry, 8> STATE_ENTRIES = {{
111 {StateEntry<ObjectPoihana, &ObjectPoihana::enterState0, &ObjectPoihana::calcState0And1>(
113 {StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
114 &ObjectPoihana::calcState0And1>(1)},
115 {StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
116 &ObjectPoihana::calcStateStub>(2)},
117 {StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
118 &ObjectPoihana::calcStateStub>(3)},
119 {StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
120 &ObjectPoihana::calcStateStub>(4)},
121 {StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
122 &ObjectPoihana::calcStateStub>(5)},
123 {StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
124 &ObjectPoihana::calcStateStub>(6)},
125 {StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
126 &ObjectPoihana::calcStateStub>(7)},