SpriteStudio / SS5PlayerForCocos2d-x

OPTPiX SpriteStudio 5 で制作したアニメーションデータを Cocos2d-x v3 v2 上で再生するためのプログラムです。
MIT License
8 stars 7 forks source link

v1.1.5 エミッターの生存時間を無限にする方法はありますか? #36

Open DKAlpha opened 8 years ago

DKAlpha commented 8 years ago

こちらについてはSS5.6.1にてSS本体、プレイヤーにて正式に対応を行う予定です。 ループ時のエフェクトリセットも設定できるようにする予定です。

暫定の対処法として、エミッターの生存時間を180(最大)にすると生存時間が無限になる改造方法を記載したします。 まずはこちらで対応していただき、正式版の公開をお待ちください。

ssplayer_effect.cpp に含まれます SsEffectRenderEmitter::update(float delta) 関数を 以下のように変更してください。

void SsEffectRenderEmitter::update(float delta) {

_exsitTime += delta;
_life = _lifetime - _exsitTime;
if (_lifetime > 179.9999 && _lifetime < 180.1000000)
{
    if (_life <= 0)
    {
        _life = 1.0f;
    }
}
intervalleft+=delta;

if ( this->parent )
{
    //以下は仮
    this->position = this->parent->position;
    this->rotation = this->parent->rotation;
    this->scale = this->parent->scale;
    this->alpha = this->parent->alpha;
}
if (this->data->GetMyBehavior())
{
    SsEffectFunctionExecuter::updateEmmiter( this->data->GetMyBehavior() , this );
}

if ( this->myBatchList )
{
    this->myBatchList->priority = this->drawPriority;
    this->myBatchList->dispCell = &this->dispCell;
    this->myBatchList->blendType = this->data->GetMyBehavior()->blendType;
}

}