Avatar Appearance
From libopenmetaverse - libomv - Developer Wiki
Version 0.8.0 and newer
Release 0.8.0 and newer deal with appearance settings automatically if you:
- Make sure you copy folder openmetaverse_data to your clients bin directory.
- Make sure you have one of the following copied to your bots/clients bin directory
- openjpeg-dotnet.dll (Windows/.NET and Windows/Mono)
- openjpeg-dotnet-x86_64.dll (64-bit versions of Windows)
- libopenjpeg-dotnet-2.1.3.0-dotnet-1.dylib (Apple OSX/Mono)
- libopenjpeg-dotnet-2.1.3.0-dotnet-1-i686.so (Linux/Mono 32bit)
- libopenjpeg-dotnet-2.1.3.0-dotnet-1-x86_64.so (Linux/Mono x86_64)
For Linux (all architectures) you will also need OpenMetaverse.dll.config copied to your bot/clients bin directory
Your appearance cannot contain any textures from the Library (These "Linden" Textures cannot be downloaded and the bake will fail or produce strange results)
Older versions
The library supports basic appearance baking, which means it can set your previous appearance set in the viewer or set your avatars appearance using items stored in a folder in your inventory.
When you connect to your first region always use SetPreviousAppearance(true);
Meaning make sure you check its the current Sim (The typical mistake is that people do it for all simulator connections)
public void Network_OnEventQueueRuning(Simulator simulator) { if (simulator==client.Network.CurrentSim) { client.Appearance.SetPreviousAppearance(true); } }
When you cross regions you can use the following. This needs to be sent after initial login and anytime you switch from one simulator to another. The best way of doing this is in the OnCurrentSimChanged event
public override void Network_OnCurrentSimChanged(Simulator PreviousSimulator) { if (PreviousSimulator != null) { client.Appearance.SetPreviousAppearance(false); } }
Dont forget before you connect to register the above code in your GridClient:
// subscribe to the events
Client.Network.OnCurrentSimChanged += Network_OnCurrentSimChanged;
Client.Network.OnEventQueueRuning += Network_OnEventQueueRuning;