extends Node

    # 読込進捗通知シグナル
    signal _scene_loading(percent)

    # 読込完了シグナル
    signal _loaded_scene(scene)

    # 読込失敗シグナル
    signal _scene_load_error
    
    # ローディングチェック時間
    const LIMIT_SEC : float = 0.1

    # ローディング積算時間
    var loading_time : float

    # ローディング対象パス
    var target_path : String
    
    # 対象シーンパス設定
    func set_target_scene(path):
    # ターゲットパスをキャッシュ
        target_path = path

        # スレッドを利用してリソースを読み込む
        ResourceLoader.load_threaded_request(target_path)

        # ローディング積算時間初期化
        loading_time = 0
        return OK
    

    # ローディング処理
    func process(delta):
    # 進捗通知を格納する配列型変数
    var p : Array[int] = [0]

        # 進捗メッセージを格納する変数
        var ret : int
        
        # ローディング時間の積算
        loading_time += delta

        # 一定時間間隔で読み込み状況をチェックする
        if loading_time > LIMIT_SEC :
        # ローディング積算時間初期化
        loading_time = 0

        # リソースローダーから指定パスのリソースの読み込み状況を取得する
            ret = ResourceLoader.load_threaded_get_status(target_path, p)
            
            # 読み込み状況で処理を分ける
            match ret :
                ResourceLoader.THREAD_LOAD_INVALID_RESOURCE :
                # 読み込み不可能
                return

                ResourceLoader.THREAD_LOAD_IN_PROGRESS :
                # 読み込み中
                pass

                ResourceLoader.THREAD_LOAD_FAILED :
                # 読み込み失敗
                emit_signal('_scene_load_error')
                return

                ResourceLoader.THREAD_LOAD_LOADED :
                # 読み込み完了
                emit_signal('_loaded_scene', ResourceLoader.load_threaded_get(target_path))
                pass

        # 進捗通知
        emit_signal('_scene_loading', p[0])