MotionPlayer::MotionPlayer(int model_handle)
: model_handle_(model_handle), prev_attach_index_(-1), current_attach_index_(-1),
- connect_prev_(false), prev_blend_rate_(0), blend_time_(0),prev_anim_index_(-1),isloop_(true)
+ connect_prev_(false), prev_blend_rate_(0), blend_time_(0),prev_anim_index_(-1),isloop_(true),isloopcheck_(false)
{}
-void MotionPlayer::Play(int anim_index, bool connect_prev, int blend_time, int anim_src_model_handle, bool check_name, bool isloop)
+void MotionPlayer::Play(int anim_index, bool connect_prev, int blend_time, int anim_src_model_handle, bool check_name, bool isloop, int nextanim_handle, bool isloopcheck)
{
- prev_anim_index_ = MV1GetAttachAnim(model_handle_,current_attach_index_);
+ if(nextanim_handle != -1)
+ {
+ prev_anim_index_ = nextanim_handle;
+ }else{
+ prev_anim_index_ = MV1GetAttachAnim(model_handle_,current_attach_index_);
+ }
// まだ前回の移行期間の最中なら、移行を中止する
DetachPrevMotionIfExist();
prev_blend_rate_ = blend_time;
blend_time_ = blend_time;
isloop_ = isloop;
+ isloopcheck_ = isloopcheck;
+ if(!isloopcheck_)isplayend_ = false;
prev_attach_index_ = current_attach_index_;
if (blend_time_ <= 0)
if(!isloop_)
{
Stop();
- Play(prev_anim_index_,connect_prev_,200,-1,false);
+ isplayend_ = true;
+ Play(prev_anim_index_,connect_prev_,200,-1,false,true,-1,isloopcheck_);
return;
}
anim_time -= anim_total_time;
}
}
-
+bool MotionPlayer::GetPlayEnd()
+{
+ if(isplayend_)
+ {
+ isplayend_ = false;
+ return true;
+ }
+ return false;
+}
{
public:
MotionPlayer(int model_handle);
- void Play(int anim_index, bool connect_prev, int blend_time, int anim_src_model_handle, bool check_name, bool isloop = true);
+ void Play(int anim_index, bool connect_prev, int blend_time, int anim_src_model_handle, bool check_name, bool isloop = true, int nextanim_handle = -1,bool isloopcheck = false);
void Next(int diff_time);
void Stop();
+ bool GetPlayEnd();
private:
int model_handle_;
int blend_time_;
bool isloop_;
int prev_anim_index_;
+ bool isplayend_;
+ bool isloopcheck_;
void SetBlendRateToModel();
void DetachPrevMotionIfExist();
//moved_pos.y = std::max(moved_pos.y, floor_y); // 床にあたっているときは床の方がyが高くなる
if(!jump_flag_){
// 登ったり下ったりできる段差の大きさの制限を求める
- static const float y_max_limit_factor = sin(45 * PHI_F / 180);
- static const float y_min_limit_factor = sin(-45 * PHI_F / 180);
+ static const float y_max_limit_factor = sin(45 * DX_PI_F / 180);
+ static const float y_min_limit_factor = sin(-45 * DX_PI_F / 180);
const float y_max_limit = y_max_limit_factor * VSize(diff_pos);
const float y_min_limit = y_min_limit_factor * VSize(diff_pos);
{
for(int j = 0; j < slide_coll_info.HitNum; ++j)
{
- auto angle = (acos(VDot(slide_coll_info.Dim[j].Normal,current_pos - prev_pos) / (VSize(slide_coll_info.Dim[j].Normal) * VSize(current_pos - prev_pos)))*180.0f)/PHI_F;
+ auto angle = (acos(VDot(slide_coll_info.Dim[j].Normal,current_pos - prev_pos) / (VSize(slide_coll_info.Dim[j].Normal) * VSize(current_pos - prev_pos)))*180.0f)/DX_PI_F;
if(angle < 90.0f || angle > 270.0f)
{
NowPos += VScale(slide_coll_info.Dim[j].Normal, 0.1f * map_scale_);
#include <ostream>
-#define TORADIAN(DEGREE) ((DEGREE*PHI_F)/180.0f)
+#define TORADIAN(DEGREE) ((DEGREE*DX_PI_F)/180.0f)
inline VECTOR operator +(const VECTOR& lhs, const VECTOR& rhs)
{
GameLoop::GameLoop(const StagePtr& stage)
: stage_(stage),
- camera_default_stat(CameraStatus(7.0f, 0.8f, 0.0f, 20 * PHI_F / 180, false)),
+ camera_default_stat(CameraStatus(7.0f, 0.8f, 0.0f, 20 * DX_PI_F / 180, false)),
camera(camera_default_stat)
{
- SetupCamera_Perspective(PHI_F * 60.0f / 180.0f); // 視野角60度
+ SetupCamera_Perspective(DX_PI_F * 60.0f / 180.0f); // 視野角60度
SetCameraNearFar(1.0f * stage_->map_scale(), 700.0f * stage_->map_scale());
}
camera.theta += diff_x * 0.005f;
camera.phi += diff_y * 0.005f;
}
- if(camera.phi < (-40.0f * PHI_F)/180.0f)
+ if(camera.phi < (-40.0f * DX_PI_F)/180.0f)
{
- camera.phi = (-39.9f * PHI_F)/180.0f;
- }else if(camera.phi > (220.0f * PHI_F)/180.0f)
+ camera.phi = (-39.9f * DX_PI_F)/180.0f;
+ }else if(camera.phi > (220.0f * DX_PI_F)/180.0f)
{
- camera.phi = (219.0f * PHI_F)/180.0f;
+ camera.phi = (219.0f * DX_PI_F)/180.0f;
}
}
else