コード例 #1
0
ファイル: ScriptConsole.cs プロジェクト: jhurliman/simian
        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);
                            }
                        }
                    }
                }
            }
        }