/// <summary> /// /// </summary> /// <param name="data"></param> /// <param name="pos"></param> /// <returns></returns> public int SetExtraParamsFromBytes(byte[] data, int pos) { int i = pos; int totalLength = 1; if (data.Length == 0) { return(0); } byte extraParamCount = data[i++]; for (int k = 0; k < extraParamCount; k++) { ExtraParamType type = (ExtraParamType)(data[i++] + (data[i++] << 8)); uint paramLength = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); if (type == ExtraParamType.Flexible) { Flexible = new PrimFlexibleData(data, i); } else if (type == ExtraParamType.Light) { Light = new PrimLightData(data, i); } i += (int)paramLength; totalLength += (int)paramLength + 6; } return(totalLength); }
/// <summary> /// /// </summary> /// <param name="data"></param> /// <param name="pos"></param> /// <returns></returns> public int SetExtraParamsFromBytes(byte[] data, int pos) { int i = pos; int totalLength = 1; if (data.Length == 0) return 0; byte extraParamCount = data[i++]; for (int k = 0; k < extraParamCount; k++) { ExtraParamType type = (ExtraParamType)(data[i++] + (data[i++] << 8)); uint paramLength = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); if (type == ExtraParamType.Flexible) { Flexible = new PrimFlexibleData(data, i); } else if (type == ExtraParamType.Light) { Light = new PrimLightData(data, i); } i += (int)paramLength; totalLength += (int)paramLength + 6; } return totalLength; }
/// <summary> /// /// </summary> /// <param name="simulator"></param> /// <param name="localID"></param> /// <param name="flexible"></param> public void SetFlexible(Simulator simulator, uint localID, PrimFlexibleData flexible) { ObjectExtraParamsPacket extra = new ObjectExtraParamsPacket(); extra.AgentData.AgentID = Client.Network.AgentID; extra.AgentData.SessionID = Client.Network.SessionID; extra.ObjectData = new ObjectExtraParamsPacket.ObjectDataBlock[1]; extra.ObjectData[0] = new ObjectExtraParamsPacket.ObjectDataBlock(); extra.ObjectData[0].ObjectLocalID = localID; extra.ObjectData[0].ParamType = (byte)ExtraParamType.Flexible; if (flexible == null) { extra.ObjectData[0].ParamInUse = false; extra.ObjectData[0].ParamData = new byte[0]; } else { extra.ObjectData[0].ParamInUse = true; extra.ObjectData[0].ParamData = flexible.GetBytes(); } extra.ObjectData[0].ParamSize = (uint)extra.ObjectData[0].ParamData.Length; Client.Network.SendPacket(extra, simulator); }