Table of Contents

Class LoadedAv

Namespace
Uralstech.AvLoader

A loaded avatar and its associated data.

public abstract class LoadedAv
Inheritance
object
LoadedAv
Derived

Constructors

LoadedAv(GameObject, AvMetadata, Texture2D?, Texture2D?, Type)

protected LoadedAv(GameObject gameObject, AvMetadata metadata, Texture2D? fullRender, Texture2D? bustRender, Type importerType)

Parameters

gameObject GameObject
metadata AvMetadata
fullRender Texture2D?
bustRender Texture2D?
importerType Type

Fields

BustRender

Optional bust render of the avatar.

public readonly Texture2D? BustRender

Field Value

Texture2D?

DestroyOnDispose

Deprecated. Use LifetimeObjects and the RegisterLifetimeObject(Object) APIs instead.

[Obsolete("Use LifetimeObjects/RegisterLifetimeObject/DeregisterLifetimeObject instead.")]
public readonly List<UnityEngine.Object> DestroyOnDispose

Field Value

List<UnityEngine.Object>

FullRender

Optional full render of the avatar.

public readonly Texture2D? FullRender

Field Value

Texture2D?

GameObject

The avatar's GameObject.

public readonly GameObject GameObject

Field Value

GameObject

ImporterType

The type of the importer which created this LoadedAv.

public readonly Type ImporterType

Field Value

Type

Metadata

Metadata of the avatar.

public readonly AvMetadata Metadata

Field Value

AvMetadata

Properties

LifetimeObjects

Unity objects whose lifetime is owned by this avatar.

public IReadOnlyCollection<UnityEngine.Object> LifetimeObjects { get; }

Property Value

IReadOnlyCollection<UnityEngine.Object>

Remarks

All registered objects are destroyed when the avatar is disposed. FullRender and BustRender are registered automatically. Call DeregisterLifetimeObject(Object) to take ownership of an object and prevent it from being destroyed.

Methods

DeregisterLifetimeObject(Object)

Removes a Unity object from the avatar's lifetime ownership.

public void DeregisterLifetimeObject(UnityEngine.Object unityObject)

Parameters

unityObject Object

Remarks

After deregistration, the caller becomes responsible for destroying the object. This is can be used to retain FullRender or BustRender.

Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

public void Dispose()

GetAvatarMaterials(bool)

Gets all materials used by the avatar.

public IReadOnlyList<Material> GetAvatarMaterials(bool refreshCache = false)

Parameters

refreshCache bool

Returns

IReadOnlyList<Material>

Remarks

Results are cached. Call with refreshCache set to true if renderers or materials change at runtime.

GetAvatarMeshes(bool)

Gets all meshes used by the avatar.

public IReadOnlyList<Mesh> GetAvatarMeshes(bool refreshCache = false)

Parameters

refreshCache bool

Returns

IReadOnlyList<Mesh>

Remarks

Results are cached. Call with refreshCache set to true if renderers or meshes change at runtime.

GetAvatarRenderers(bool)

Gets all renderers used by the avatar.

[SuppressMessage("Style", "IDE0046:Convert to conditional expression", Justification = "Avoids double conditional, improves readability.")]
public IReadOnlyList<Renderer> GetAvatarRenderers(bool refreshCache = false)

Parameters

refreshCache bool

Returns

IReadOnlyList<Renderer>

Remarks

Results are cached. Call with refreshCache set to true if renderers change at runtime.

GetCapability<T>()

Casts the current avatar object to T.

public T GetCapability<T>() where T : ICapability

Returns

T

The casted result.

Type Parameters

T

The capability type to cast to.

ImporterSpecificDispose()

protected virtual void ImporterSpecificDispose()

RegisterLifetimeObject(Object)

Registers a Unity object to be destroyed when the avatar is disposed.

public void RegisterLifetimeObject(UnityEngine.Object unityObject)

Parameters

unityObject Object

Remarks

Intended for post-processors and extensions that create temporary runtime objects.

ThrowIfDisposed()

protected void ThrowIfDisposed()

TryGetAvatarMaterials()

Tries to get all materials of the avatar.

public virtual IReadOnlyList<Material>? TryGetAvatarMaterials()

Returns

IReadOnlyList<Material>

TryGetAvatarMeshes()

Tries to get all meshes of the avatar.

public virtual IReadOnlyList<Mesh>? TryGetAvatarMeshes()

Returns

IReadOnlyList<Mesh>

TryGetAvatarRenderers()

Tries to get all renderers of the avatar.

public virtual IReadOnlyList<Renderer>? TryGetAvatarRenderers()

Returns

IReadOnlyList<Renderer>

TryGetCapability<T>(out T?)

Tries to cast the current avatar object to T.

public bool TryGetCapability<T>(out T? capability) where T : ICapability

Parameters

capability T

The casted result, or null if casting failed.

Returns

bool

true if casted successfully; false otherwise.

Type Parameters

T

The capability type to cast to.

Remarks

Ultimately, this is just syntactic sugar for:

if (avatar is T capability)
    ...
else
    ...