Open yukio55 opened 8 years ago
Player::checkUserDataをコピーして Player::getUserDataを作成、 コールバックを呼ぶ部分をreturn _userData 変更することで実装しましたが 他になにか良い方法があればご教授願います。 (他のreturn文は return nullptrとしました)
任意のフレームのユーザーデータを取得したいという事ですが、ユーザーデータは任意のフレーム番号から含まれている各データにアクセスできる様に格納されております。 実装された方法の様にユーザーデータコールバック関数を元に作成するのがよいかと思います。
注意点としては、同じフレームに複数のパーツのユーザーデータが含まれる場合があるため、 _userDataCallback(this, &_userData); を return _userData;のようにしてしまいますと、1つのユーザーデータを取得した所でreturnしてしまうため、同フレームの他のユーザーデータを取得する事ができません。
それを考慮すると例えばstd::vectorを利用して、
std::vector<UserData> rc;
各パーツのデータの取得処理
rc.push_back(_userData);
return(rc);
の様に配列を返す様にするとよいのかなと思います。 他のreturnについてもrcを返しておけばデータが無い場合はrcのcountが0になるので、アプリ側の処理はイテレーター参照ループを作成する事でデータの有無に関わらず処理を統一できるのではないかと思います。
なるほど、複数のパーツの同フレームにユーザーデータが設定される場合を考慮してませんでした。 ありがとうございました。
任意のフレームのユーザーデータをコールバックを経由せず 事前に取得したいのですが、そのような方法がありますか?