Ejemplo n.º 1
0
        /// <summary>
        /// 创建脚本命令,传入命令号,传入参数个数可以进行更好的优化处理
        /// </summary>
        /// <param name="CMD_ID">CM d I.</param>
        /// <param name="argCount">Argument count.</param>
        public static ScriptCommand Create(int CMD_ID, int argcount = -1)
        {
            ScriptCommand cmd = KObjectPool.mIns.Pop <ScriptCommand>();

            if (cmd == null)
            {
                cmd = new ScriptCommand();
            }

            cmd._CMD = CMD_ID;

            if (!cmd.HasCallParams)
            {
                if (argcount > 0 && argcount < 4)
                {
                    cmd._Gparams = SimpleParams.Create(argcount);
                }
                else if (argcount > 3)
                {
                    cmd._Gparams = GenericParams.Create(argcount);
                }
            }

            return(cmd);
        }
Ejemplo n.º 2
0
            public static ScriptPkg CreateLua(object attvalue)
            {
                ScriptPkg pkg = null;

                if (KObjectPool.mIns != null)
                {
                    pkg = KObjectPool.mIns.Pop <ScriptPkg>();
                }

                if (pkg == null)
                {
                    pkg = new ScriptPkg();
                }

                pkg._script = new LuaScriptLoader();
                if (LuaClient.Instance != null)
                {
                    SimpleParams             InitParams   = SimpleParams.Create(1);
                    Script_LuaLogicAttribute luaAttribute = attvalue as Script_LuaLogicAttribute;
                    InitParams.WriteObject(luaAttribute);
                    pkg.Name = luaAttribute.luapath;
                    pkg.Loader.Init(InitParams);
                }
                else
                {
                    LogMgr.Log("场景中未包含LuaClient,但是程序集中包含了带有lua目标的函数的注册");
                }


                return(pkg);
            }
Ejemplo n.º 3
0
            public static ScriptPkg CreateSharp(MethodInfo method, string methodname, object instance = null)
            {
                ScriptPkg pkg = null;

                if (KObjectPool.mIns != null)
                {
                    pkg = KObjectPool.mIns.Pop <ScriptPkg>();
                }

                if (pkg == null)
                {
                    pkg = new ScriptPkg();
                }


                pkg._script = new SharpScriptLoader();
                SimpleParams InitParams = SimpleParams.Create(4);

                if (instance != null)
                {
                    InitParams.WriteObject(instance);
                    ParameterInfo[] passes = method.GetParameters();
                    if (passes != null && passes.Length == 1 && passes[0].ParameterType.IsSubclassOf(typeof(AbstractParams)))
                    {
                        throw new FrameWorkException("method mismatching ");
                    }

                    InitParams.WriteObject(method);
                }
                else
                {
                    Type RetTp = method.ReturnType;

                    if (RetTp == typeof(void))
                    {
                        InitParams.WriteObject(Delegate.CreateDelegate(typeof(Action <AbstractParams>), method));
                    }
                    else
                    {
                        InitParams.WriteObject(Delegate.CreateDelegate(typeof(Func <AbstractParams, AbstractParams>), method));
                    }
                    InitParams.WriteObject(RetTp);
                    InitParams.WriteString(methodname);
                }

                pkg.Loader.Init(InitParams);
                pkg.Name = method.DeclaringType.Name;

                return(pkg);
            }
Ejemplo n.º 4
0
 private static AbstractParams getobstacles(AbstractParams p)
 {
     p = SimpleParams.Create(1);
     p.InsertObject(0, instance_.obstacles_);
     return(p);
 }
Ejemplo n.º 5
0
 private static AbstractParams getkdtree(AbstractParams p)
 {
     p = SimpleParams.Create(1);
     p.InsertObject(0, instance_.kdTree_);
     return(p);
 }