TriLib
Search Results for

    Show / Hide Table of Contents

    Class AssetViewer

    A TriLib sample that allows the user to load models and HDR skyboxes from the local file-system and URLs. The loaded model can be manipulated (rotated, zoomed) within the scene, and the user can toggle various debug and rendering options.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    AbstractInputSystem
    AssetViewer
    Inherited Members
    AbstractInputSystem.GetMouseButton(int)
    AbstractInputSystem.GetMouseButtonDown(int)
    AbstractInputSystem.GetAxis(string)
    AbstractInputSystem.GetKey(KeyCode)
    AbstractInputSystem.GetMouseScrollDelta()
    MonoBehaviour.IsInvoking()
    MonoBehaviour.CancelInvoke()
    MonoBehaviour.Invoke(string, float)
    MonoBehaviour.InvokeRepeating(string, float, float)
    MonoBehaviour.CancelInvoke(string)
    MonoBehaviour.IsInvoking(string)
    MonoBehaviour.StartCoroutine(string)
    MonoBehaviour.StartCoroutine(string, object)
    MonoBehaviour.StartCoroutine(IEnumerator)
    MonoBehaviour.StartCoroutine_Auto(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.useGUILayout
    MonoBehaviour.runInEditMode
    Behaviour.enabled
    Behaviour.isActiveAndEnabled
    Component.GetComponent(Type)
    Component.GetComponent<T>()
    Component.TryGetComponent(Type, out Component)
    Component.TryGetComponent<T>(out T)
    Component.GetComponent(string)
    Component.GetComponentInChildren(Type, bool)
    Component.GetComponentInChildren(Type)
    Component.GetComponentInChildren<T>(bool)
    Component.GetComponentInChildren<T>()
    Component.GetComponentsInChildren(Type, bool)
    Component.GetComponentsInChildren(Type)
    Component.GetComponentsInChildren<T>(bool)
    Component.GetComponentsInChildren<T>(bool, List<T>)
    Component.GetComponentsInChildren<T>()
    Component.GetComponentsInChildren<T>(List<T>)
    Component.GetComponentInParent(Type, bool)
    Component.GetComponentInParent(Type)
    Component.GetComponentInParent<T>(bool)
    Component.GetComponentInParent<T>()
    Component.GetComponentsInParent(Type, bool)
    Component.GetComponentsInParent(Type)
    Component.GetComponentsInParent<T>(bool)
    Component.GetComponentsInParent<T>(bool, List<T>)
    Component.GetComponentsInParent<T>()
    Component.GetComponents(Type)
    Component.GetComponents(Type, List<Component>)
    Component.GetComponents<T>(List<T>)
    Component.GetComponents<T>()
    Component.CompareTag(string)
    Component.SendMessageUpwards(string, object, SendMessageOptions)
    Component.SendMessageUpwards(string, object)
    Component.SendMessageUpwards(string)
    Component.SendMessageUpwards(string, SendMessageOptions)
    Component.SendMessage(string, object)
    Component.SendMessage(string)
    Component.SendMessage(string, object, SendMessageOptions)
    Component.SendMessage(string, SendMessageOptions)
    Component.BroadcastMessage(string, object, SendMessageOptions)
    Component.BroadcastMessage(string, object)
    Component.BroadcastMessage(string)
    Component.BroadcastMessage(string, SendMessageOptions)
    Component.transform
    Component.gameObject
    Component.tag
    Object.GetInstanceID()
    Object.GetHashCode()
    Object.Equals(object)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Transform)
    Object.Instantiate(Object, Transform, bool)
    Object.Instantiate<T>(T)
    Object.Instantiate<T>(T, Vector3, Quaternion)
    Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
    Object.Instantiate<T>(T, Transform)
    Object.Instantiate<T>(T, Transform, bool)
    Object.Destroy(Object, float)
    Object.Destroy(Object)
    Object.DestroyImmediate(Object, bool)
    Object.DestroyImmediate(Object)
    Object.FindObjectsOfType(Type)
    Object.FindObjectsOfType(Type, bool)
    Object.DontDestroyOnLoad(Object)
    Object.DestroyObject(Object, float)
    Object.DestroyObject(Object)
    Object.FindSceneObjectsOfType(Type)
    Object.FindObjectsOfTypeIncludingAssets(Type)
    Object.FindObjectsOfType<T>()
    Object.FindObjectsOfType<T>(bool)
    Object.FindObjectOfType<T>()
    Object.FindObjectOfType<T>(bool)
    Object.FindObjectsOfTypeAll(Type)
    Object.FindObjectOfType(Type)
    Object.FindObjectOfType(Type, bool)
    Object.ToString()
    Object.name
    Object.hideFlags
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: TriLibCore.Samples
    Assembly: Assembly-CSharp.dll
    Syntax
    public class AssetViewer : AbstractInputSystem

    Fields

    AssetLoaderOptions

    Options controlling how the model is loaded (e.g., whether to import materials, animations, cameras, etc.). If not set in the inspector, a default is created at runtime.

    Declaration
    public AssetLoaderOptions AssetLoaderOptions
    Field Value
    Type Description
    AssetLoaderOptions

    CameraAngle

    Current angles for camera rotation around the loaded model (x = yaw, y = pitch).

    Declaration
    public Vector2 CameraAngle
    Field Value
    Type Description
    Vector2

    CameraDistance

    Current camera distance from the CameraPivot.

    Declaration
    public float CameraDistance
    Field Value
    Type Description
    float

    CameraDistanceRatio

    Specifies how far the camera should be placed from the loaded model, in relation to the model’s bounding size.

    Declaration
    public const float CameraDistanceRatio = 2
    Field Value
    Type Description
    float

    CameraPivot

    The position the camera orbits around (usually at or near the model’s center/bounds).

    Declaration
    public Vector3 CameraPivot
    Field Value
    Type Description
    Vector3

    CanvasScaler

    Reference to the scene’s CanvasScaler for configuring UI scaling on different devices.

    Declaration
    [SerializeField]
    public CanvasScaler CanvasScaler
    Field Value
    Type Description
    CanvasScaler

    FilePickerAssetLoader

    An instance of the TriLib file picker for selecting models/directories on supported platforms.

    Declaration
    public AssetLoaderFilePicker FilePickerAssetLoader
    Field Value
    Type Description
    AssetLoaderFilePicker

    InputMultiplier

    Dynamically scales input movement based on the loaded model’s bounding size. Larger models result in a higher InputMultiplier for easier navigation.

    Declaration
    public float InputMultiplier
    Field Value
    Type Description
    float

    InputMultiplierRatio

    Scales mouse movement inputs (higher means more sensitive movements).

    Declaration
    public const float InputMultiplierRatio = 0.1
    Field Value
    Type Description
    float

    MaxPitch

    The maximum pitch angle for the camera or directional light (rotation around X-axis). Prevents flipping beyond 80 degrees.

    Declaration
    public const float MaxPitch = 80
    Field Value
    Type Description
    float

    MinCameraDistance

    The minimum allowable camera distance to the pivot (prevents zooming through the model).

    Declaration
    public const float MinCameraDistance = 0.01
    Field Value
    Type Description
    float

    PeakMemory

    Tracks the peak memory usage (in bytes) observed during model loading. Reset each time a new model is loaded.

    Declaration
    public long PeakMemory
    Field Value
    Type Description
    long

    Play

    Button (or other UnityEngine.UI.Selectable) used to trigger animation playback.

    Declaration
    [SerializeField]
    public Selectable Play
    Field Value
    Type Description
    Selectable

    PlaybackAnimation

    Dropdown listing available animation clips on the loaded model. Allows the user to switch between clips.

    Declaration
    [SerializeField]
    public Dropdown PlaybackAnimation
    Field Value
    Type Description
    Dropdown

    PlaybackSlider

    Slider representing the normalized time of the current animation. Allows manual scrubbing through the clip if the animation is not playing.

    Declaration
    [SerializeField]
    public Slider PlaybackSlider
    Field Value
    Type Description
    Slider

    PlaybackTime

    Displays the current animation time in a mm:ss format.

    Declaration
    [SerializeField]
    public Text PlaybackTime
    Field Value
    Type Description
    Text

    Skybox

    A dedicated UnityEngine.GameObject for rendering the HDR skybox.

    Declaration
    [SerializeField]
    public GameObject Skybox
    Field Value
    Type Description
    GameObject

    SkyboxScale

    Used for scaling the skybox in relation to the loaded model’s bounding size.

    Declaration
    public const float SkyboxScale = 100
    Field Value
    Type Description
    float

    Stop

    Button (or other UnityEngine.UI.Selectable) used to stop animation playback.

    Declaration
    [SerializeField]
    public Selectable Stop
    Field Value
    Type Description
    Selectable

    Properties

    Instance

    A singleton reference to the active AssetViewer in the scene, established in Start().

    Declaration
    public static AssetViewer Instance { get; }
    Property Value
    Type Description
    AssetViewer

    RootGameObject

    The root UnityEngine.GameObject of the currently loaded model. If a new model is loaded, the previous root is destroyed and replaced.

    Declaration
    public GameObject RootGameObject { get; set; }
    Property Value
    Type Description
    GameObject

    Methods

    CameraChanged(int)

    Switches between cameras (if any) embedded in the loaded model and the default user camera. Triggered by the “Camera” dropdown TriLibCore.Samples.AssetViewer._camerasDropdown.

    Declaration
    public void CameraChanged(int index)
    Parameters
    Type Name Description
    int index

    The dropdown index indicating which camera to enable.

    ClearSkybox()

    Removes the existing HDR skybox texture, setting the skybox to a default blank state.

    Declaration
    public void ClearSkybox()

    HideHelp()

    Hides the help or usage instructions panel.

    Declaration
    public void HideHelp()

    HideModelUrlDialog()

    Hides the model URL dialog and clears the entered URL text.

    Declaration
    public void HideModelUrlDialog()

    IsLoading()

    Indicates whether a model (or skybox) is currently being loaded.

    Declaration
    public bool IsLoading()
    Returns
    Type Description
    bool

    True if the system is loading; otherwise, false.

    LoadModelFromDirectory()

    Displays a folder picker dialog to load a model from all files in the chosen directory. The AssetLoaderOptions are updated with user toggles before loading.

    Declaration
    public void LoadModelFromDirectory()

    LoadModelFromFile()

    Displays a file picker dialog to select a single model file. Updates AssetLoaderOptions based on UI toggles before loading.

    Declaration
    public void LoadModelFromFile()

    LoadModelFromURL(UnityWebRequest, string, GameObject, object, Action<AssetLoaderContext>)

    Loads a model from a remote URL, optionally handling zip archives if fileExtension indicates a “.zip”. Integrates with TriLib’s AssetDownloader for network downloads.

    Declaration
    public void LoadModelFromURL(UnityWebRequest request, string fileExtension, GameObject wrapperGameObject = null, object customData = null, Action<AssetLoaderContext> onMaterialsLoad = null)
    Parameters
    Type Name Description
    UnityWebRequest request

    A UnityEngine.Networking.UnityWebRequest pointing to the model.

    string fileExtension

    File extension (e.g., fbx, zip) for load logic.

    GameObject wrapperGameObject

    Optional parent for the loaded model’s root UnityEngine.GameObject.

    object customData

    Optional user data passed into TriLib load methods.

    Action<AssetLoaderContext> onMaterialsLoad

    Optional callback after textures and materials finish loading.

    LoadModelFromURLWithDialogValues()

    Loads a model from the URL the user entered into TriLibCore.Samples.AssetViewer._modelUrl. Invokes LoadModelFromURL(UnityWebRequest, string, GameObject, object, Action<AssetLoaderContext>) once the user commits the address.

    Declaration
    public void LoadModelFromURLWithDialogValues()

    LoadSkyboxFromFile()

    Opens a file picker dialog to select an HDR image for the skybox.

    Declaration
    public void LoadSkyboxFromFile()

    OnBeginLoadModel(bool)

    Called when the user either selects a file/directory/url or cancels the dialog. If a file was chosen, clears previous model data and starts tracking load time.

    Declaration
    public void OnBeginLoadModel(bool hasFiles)
    Parameters
    Type Name Description
    bool hasFiles

    True if the user selected a file/directory, otherwise false (canceled).

    OnDebugOptionsDropdownChanged(int)

    Invoked when the user changes an option in the debug dropdown, switching between various debug shaders (e.g., normals, albedo) or showing/hiding the skeleton.

    Declaration
    public void OnDebugOptionsDropdownChanged(int value)
    Parameters
    Type Name Description
    int value

    The zero-based index of the debug option selected.

    OnError(IContextualizedError)

    Called if any error occurs during model loading. Displays the error message in the UI, logs it to the console, stops animation playback, and disables the loading state.

    Declaration
    public void OnError(IContextualizedError contextualizedError)
    Parameters
    Type Name Description
    IContextualizedError contextualizedError

    Provides context on the error, including the exception and potentially related data.

    OnFastLoadToggleChanged(bool)

    Toggles “Fast Mode” on or off. When on, certain advanced settings (e.g., advanced geometry processing) are disabled to speed up loading, at the cost of skipping some features.

    Declaration
    public void OnFastLoadToggleChanged(bool value)
    Parameters
    Type Name Description
    bool value

    True if fast load mode is toggled on, false otherwise.

    OnLoad(AssetLoaderContext)

    Called once the model’s meshes and hierarchy are loaded (but before textures/materials). Resets certain viewer state, configures cameras, handles animations, etc.

    Declaration
    public void OnLoad(AssetLoaderContext assetLoaderContext)
    Parameters
    Type Name Description
    AssetLoaderContext assetLoaderContext

    Context containing the newly loaded root UnityEngine.GameObject and other references.

    OnMaterialsLoad(AssetLoaderContext)

    Invoked once textures and materials finish loading, indicating the model is fully ready. Disables the loading UI, logs load time, and handles post-load actions (e.g., skeleton display).

    Declaration
    public void OnMaterialsLoad(AssetLoaderContext assetLoaderContext)
    Parameters
    Type Name Description
    AssetLoaderContext assetLoaderContext

    Provides references to the fully loaded model, including RootGameObject and any instantiated components.

    OnModelTransformChanged()

    Repositions the camera relative to the loaded model bounds whenever the model’s transform changes. Adjusts the skybox scale and sets CameraDistance accordingly.

    Declaration
    public void OnModelTransformChanged()

    OnPointCloudToggleChanged(bool)

    Toggles point cloud loading. Also toggles visibility of the point size UI slider/label.

    Declaration
    public void OnPointCloudToggleChanged(bool value)
    Parameters
    Type Name Description
    bool value

    True if point clouds should be loaded, false otherwise.

    OnPointSizeSliderChanged(float)

    Called when the point size slider value changes, updating the size of any PointRenderer components rendering point clouds.

    Declaration
    public void OnPointSizeSliderChanged(float value)
    Parameters
    Type Name Description
    float value

    A float representing the new point size.

    OnProgress(AssetLoaderContext, float)

    Reports loading progress for the current model (0.0 to 1.0). Updates the loading bar’s width accordingly.

    Declaration
    public void OnProgress(AssetLoaderContext assetLoaderContext, float value)
    Parameters
    Type Name Description
    AssetLoaderContext assetLoaderContext

    Provides info about the current load process.

    float value

    A float from 0.0 to 1.0 representing the loading progress.

    OnSkyboxExposureChanged(float)

    Adjusts the skybox exposure level based on exposure, updating the reflection probe to reflect the new brightness.

    Declaration
    public void OnSkyboxExposureChanged(float exposure)
    Parameters
    Type Name Description
    float exposure

    A float representing the skybox exposure multiplier.

    PlayAnimation()

    Begins playback of the currently selected animation (if any). Uses the name from PlaybackAnimation to identify the clip.

    Declaration
    public void PlayAnimation()

    PlaybackAnimationChanged(int)

    When the animation selection changes in PlaybackAnimation, stops the currently playing animation to allow switching to the new one.

    Declaration
    public void PlaybackAnimationChanged(int index)
    Parameters
    Type Name Description
    int index

    The zero-based index for the selected animation option.

    PlaybackSliderChanged(float)

    Invoked when the PlaybackSlider value changes. If no animation is playing, updates the RootGameObject to display the current frame of the selected animation at that normalized time.

    Declaration
    public void PlaybackSliderChanged(float value)
    Parameters
    Type Name Description
    float value

    Normalized time [0..1] for the animation.

    ProcessInput()

    Processes input each frame, such as rotating, zooming, or panning the camera, but only if the primary TriLibCore.Samples.AssetViewer._mainCamera is active.

    Declaration
    public void ProcessInput()

    ResetModelScale()

    Resets the loaded model’s scale to Vector3.one if a model is present. Called after loading or reloading a model to clear any previously applied scaling.

    Declaration
    public void ResetModelScale()

    SetCustomBounds(Bounds)

    Adjusts the camera to fit a specific bounding volume (e.g., after user modifications), updating CameraDistance, CameraPivot, and skybox scaling.

    Declaration
    public void SetCustomBounds(Bounds bounds)
    Parameters
    Type Name Description
    Bounds bounds

    The bounding volume to fit the camera to.

    SetLoading(bool)

    Toggles loading state UI, disabling or enabling UnityEngine.UI.Selectable elements, and showing or hiding the TriLibCore.Samples.AssetViewer._loadingWrapper and TriLibCore.Samples.AssetViewer._loadingBar.

    Declaration
    public void SetLoading(bool value)
    Parameters
    Type Name Description
    bool value

    If true, shows loading UI; false hides loading UI.

    ShowHelp()

    Displays the help panel.

    Declaration
    public void ShowHelp()

    ShowModelUrlDialog()

    Shows the input field and dialog for loading a model from a remote URL.

    Declaration
    public void ShowModelUrlDialog()

    Start()

    Initializes this AssetViewer, setting up references, toggles, and default skybox conditions. Called automatically on scene load.

    Declaration
    public void Start()

    StopAnimation()

    Stops playback of the currently selected animation and resets its time to zero.

    Declaration
    public void StopAnimation()

    UpdateCamera()

    Updates camera angles based on mouse movement (pitch and yaw), applying InputMultiplierRatio and clamping pitch within MaxPitch.

    Declaration
    public void UpdateCamera()

    Extension Methods

    IObjectExtensions.TryToDispose<T>(object)
    In this article
    Back to top Generated by DocFX