Open1

UEFN,Verseのソースコードのクラス図の可視化

イワケンイワケン

@startuml

package Devices{
    creative_device --|> creative_object_interface
    creative_device_base --|> creative_object
    creative_object --|> creative_object_interface
    creative_prop --|> creative_object
    creative_object -> move_to_result
    DeviceMethods -> spawn_prop_result
    trigger_device --|> trigger_base_device
    trigger_base_device --|> creative_device_base
    vending_machine_device --|> creative_device_base
    timer_device --|> creative_device_base
    teleporter_device --|> creative_device_base
    score_manager_device --|> creative_device_base
    DeviceMethods ---> creative_prop_asset

    class DeviceMethods{
      +  []creative_object_interface GetCreativeObjectsWithTag(Tag:tag)
      +  []creative_object_interface GetCreativeObjectsWithTags(SearchCriteria:tag_search_criteria)
      +  tag_view GetTags(CreativeObject:creative_object_interface)
      +  fort_playspace GetPlayspace(CreativeObject:creative_object_interface)
      +  tuple(?creative_prop, spawn_prop_result) SpawnProp(Asset:creative_prop_asset,Transform:transform)
    }
    
    class creative_device {
        + void OnBegin()
        + void OnEnd()
        + transform GetTransform()
        + void TeleportTo(Position:vector3, Rotation:rotation)
        + move_to_result MoveTo(Position:vector3, Rotation:rotation, OverTime:float)
        + void Show()
        + void Hide()
    }
    
    class creative_device_base {
    }
    
    class creative_device_asset {
    }
    
    interface creative_object_interface {
    }
    
    class creative_object {
        + transform GetTransform()
        + void TeleportTo(Position:vector3, Rotation:rotation)
        + move_to_result MoveTo(Position:vector3, Rotation:rotation, OverTime:float)
    }
    
    class creative_prop {
        + void Dispose()
        + void IsValid()
        + void SetMesh(Mesh:mesh)
        + void SetMaterial(Material:material, ?Index:int)
        + void Show()
        + void Hide()
    }
    
    class creative_prop_asset {
    }
    
    enum spawn_prop_result {
        Ok,
        UnknownError,
        InvalidSpawnPoint,
        SpawnPointOutOfBounds,
        InvalidAsset,
        TooManyProps
    }
    
    enum move_to_result {
        DestinationReached,
        WillNotReachDestination
    }



    class trigger_device{

    }
    abstract class trigger_base_device{

    }

}

package Game{
    creative_object_interface --|> positional
    interface positional{
        + transform GetTransform()
    }
}

package Verse{
    creative_prop --|> invalidatable
    invalidatable --|> disposable
    interface invalidatable{
        + void IsValid()
    }

    interface  disposable{
        + void Dispose()
    }
}

package Simulation {
    package Tags{
        DeviceMethods -> tag
        abstract class tag{

        }
        interface tag_view{
            + void Has(TagToCheck:tag)
            + void HasAny(InTags:[]tag)
            + void HasWall(InTags:[]tag)
        }

        enum tag_search_sort_type {
            Unsorted
            Sorted
        }

        class tag_search_criteria{
            + []tag RequiredTags()
            + []tag PreferredTags()
            + []tag ExclusionTags()
            + tag_search_sort_type SortType()
        }
    }

    player --|> agent
    class agent{

    }
    class player{

    }
}
package Playspaces{
    DeviceMethods -> fort_playspace
    fort_playspace -> player
    interface fort_playspace {
        +[]player GetPlayers()
        + fort_team_collection GetTeamCollection()
        + listenable(player) PlayerAddedEvent
        + listenable(player) PlayerRemovedEvent
    }
    
}

original_verse_device --|> creative_device