Exemplo n.º 1
0
    public async Task SendRegionHandshakeReply(Guid agentId, Guid sessionId, RegionHandshakeReplyFlags flags)
    {
        //Logger.LogDebug($"Circuit.SendRegionHandshakeReply({agentId}, {sessionId}, {flags}): Sending to Host={Host}");

        RegionHandshakeReplyMessage message = new RegionHandshakeReplyMessage(agentId, sessionId, flags);

        await SendReliable(message);
    }
    public RegionHandshakeReplyMessage(Guid agentId, Guid sessionId, RegionHandshakeReplyFlags replyFlags)
    {
        MessageId = MessageId.RegionHandshakeReply;
        Flags     = PacketFlags.Reliable; // TODO: message_template.msg says that this should be ZeroCoded but I don't have a way of doing that yet and Firestorm doesn't do it

        AgentId    = agentId;
        SessionId  = sessionId;
        ReplyFlags = replyFlags;
    }
Exemplo n.º 3
0
    protected static async void OnRegionHandshakeMessage(RegionHandshakeMessage message)
    {
        Region region = Agent.CurrentPlayer?.Region;

        if (region == null || region.Id != Guid.Empty && region.Id != message.RegionId)
        {
            return;
        }

        region.Id = message.RegionId;

        region.RegionFlags = message.RegionFlags;
        region.SimAccess   = message.SimAccess;
        region.Name        = message.SimName;
        region.Owner       = message.SimOwner;
        region.IsCurrentPlayerEstateOwner = message.IsEstateManager;
        region.WaterHeight           = message.WaterHeight;
        region.BillableFactor        = message.BillableFactor;
        region.CacheId               = message.CacheId;
        region.TerrainBase[0]        = message.TerrainBase0;
        region.TerrainBase[1]        = message.TerrainBase1;
        region.TerrainBase[2]        = message.TerrainBase2;
        region.TerrainBase[3]        = message.TerrainBase3;
        region.TerrainDetail[0]      = message.TerrainDetail0;
        region.TerrainDetail[1]      = message.TerrainDetail1;
        region.TerrainDetail[2]      = message.TerrainDetail2;
        region.TerrainDetail[3]      = message.TerrainDetail3;
        region.TerrainStartHeight[0] = message.TerrainStartHeight00;
        region.TerrainStartHeight[1] = message.TerrainStartHeight01;
        region.TerrainStartHeight[2] = message.TerrainStartHeight10;
        region.TerrainStartHeight[3] = message.TerrainStartHeight11;
        region.TerrainHeightRange[0] = message.TerrainHeightRange00;
        region.TerrainHeightRange[1] = message.TerrainHeightRange01;
        region.TerrainHeightRange[2] = message.TerrainHeightRange10;
        region.TerrainHeightRange[3] = message.TerrainHeightRange11;

        region.CpuClassId  = message.CpuClassId;
        region.CpuRatio    = message.CpuRatio;
        region.ColoName    = message.ColoName;
        region.ProductSku  = message.ProductSku;
        region.ProductName = message.ProductName;

        //TODO: Add RegionInfo4 when I know what it is

        string s = "";

        for (int i = 0; i < 4; i++)
        {
            s += $"\nTerrainBase{i}:   http://asset-cdn.glb.agni.lindenlab.com/?texture_id={region.TerrainBase[i]}";
            s += $"\nTerrainDetail{i}: http://asset-cdn.glb.agni.lindenlab.com/?texture_id={region.TerrainDetail[i]}";
        }
        Logger.LogDebug(s);

        EventManager.Instance.RaiseOnRegionDataChanged(region);

        // TODO: Load cache for the region, but should it be here?

        RegionHandshakeReplyFlags flags = 0
                                          | RegionHandshakeReplyFlags.SendAllCacheableObjects
                                          | RegionHandshakeReplyFlags.CacheFileIsEmpty
                                          | RegionHandshakeReplyFlags.SupportsSelfAppearance;

        await region.Circuit.SendRegionHandshakeReply(Session.Instance.AgentId, Session.Instance.SessionId, flags);
    }