public void SendObjectExtraParams( ScriptInstance instance, ViewerAgentAccessor agent, VcExtraParamsDataList objectData) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var m = new ObjectExtraParams { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, }; foreach (VcExtraParamsData d in objectData) { if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_FLEXI_EP) != 0) { byte[] data = d.ExtraParams.GetFlexibleData(); m.ObjectData.Add(new ObjectExtraParams.Data { ObjectLocalID = (uint)d.LocalID, ParamType = 0x0010, ParamInUse = data != null, ParamSize = data != null ? (uint)data.Length : 0, ParamData = data ?? new byte[0] }); } if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_LIGHT_EP) != 0) { byte[] data = d.ExtraParams.GetLightData(); m.ObjectData.Add(new ObjectExtraParams.Data { ObjectLocalID = (uint)d.LocalID, ParamType = 0x0020, ParamInUse = data != null, ParamSize = data != null ? (uint)data.Length : 0, ParamData = data ?? new byte[0] }); } if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_SCULPT_EP) != 0) { byte[] data = d.ExtraParams.GetSculptData(); m.ObjectData.Add(new ObjectExtraParams.Data { ObjectLocalID = (uint)d.LocalID, ParamType = 0x0030, ParamInUse = data != null, ParamSize = data != null ? (uint)data.Length : 0, ParamData = data ?? new byte[0] }); } if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_PROJECTION_EP) != 0) { byte[] data = d.ExtraParams.GetProjectData(); m.ObjectData.Add(new ObjectExtraParams.Data { ObjectLocalID = (uint)d.LocalID, ParamType = 0x0040, ParamInUse = data != null, ParamSize = data != null ? (uint)data.Length : 0, ParamData = data ?? new byte[0] }); } if ((d.Flags & VC_EXTRA_PARAMS_DATA_SET_EXTENDEDMESH_EP) != 0) { byte[] data = d.ExtraParams.GetEMeshData(); m.ObjectData.Add(new ObjectExtraParams.Data { ObjectLocalID = (uint)d.LocalID, ParamType = 0x0070, ParamInUse = data != null, ParamSize = data != null ? (uint)data.Length : 0, ParamData = data ?? new byte[0] }); } } viewerCircuit.SendMessage(m); } } }
public void Add(VcExtraParamsDataList list, VcExtraParamsData data) { list.Add(new VcExtraParamsData(data)); }