private bool TryProcessHostRoomNavigate(HMessage current, HMessage previous) { if (previous.Length >= 12 && current.CanReadAt <string>(0) && current.ReadString() == "Navigation") { current.ReadString(); if (current.ReadString() != "go.official") { return(false); } if (previous.ReadInt(0).ToString() == current.ReadString()) { if (UpdateHeaders) { Outgoing.Global.RoomNavigate = previous.Header; } OutLockHeader(previous.Header, RaiseOnHostRoomExit); RaiseOnHostRoomNavigate(previous); return(true); } } return(false); }
private bool TryProcessAvatarMenuClick(HMessage current, HMessage previous) { if (!previous.CanReadAt <string>(22)) { return(false); } switch (previous.ReadString(22)) { case "sit": case "stand": { if (UpdateHeaders) { Outgoing.Global.ChangeStance = current.Header; } OutLockHeader(current.Header, RaiseOnHostChangeStance); RaiseOnHostChangeStance(current); return(true); } case "dance_stop": case "dance_start": { if (UpdateHeaders) { Outgoing.Global.Dance = current.Header; } OutLockHeader(current.Header, RaiseOnHostDance); RaiseOnHostDance(current); return(true); } case "wave": case "idle": case "laugh": case "blow_kiss": { if (UpdateHeaders) { Outgoing.Global.Gesture = current.Header; } OutLockHeader(current.Header, RaiseOnHostGesture); RaiseOnHostGesture(current); return(true); } } return(false); }
private bool TryProcessHostRaiseSign(HMessage current, HMessage previous) { bool isHostRaiseSign = false; if (current.CanReadAt <string>(22) && current.ReadString(22) == "sign") { if (UpdateHeaders) { Outgoing.Global.RaiseSign = previous.Header; } OutLockHeader(previous.Header, RaiseOnHostRaiseSign); RaiseOnHostRaiseSign(previous); isHostRaiseSign = true; } return(isHostRaiseSign); }