この記事は自分用です。
最近、OSgridのopensimのバージョンアップ更新頻度が高く、当方所有のSIM (aska) もUPDATEするのも手間です。
Viewer Firestormでテレポートすると、simulatorバージョンが異なると、↓のように
simulatorバージョン(ChannelVersion)の詳細を表示してくれます
この詳細バージョンのデータを何とか、OpenMetaverse libomvのDLLでChannelVersionを取得したく、FireStorm Viewerのソースコードとlibomv-0.9.1のソースコードを少し漁りました。
結局、サーバからAgentMovementCompleteのメッセージが来たときに、目的のデータが入っていました。
とりあえず、、OpenMetaverse libomvのNetworkManager.csに###部を追加して強制的に表示してみた。
これだと汎用性がないので、別途OpenMetaverse.Packetsをcallbackで自アプリの方に実装する予定。
private void IncomingPacketHandler()
{
IncomingPacket incomingPacket = new IncomingPacket();
Packet packet = null;
Simulator simulator = null;
while (connected)
{
// Reset packet to null for the check below
packet = null;
if (PacketInbox.Dequeue(100, ref incomingPacket))
{
packet = incomingPacket.Packet;
simulator = incomingPacket.Simulator;
if (packet != null)
{
// Skip blacklisted packets
if (UDPBlacklist.Contains(packet.Type.ToString()))
{
Logger.Log(String.Format(“Discarding Blacklisted packet {0} from {1}”,
packet.Type, simulator.IPEndPoint), Helpers.LogLevel.Warning);
return;
}
//#################### 追加
if (packet.Type.ToString() == “AgentMovementComplete”)
{
Console.WriteLine(“#### Networkmanager.cs ####:…” + packet.Type.ToString());
string packetText = PacketDecoder.PacketToString(packet);
Console.WriteLine(packetText);
}
//####################
// Fire the callback(s), if any
PacketEvents.RaiseEvent(packet.Type, packet, simulator);
}
}
}
}
====
ChannelVersion: OpenSim 0.8.0 Dev OSgrid 0.8.0 (Dev) 73891c7: 2014-05-09 (Unix/Mono)
が取得できてます。で、それがどうしたのと言われても特に何もありません・・。
関連: