Skip to content

Asset.AssetBase ​

アセット関連 / アセットの基底クラス

所属:assetのAPI解説 · 全モジュール索引

読み方 ​

このページは実ファイルから生成したソース照合用資料です。公開関数の引数・戻り値の型、オーバーロード、列挙値を確認できます。public/protected/privateを区別し、privateメンバーを呼び出し例に使わないでください。コメントは原文であり、古い説明や誤記を含む場合があります。利用条件・訂正は上記のAPI解説と既知の制約を優先してください。

元ファイル:ProjectName/code/Asset/AssetBase/AssetBase.ixx。確認基準:08f9fa53。

インターフェースとインライン実装 ​

cpp
module;
#include <DxLib.h>

export module Asset.AssetBase;
import <unordered_map>;
import <string>;
import <chrono>;
import <thread>;
import <string>;

/// <summary>
/// アセット関連
/// </summary>
export namespace asset
{
    /// <summary>
    /// アセットの基底クラス
    /// </summary>
    export class AssetBase
    {
    public:
        /// <summary>
        /// コンストラクタ
        /// </summary>
        AssetBase() = default;

        /// <summary>
        /// デストラクタ
        /// </summary>
        virtual ~AssetBase() = default;

        /// <summary>
        /// ハンドル生成
        /// </summary>
        /// <param name="handleName">ハンドル名</param>
        /// <param name="graphName">画像名</param>
        virtual void CreateHandle(std::string handleName, std::string graphName) = 0;

        /// <summary>
        /// ハンドル生成(非同期)
        /// </summary>
        /// <param name="handleName">ハンドル名</param>
        /// <param name="graphName">画像名</param>
        virtual void CreateHandleAsync(std::string handleName, std::string graphName) = 0;

        /// <summary>
        /// ハンドル削除
        /// </summary>
        /// <param name="name">削除するハンドル名</param>
        virtual void DeleteHandle(std::string name) = 0;

    protected:
        /// <summary>
        /// 非同期読み込みの完了待ち
        /// </summary>
        /// <remarks>
        /// CheckHandleASyncLoad の戻り値は 1:読み込み中 / 0:完了 / -1:エラー。
        /// 読み込み中の間だけ待機し、エラー(開始失敗の -1 を含む)では待機しない。
        /// </remarks>
        /// <param name="handle">確認するハンドル</param>
        /// <returns>true:読み込み完了 / false:失敗</returns>
        static bool WaitAsyncLoad(int handle)
        {
            if (handle == -1)
            {
                return false;
            }

            int result = CheckHandleASyncLoad(handle);
            while (result == TRUE)
            {
                std::this_thread::sleep_for(std::chrono::milliseconds(1));
                result = CheckHandleASyncLoad(handle);
            }
            return result == FALSE;
        }
    };
}

コード確認基準:08f9fa53 · C++実機検証は別途実施