メッシュ操作その1

要件

  1. mesh_componentを取得する
  2. 10秒おきに表示と非表示を切り替える

使用する機能

確認する
# メッシュを取得
GetComponent<native><final><public>(component_type:castable_subtype(component))<reads><decides>:component_type

# 表示の切り替え
mesh_component.Visible

回答

回答を見る
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }

toggle_mesh_component := class<final_super>(component):

    OnSimulate<override>()<suspends>:void=
        if(MeshComponent := Entity.GetComponent[mesh_component]):
            loop:
                set MeshComponent.Visible = true
                Sleep(10.0)
                set MeshComponent.Visible = false
                Sleep(10.0)

別解一覧

using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }

toggle_mesh_component := class<final_super>(component):

    var MaybeMeshComponent:?mesh_component = false

    OnBeginSimulation<override>():void=
        if(MeshComponent := Entity.GetComponent[mesh_component]):
            set MaybeMeshComponent = option{MeshComponent}

    OnSimulate<override>()<suspends>:void=
        if(MeshComponent := MaybeMeshComponent?):
            loop:
                set MeshComponent.Visible = true
                Sleep(10.0)
                set MeshComponent.Visible = false
                Sleep(10.0)

OnSimulate以外の箇所でもmesh_componentの機能を使いたい場合などは、オプション型に収納してあげることで毎回GetComponent関数を呼び出さなくてよくなります。