diff --git a/EffekseerForMMD/effekseer_dll.cpp b/EffekseerForMMD/effekseer_dll.cpp index 440f405..70d8b49 100644 --- a/EffekseerForMMD/effekseer_dll.cpp +++ b/EffekseerForMMD/effekseer_dll.cpp @@ -273,12 +273,9 @@ namespace efk MyEffect::~MyEffect() { } - void MyEffect::setMatrix(const D3DMATRIX& mat) const + void MyEffect::setMatrix(const D3DMATRIX& mat) { - auto mat4x3 = toMatrix4x3(mat); - manager->BeginUpdate(); - manager->SetBaseMatrix(handle, mat4x3); - manager->EndUpdate(); + base_matrix = toMatrix4x3(mat); } void MyEffect::update(float new_frame) @@ -287,6 +284,7 @@ namespace efk if ( now_frame > new_frame + eps ) { manager->StopEffect(handle); + handle = -1; now_frame = new_frame; return; } @@ -296,6 +294,7 @@ namespace efk for ( int i = 0; i < len; i++ ) { manager->BeginUpdate(); + manager->SetBaseMatrix(handle, base_matrix); manager->UpdateHandle(handle); manager->EndUpdate(); } @@ -304,6 +303,7 @@ namespace efk if ( len == 0 ) { manager->BeginUpdate(); + manager->SetBaseMatrix(handle, base_matrix); manager->UpdateHandle(handle, 0.0f); manager->EndUpdate(); } @@ -317,7 +317,7 @@ namespace efk void MyEffect::draw() const { - manager->DrawHandle(handle); + if ( handle != -1 ) manager->DrawHandle(handle); } void MyEffect::ifCreate() diff --git a/EffekseerForMMD/effekseer_dll.h b/EffekseerForMMD/effekseer_dll.h index 80b209b..1a78c73 100644 --- a/EffekseerForMMD/effekseer_dll.h +++ b/EffekseerForMMD/effekseer_dll.h @@ -12,7 +12,7 @@ namespace efk MyEffect(Effekseer::Manager* manager, Effekseer::Effect* effect); ~MyEffect(); - void setMatrix(const D3DMATRIX& mat) const; + void setMatrix(const D3DMATRIX& mat); void update(float delta_frame); @@ -24,6 +24,7 @@ namespace efk void create(); + Effekseer::Matrix43 base_matrix; float now_frame; Effekseer::Manager* manager; Effekseer::Handle handle;