private void EntityChatHandler(object sender, ChatArgs e) { if (e.Source is IScenePresence) { int startParam = e.Message.IndexOf('('); int endParam = e.Message.IndexOf(')'); if (startParam > 2 && endParam > startParam) { // Try and parse this into a function call string name = e.Message.Substring(0, startParam); ApiMethod apiMethod; if (m_scene.TryGetApiMethod(name, out apiMethod)) { // Parse the parameters ++startParam; List <string> parameters = ParseParameters(e.Message.Substring(startParam, endParam - startParam)); // Parameters sanity check ParameterInfo[] parameterInfos = apiMethod.MethodInfo.GetParameters(); if (parameters != null && parameters.Count == parameterInfos.Length - 1) { // Convert the parameters into the required types object[] objParameters = ConvertParameters(parameterInfos, parameters); if (objParameters != null) { object ret = m_scriptInstance.CallMethod(name, objParameters); } } } } } }