2014年5月12日月曜日

OSgrid テレポート先のChannelVersionの取得:(OpenMetaverse libomv-0.9.1)

この記事は自分用です。
最近、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で自アプリの方に実装する予定。


//***NetworkManager.cs
        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)
が取得できてます。で、それがどうしたのと言われても特に何もありません・・。


関連:

FireStorm Viewer のビルド & サイズ制限解除(1024mまでok,メッシュも)


0 件のコメント:

コメントを投稿