示例#1
0
        static async void nep53(string strurl, string rpcurl, string avmPath, string wif, string toaddr, string asset)
        {
            //从文件中读取合约脚本
            byte[] script = System.IO.File.ReadAllBytes(avmPath); //这里填你的合约所在地址
            var    nnc    = ThinNeo.Helper.GetScriptHashFromScript(script);

            byte[] prikey  = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);
            //获取地址的资产列表
            Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(strurl, address);


            string targeraddr = address;  //Transfer it to yourself.

            ThinNeo.Transaction tran = Helper.makeTran(dir[asset], targeraddr, new ThinNeo.Hash256(asset), decimal.Zero);
            tran.type = ThinNeo.TransactionType.InvocationTransaction;

            ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder();

            var scriptaddress = new ThinNeo.Hash160(nnc);

            //Parameter inversion
            MyJson.JsonNode_Array JAParams = new MyJson.JsonNode_Array();
            JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + address));
            JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + toaddr));
            JAParams.Add(new MyJson.JsonNode_ValueString("(integer)" + 1));
            sb.EmitParamJson(JAParams);    //Parameter list
            sb.EmitPushString("transfer"); //Method
            sb.EmitAppCall(scriptaddress); //Asset contract

            ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData();
            extdata.script = sb.ToArray();
            extdata.gas    = 1;
            tran.extdata   = extdata;

            byte[] msg      = tran.GetMessage();
            byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
            tran.AddWitness(signdata, pubkey, address);
            string txid = tran.GetHash().ToString();

            byte[] data    = tran.GetRawData();
            string rawdata = ThinNeo.Helper.Bytes2HexString(data);


            byte[] postdata;
            var    url      = Helper.MakeRpcUrlPost(rpcurl, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
            var    response = await Helper.HttpPost(url, postdata);

            MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(response);
            if (resJO.ContainsKey("result"))
            {
                Console.WriteLine(resJO["result"].ToString());
            }
        }
示例#2
0
        async public Task Demo()
        {
            string nnc = "0x3fccdb91c9bb66ef2446010796feb6ca4ed96b05";

            byte[] prikey  = ThinNeo.Helper.GetPrivateKeyFromWIF("L3tDHnEAvwnnPE4sY4oXpTvNtNhsVhbkY4gmEmWmWWf1ebJhVPVW");
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);
            string toaddr  = "APwCdakS1NpJsiq6j9SfvkQFS9ubt347a2";
            string id_GAS  = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7";

            //获取地址的资产列表
            Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(api, address);


            string targeraddr = address;  //Transfer it to yourself.

            ThinNeo.Transaction tran = Helper.makeTran(dir[id_GAS], targeraddr, new ThinNeo.Hash256(id_GAS), decimal.Zero);
            tran.type = ThinNeo.TransactionType.InvocationTransaction;

            ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder();

            var scriptaddress = new ThinNeo.Hash160(nnc);

            //Parameter inversion
            MyJson.JsonNode_Array JAParams = new MyJson.JsonNode_Array();
            JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + address));
            JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + toaddr));
            JAParams.Add(new MyJson.JsonNode_ValueString("(integer)" + 1));
            sb.EmitParamJson(JAParams);    //Parameter list
            sb.EmitPushString("transfer"); //Method
            sb.EmitAppCall(scriptaddress); //Asset contract

            ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData();
            extdata.script = sb.ToArray();
            extdata.gas    = 1;
            tran.extdata   = extdata;

            byte[] msg      = tran.GetMessage();
            byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
            tran.AddWitness(signdata, pubkey, address);
            string txid = tran.GetHash().ToString();

            byte[] data       = tran.GetRawData();
            string scripthash = ThinNeo.Helper.Bytes2HexString(data);

            string response = await Helper.HttpGet(api + "?method=sendrawtransaction&id=1&params=[\"" + scripthash + "\"]");

            MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(response);
            Console.WriteLine(resJO["result"].ToString());
        }
示例#3
0
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            SkinnedMeshRenderer ic = component as SkinnedMeshRenderer;

            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了

            //材质
            MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array();

            json["mats"] = mats;

            foreach (var m in ic.sharedMaterials)
            {
                string hash = resmgr.SaveMat(m);
                mats.Add(new MyJson.JsonNode_ValueString(hash));
            }

            //bounds
            json["center"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.center));
            json["size"]   = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.size));

            //mesh
            json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.sharedMesh));

            json["rootboneobj"] = new MyJson.JsonNode_ValueNumber(ic.rootBone.gameObject.GetInstanceID());
            MyJson.JsonNode_Array bones = new MyJson.JsonNode_Array();
            foreach (var b in ic.bones)
            {
                bones.Add(new MyJson.JsonNode_ValueNumber(b.gameObject.GetInstanceID()));
            }
            json["boneobjs"] = bones;
            ic.rootBone.GetInstanceID();
        }
示例#4
0
        public static MyJson.JsonNode_Object StatkItemToJson(VM.StackItem item)
        {
            MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
            var type = item.GetType().Name;

            if (type == "InteropInterface")
            {
                json.SetDictValue(type, (item as VM.Types.InteropInterface).GetInterface <VM.IInteropInterface>().GetType().Name);
            }
            else if (type == "Boolean")
            {
                json.SetDictValue(type, item.GetBoolean().ToString());
            }
            else if (type == "ByteArray")
            {
                json.SetDictValue(type, item.GetByteArray().ToHexString());
            }
            else if (type == "Integer")
            {
                json.SetDictValue(type, item.GetBigInteger().ToString());
            }
            else if (item is VM.Types.Array)//item is VM.Types.Struct || 是struct 一定是array
            {
                MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
                json.SetDictValue(type, array);
                foreach (var i in (item as VM.Types.Array).ToArray())
                {
                    array.Add(StatkItemToJson(i));
                }
            }
            return(json);
        }
示例#5
0
        public static void SaveRecord()
        {
            MyJson.JsonNode_Array traninfo = new MyJson.JsonNode_Array();
            foreach (var item in TxHistory)
            {
                MyJson.JsonNode_Object jsonItem = new MyJson.JsonNode_Object();
                traninfo.Add(jsonItem);
                jsonItem["txid"] = new MyJson.JsonNode_ValueString(item.txid);
                jsonItem["type"] = new MyJson.JsonNode_ValueString(item.type.ToString());
                jsonItem["time"] = new MyJson.JsonNode_ValueString("utc_" + item.time.ToFileTimeUtc());
            }
            MyJson.JsonNode_Array utxospentinfos = new MyJson.JsonNode_Array();

            foreach (var item in UtxoHistory)
            {
                MyJson.JsonNode_ValueString jsonItem = new MyJson.JsonNode_ValueString(item);
                utxospentinfos.Add(jsonItem);
            }
            MyJson.JsonNode_Object record = new MyJson.JsonNode_Object();
            record["trans"] = traninfo;
            record["utxos"] = utxospentinfos;

            System.IO.File.Delete("records.json");
            System.IO.File.WriteAllText("records.json", record.ToString(), System.Text.Encoding.UTF8);
        }
示例#6
0
        private static async Task file_list(IOwinContext context, FormData formdata)
        {
            if (formdata.mapParams.ContainsKey("url") && formdata.mapParams.ContainsKey("path"))
            {
                var p = CustomServer.GetStaticFileParser(formdata.mapParams["url"]);
                if (p != null)
                {
                    var dirs  = System.IO.Directory.GetDirectories(p.pathOnDrive);
                    var files = System.IO.Directory.GetFiles(p.pathOnDrive);
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(0);
                    MyJson.JsonNode_Array _files = new MyJson.JsonNode_Array();
                    MyJson.JsonNode_Array _dirs  = new MyJson.JsonNode_Array();

                    json["files"]    = _files;
                    json["subpaths"] = _dirs;
                    foreach (var d in dirs)
                    {
                        MyJson.JsonNode_Object item = new MyJson.JsonNode_Object();
                        item.SetDictValue("name", d);
                        _dirs.Add(item);
                    }
                    foreach (var f in files)
                    {
                        MyJson.JsonNode_Object item = new MyJson.JsonNode_Object();
                        item.SetDictValue("name", f);
                        try
                        {
                            System.IO.FileInfo finfo = new System.IO.FileInfo(f);
                            item.SetDictValue("length", finfo.Length);
                        }
                        catch
                        {
                        }
                        _files.Add(item);
                    }
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
                else
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("file_list fail.");
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
            }
            else
            {
                MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                json["tag"] = new MyJson.JsonNode_ValueNumber(-1);
                json["msg"] = new MyJson.JsonNode_ValueString("need param: url & path.");
                await context.Response.WriteAsync(json.ToString());

                return;
            }
        }
示例#7
0
        void update()
        {
            this.textASM.Text = ThinNeo.Helper.Bytes2HexString(this.vscript);
            var scripthash = ThinNeo.Helper.GetScriptHashFromScript(this.vscript);

            this.info1.Text = ThinNeo.Helper.Bytes2HexString(scripthash);
            this.info2.Text = ThinNeo.Helper.GetAddressFromScriptHash(scripthash);
            MyJson.JsonNode_Array arr = new MyJson.JsonNode_Array();
            arr.AddArrayValue("(str)0214");
            arr.Add(new MyJson.JsonNode_Array());
            var sb = new StringBuilder();

            arr.ConvertToStringWithFormat(sb, 4);
            this.jsonParam.Text = sb.ToString();

            if (this.iscript != null)
            {
                this.asmList.Items.Clear();
                var ops = ThinNeo.Compiler.Avm2Asm.Trans(this.iscript);
                for (int i = 0; i < ops.Length; i++)
                {
                    this.asmList.Items.Add(ops[i]);
                }
                this.asmBinText.Text = ThinNeo.Helper.Bytes2HexString(this.iscript);
            }
        }
示例#8
0
文件: Helper.cs 项目: ikvm/neondebug
        public static void uploadScript(string api, string path, string hash)
        {
            System.Net.WebClient wc = new MyWebClient();
            try
            {
                System.Collections.Specialized.NameValueCollection vs = new System.Collections.Specialized.NameValueCollection();
                vs["jsonrpc"] = "2.0";
                vs["id"]      = "1";
                vs["method"]  = "setcontractscript";
                MyJson.JsonNode_Array  array   = new MyJson.JsonNode_Array();
                MyJson.JsonNode_Object jsonmap = new MyJson.JsonNode_Object();
                jsonmap["hash"] = new MyJson.JsonNode_ValueString(hash);
                var avm = System.IO.File.ReadAllBytes(System.IO.Path.Combine(path, hash + ".avm"));
                var cs  = System.IO.File.ReadAllText(System.IO.Path.Combine(path, hash + ".cs"));
                var map = System.IO.File.ReadAllText(System.IO.Path.Combine(path, hash + ".map.json"));
                var abi = System.IO.File.ReadAllText(System.IO.Path.Combine(path, hash + ".abi.json"));

                jsonmap["avm"] = new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(avm));
                jsonmap["cs"]  = new MyJson.JsonNode_ValueString(Uri.EscapeDataString(cs));
                jsonmap["map"] = MyJson.Parse(map);
                jsonmap["abi"] = MyJson.Parse(abi);
                array.Add(new MyJson.JsonNode_ValueString(jsonmap.ToString()));
                vs["params"] = array.ToString();

                var ret = wc.UploadValues(api, vs);
                var txt = System.Text.Encoding.UTF8.GetString(ret);
                MessageBox.Show(txt);
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            SkinnedMeshRenderer ic = component as SkinnedMeshRenderer;
            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了

            //材质
            MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array();

            json["mats"] = mats;

            foreach (var m in ic.sharedMaterials)
            {
                string hash = resmgr.SaveMat(m);
                mats.Add(new MyJson.JsonNode_ValueString(hash));
            }

            //bounds
            json["center"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.center));
            json["size"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.size));

            //mesh
            json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.sharedMesh));

            json["rootboneobj"] = new MyJson.JsonNode_ValueNumber(ic.rootBone.gameObject.GetInstanceID());
            MyJson.JsonNode_Array bones = new MyJson.JsonNode_Array();
            foreach (var b in ic.bones)
            {
                bones.Add(new MyJson.JsonNode_ValueNumber(b.gameObject.GetInstanceID()));
            }
            json["boneobjs"] = bones;
            ic.rootBone.GetInstanceID();
        }
示例#10
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var prikey     = ThinNeo.Helper.GetPrivateKeyFromWIF("");
            var pubkey     = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            var scripthash = ThinNeo.Helper.GetScriptHashFromPublicKey(pubkey);
            var addres     = ThinNeo.Helper.GetAddressFromScriptHash(scripthash);

            //AbN2K2trYzgx8WMg2H7U7JHH6RQVzz2fnx
            var vscripthash = ThinNeo.Helper.GetPublicKeyHashFromAddress("AdsNmzKPPG7HfmQpacZ4ixbv9XJHJs2ACz");

            ThinNeo.Transaction tx = new ThinNeo.Transaction();
            tx.inputs  = new ThinNeo.TransactionInput[0];
            tx.outputs = new ThinNeo.TransactionOutput[0];
            tx.type    = ThinNeo.TransactionType.InvocationTransaction;
            tx.version = 1;
            //附加一个见证人  ///要他签名
            tx.attributes          = new ThinNeo.Attribute[1];
            tx.attributes[0]       = new ThinNeo.Attribute();
            tx.attributes[0].usage = ThinNeo.TransactionAttributeUsage.Script;
            tx.attributes[0].data  = scripthash;

            //拼接调用脚本
            var invokedata = new ThinNeo.InvokeTransData();

            tx.extdata     = invokedata;
            invokedata.gas = 0;
            var sb = new ThinNeo.ScriptBuilder();

            MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
            array.AddArrayValue("(hex160)" + scripthash.ToString());  //witnesscall
            array.AddArrayValue("(hex160)" + vscripthash.ToString()); //witnessreturn
            array.AddArrayValue("(str)" + vscripthash.ToString());    //callscript
            array.AddArrayValue("(str)" + methodCombox.Text);         //callmethod
            var _params = new MyJson.JsonNode_Array();

            _params.AddArrayValue(int.Parse(textbox1.Text));
            _params.AddArrayValue(int.Parse(textbox2.Text));
            array.Add(_params);//params
            _params.AddArrayValue("(int)" + r.Next());

            sb.EmitParamJson(array);
            sb.EmitPushString("outcall");
            ThinNeo.Hash160 contractaddr = new ThinNeo.Hash160("0x24192c2a72e0ce8d069232f345aea4db032faf72");
            sb.EmitAppCall(contractaddr);
            invokedata.script = sb.ToArray();

            //签名(谁签名)
            var msg  = tx.GetMessage();
            var data = ThinNeo.Helper.Sign(msg, prikey);

            tx.AddWitness(data, pubkey, addres);

            DoCallTran(tx);
            //CallScript(invokedata.script);
        }
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         var sh   = ThinNeo.Helper.HexString2Bytes(textScriptHash.Text);
         var json = rpc_getScript(sh);
         if (json == null)
         {
             info1.Text = "no script";
             info2.Text = "can't help you to fill the parameter json.";
         }
         else
         {
             info1.Text = "scripthash=" + json.AsDict()["hash"].AsString();
             info2.Text = "scriptlen=" + (json.AsDict()["script"].AsString().Length / 2);
             var param = json.AsDict()["parameters"];
             var array = new MyJson.JsonNode_Array();
             foreach (var p in param.AsList())
             {
                 if (p.AsString() == "String")
                 {
                     array.Add(new MyJson.JsonNode_ValueString("(str)textParam"));
                 }
                 if (p.AsString() == "Array")
                 {
                     array.Add(new MyJson.JsonNode_Array());
                 }
                 if (p.AsString() == "Boolean")
                 {
                     array.Add(new MyJson.JsonNode_ValueNumber(false));
                 }
                 if (p.AsString() == "Bytes")
                 {
                     array.Add(new MyJson.JsonNode_ValueString("(hex)0x00"));
                 }
                 if (p.AsString() == "UINT160")
                 {
                     array.Add(new MyJson.JsonNode_ValueString("(hexbig)0xaa020304050607080910bb020304050607080910"));
                 }
                 if (p.AsString() == "UINT256")
                 {
                     array.Add(new MyJson.JsonNode_ValueString("(hexbig)0xaa020304050607080910bb020304050607080910cc020304050607080910dd02"));
                 }
                 if (p.AsString() == "BigInteger")
                 {
                     array.Add(new MyJson.JsonNode_ValueString("(int)735200"));
                 }
             }
             StringBuilder sb = new StringBuilder();
             array.ConvertToStringWithFormat(sb, 4);
             jsonParam.Text = sb.ToString();
         }
     }
     catch
     {
     }
 }
示例#12
0
    void SaveItem()
    {
        //GameObject setobj = null;//选中的对象
        //bool bUseHashName = true;//是否使用hash作为资源文件名
        //string exportResult = null;//导出结果
        //string exportPath = null;//导出路径
        //bool bUseHashTreeName = false;//是否使用hash作为导出节点名
        //string exportNodeName = "";//导出节点名称

        nodeParser.nodeParser np = new nodeParser.nodeParser();
        np.SaveNode(this.setobj);//先强制使用HashName

        if (System.IO.Directory.Exists(exportPath) == false)
        {
            System.IO.Directory.CreateDirectory(exportPath);
        }
        string respath = System.IO.Path.Combine(exportPath, "resources");

        if (System.IO.Directory.Exists(respath) == false)
        {
            System.IO.Directory.CreateDirectory(respath);
        }

        MyJson.JsonNode_Array indexfile = new MyJson.JsonNode_Array();
        foreach (var f in np.bufs)
        {
            //写入文件
            {
                var file = System.IO.Path.Combine(respath, f.Key);
                System.IO.File.WriteAllBytes(file, f.Value);
            }
            //记录索引
            MyJson.JsonNode_Object indexitem = new MyJson.JsonNode_Object();
            indexitem["Name"]   = new MyJson.JsonNode_ValueString("resources/" + f.Key);
            indexitem["Length"] = new MyJson.JsonNode_ValueNumber(f.Value.Length);
            indexfile.Add(indexitem);
        }
        indexfile.Sort((a, b) =>
        {
            return(string.Compare(a.asDict()["Name"].AsString(), b.asDict()["Name"].AsString()));
        });
        {//保存索引文件
            byte[] indexcode = System.Text.Encoding.UTF8.GetBytes(indexfile.ToString());

            exportResult = exportNodeName;
            if (bUseHashTreeName)
            {
                exportResult = ResLibTool.ComputeHashString(indexcode);
            }
            string outfile = System.IO.Path.Combine(exportPath, exportResult + ".indexlist.txt");

            System.IO.File.WriteAllBytes(outfile, indexcode);
        }
    }
示例#13
0
    static MyJson.IJsonNode UnPackJsonArray(System.IO.Stream stream, byte tagfirst, IList <string> pubdict, IList <string> localdict)
    {
        MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
        int count = ReadCountHead(stream, tagfirst);

        for (int i = 0; i < count; i++)
        {
            array.Add(UnPackJson(stream, pubdict, localdict));
        }
        return(array);
    }
示例#14
0
    public static MyJson.IJsonNode Parser(GameObject obj, NeedList needList = null)
    {
        AssetMgr.Reset();
        MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
        Debug.Log("ParserObj:" + obj.name);
        var comps = obj.GetComponents <Component>();

        MyJson.JsonNode_Array jsoncs = new MyJson.JsonNode_Array();
        json["name"]   = new MyJson.JsonNode_ValueString(obj.name);
        json["active"] = new MyJson.JsonNode_ValueNumber(obj.activeSelf);
        json["_id"]    = new MyJson.JsonNode_ValueNumber(ObjToID(obj));
        json["coms"]   = jsoncs;
        foreach (var c in comps)
        {
            if (c == null)
            {
                Debug.LogWarning("--组件丢失");
            }
            else
            {
                Type type = c.GetType();
                var  pp   = ComponentParser.Instance.GetParser(type);
                if (pp != null)
                {
                    MyJson.JsonNode_Object jsonc = new MyJson.JsonNode_Object();
                    jsonc["type"] = new MyJson.JsonNode_ValueString(type.ToString());
                    if (c is Behaviour)
                    {
                        jsonc["enabled"] = new MyJson.JsonNode_ValueNumber((c as Behaviour).enabled);
                    }
                    jsonc["param"] = pp.Parser(c, needList);
                    Debug.Log("--" + c.name + "<" + type.ToString() + ">:" + jsonc["param"].ToString());
                    jsoncs.Add(jsonc);
                }
                else
                {
                    Debug.LogWarning("--" + c.name + "<" + type.ToString() + ">" + "没有处理器");
                }
            }
        }
        if (obj.transform.childCount > 0)
        {
            MyJson.JsonNode_Array jsonsubarray = new MyJson.JsonNode_Array();
            json["child"] = jsonsubarray;
            foreach (Transform t in obj.transform)
            {
                jsonsubarray.Add(Parser(t.gameObject, needList));
            }
        }
        Debug.Log("ParserObjFinish:" + obj.name);
        AssetMgr.Reset();

        return(json);
    }
示例#15
0
 public MyJson.JsonNode_Object ToJson()
 {
     MyJson.JsonNode_Object script = new MyJson.JsonNode_Object();
     script.SetDictValue("hash", this.hash);
     MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
     script.SetDictValue("ops", array);
     foreach (var op in ops)
     {
         array.Add(op.ToJson());
     }
     return(script);
 }
示例#16
0
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            FB.PosePlus.AniPlayer ic = component as FB.PosePlus.AniPlayer;

            MyJson.JsonNode_Array anis = new MyJson.JsonNode_Array();

            json["clips"] = anis;
            foreach (var m in ic.clips)
            {
                string hash = resmgr.SaveAniClip(m);
                anis.Add(new MyJson.JsonNode_ValueString(hash));
            }
        }
示例#17
0
        public static MyJson.JsonNode_Object Export(AntsModule module)
        {
            var outjson = new MyJson.JsonNode_Object();

            outjson.SetDictValue("hash", "hash");
            outjson.SetDictValue("entrypoint", "Main");

            var funcsigns = new MyJson.JsonNode_Array();

            outjson["functions"] = funcsigns;
            var eventsigns = new MyJson.JsonNode_Array();

            outjson["events"] = eventsigns;

            foreach (var function in module.mapMethods)
            {
                var mm = function.Value;
                if (mm.isPublic == false)
                {
                    continue;
                }
                var ps       = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries);
                var funcsign = new MyJson.JsonNode_Object();

                funcsigns.Add(funcsign);
                var funcname = ps[1];
                if (funcname.IndexOf("::") > 0)
                {
                    var sps = funcname.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries);
                    funcname = sps.Last();
                }
                funcsign.SetDictValue("name", funcname);
                var rtype = ConvType(mm.returntype);
                funcsign.SetDictValue("returntype", rtype);
                MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                funcsign["paramaters"] = funcparams;
                if (mm.paramtypes != null)
                {
                    foreach (var v in mm.paramtypes)
                    {
                        var ptype = ConvType(v.type);
                        var item  = new MyJson.JsonNode_Object();
                        funcparams.Add(item);

                        item.SetDictValue("name", v.name);
                        item.SetDictValue("type", ptype);
                    }
                }
            }
            return(outjson);
        }
示例#18
0
 public override string ToString()
 {
     MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
     foreach (var list in needList)
     {
         MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
         obj[list.Key] = array;
         foreach (var item in list.Value)
         {
             array.Add(new MyJson.JsonNode_ValueString(item));
         }
     }
     return(obj.ToString());
 }
示例#19
0
    public static string SaveAtlas(UIAtlas atlas, string path, string pathtex)
    {
        if (System.IO.Directory.Exists(path) == false)
        {
            System.IO.Directory.CreateDirectory(path);
        }
        string tname = SaveTexture(atlas.texture, pathtex);

        MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();

        obj["pixelSize"] = new MyJson.JsonNode_ValueNumber(atlas.pixelSize);
        var jsonmat = new MyJson.JsonNode_Object();

        obj["mat"]        = jsonmat;
        jsonmat["shader"] = new MyJson.JsonNode_ValueString(atlas.spriteMaterial.shader.name);
        MyJson.JsonNode_Array shaderparams = new MyJson.JsonNode_Array();
        jsonmat["shaderparam"] = shaderparams;
        foreach (var p in atlas.spriteMaterial.shaderKeywords)
        {
            shaderparams.Add(new MyJson.JsonNode_ValueString(p));
        }

        jsonmat["img"] = new MyJson.JsonNode_ValueString(tname);
        var jsonsparray = new MyJson.JsonNode_Object();

        obj["sprites"] = jsonsparray;
        foreach (var s in atlas.spriteList)
        {
            MyJson.JsonNode_Array sarray = new MyJson.JsonNode_Array();
            jsonsparray[s.name] = sarray;
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.x));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.y));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.width));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.height));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderLeft));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderRight));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderTop));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderBottom));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingLeft));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingRight));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingTop));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingBottom));
        }
        string atalsName = atlas.name.ToLower();

        System.IO.File.WriteAllText(System.IO.Path.Combine(path, atalsName + ".atlas.txt"), obj.ToString());

        return(atalsName);
    }
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            MeshRenderer ic = component as MeshRenderer;
            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了

            MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array();

            json["mats"] = mats;
#if UNITY_EDITOR
            foreach (var m in ic.sharedMaterials)
            {
                string hash = resmgr.SaveMat(m);
                mats.Add(new MyJson.JsonNode_ValueString(hash));
            }
#else
            foreach (var m in ic.materials)
            {
                string hash = resmgr.SaveMat(m);
                mats.Add(new MyJson.JsonNode_ValueString(hash));
            }
#endif

        }
示例#21
0
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            MeshRenderer ic = component as MeshRenderer;

            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了

            MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array();

            json["mats"] = mats;
#if UNITY_EDITOR
            foreach (var m in ic.sharedMaterials)
            {
                string hash = resmgr.SaveMat(m);
                mats.Add(new MyJson.JsonNode_ValueString(hash));
            }
#else
            foreach (var m in ic.materials)
            {
                string hash = resmgr.SaveMat(m);
                mats.Add(new MyJson.JsonNode_ValueString(hash));
            }
#endif
        }
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            FB.PosePlus.AniPlayer ic = component as FB.PosePlus.AniPlayer;

            MyJson.JsonNode_Array anis = new MyJson.JsonNode_Array();

            json["clips"] = anis;
            foreach (var m in ic.clips)
            {
                string hash = resmgr.SaveAniClip(m);
                anis.Add(new MyJson.JsonNode_ValueString(hash));
            }


        }
示例#23
0
    public static string SaveAtlas(UIAtlas atlas, string path,string pathtex)
    {
        if (System.IO.Directory.Exists(path) == false)
        {
            System.IO.Directory.CreateDirectory(path);
        }
        string tname = SaveTexture(atlas.texture, pathtex);

        MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();

        obj["pixelSize"] = new MyJson.JsonNode_ValueNumber(atlas.pixelSize);
        var jsonmat = new MyJson.JsonNode_Object();
        obj["mat"] = jsonmat;
        jsonmat["shader"] = new MyJson.JsonNode_ValueString(atlas.spriteMaterial.shader.name);
        MyJson.JsonNode_Array shaderparams = new MyJson.JsonNode_Array();
        jsonmat["shaderparam"] = shaderparams;
        foreach (var p in atlas.spriteMaterial.shaderKeywords)
        {
            shaderparams.Add(new MyJson.JsonNode_ValueString(p));
        }

        jsonmat["img"] = new MyJson.JsonNode_ValueString(tname);
        var jsonsparray = new MyJson.JsonNode_Object();
        obj["sprites"] = jsonsparray;
        foreach (var s in atlas.spriteList)
        {
            MyJson.JsonNode_Array sarray = new MyJson.JsonNode_Array();
            jsonsparray[s.name] = sarray;
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.x));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.y));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.width));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.height));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderLeft));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderRight));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderTop));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderBottom));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingLeft));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingRight));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingTop));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingBottom));
        }
        string atalsName = atlas.name.ToLower();
        System.IO.File.WriteAllText(System.IO.Path.Combine(path, atalsName + ".atlas.txt"), obj.ToString());

        return atalsName;
    }
示例#24
0
        public static string MakeRpcUrlPost(string url, string method, out byte[] data, params MyJson.IJsonNode[] _params)
        {
            var json = new MyJson.JsonNode_Object();

            json["id"]      = new MyJson.JsonNode_ValueNumber(1);
            json["jsonrpc"] = new MyJson.JsonNode_ValueString("2.0");
            json["method"]  = new MyJson.JsonNode_ValueString(method);
            StringBuilder sb    = new StringBuilder();
            var           array = new MyJson.JsonNode_Array();

            for (var i = 0; i < _params.Length; i++)
            {
                array.Add(_params[i]);
            }
            json["params"] = array;
            data           = System.Text.Encoding.UTF8.GetBytes(json.ToString());
            return(url);
        }
示例#25
0
        static string MakeRpcUrlPost(string method, params string[] _params)
        {
            var json = new MyJson.JsonNode_Object();

            json.SetDictValue("id", 1);
            json.SetDictValue("jsonrpc", "2.0");
            json.SetDictValue("method", method);

            var array = new MyJson.JsonNode_Array();

            for (var i = 0; i < _params.Length; i++)
            {
                array.Add(new MyJson.JsonNode_ValueString(_params[i]));
            }
            json.SetDictValue("params", array);
            string urldata = json.ToString();

            return(urldata);
        }
示例#26
0
        void Obj2Json(GameObject _obj, MyJson.JsonNode_Object _json)
        {
            _json["name"] = new MyJson.JsonNode_ValueString(_obj.name);
            _json["id"]   = new MyJson.JsonNode_ValueNumber(_obj.GetInstanceID());
            //遍历填充组件
            MyJson.JsonNode_Array comps = new MyJson.JsonNode_Array();
            _json["components"] = comps;
            foreach (var c in _obj.GetComponents <Component>())
            {
                if (c == null)
                {
                    Debug.LogWarning("got a commponet null.");
                    continue;
                }
                string type   = c.GetType().Name.ToLower();
                var    _cjson = new MyJson.JsonNode_Object();
                _cjson["type"] = new MyJson.JsonNode_ValueString(type);
                if (componentParsers.ContainsKey(type) == false)
                {
                    Debug.LogWarning("can't find comparser:" + type);
                    continue;
                }

                componentParsers[type].WriteToJson(resmgr, _obj, c, _cjson);
                comps.Add(_cjson);
            }

            //遍历填充树
            if (_obj.transform.childCount > 0)
            {
                MyJson.JsonNode_Array children = new MyJson.JsonNode_Array();
                _json["children"] = children;

                for (int i = 0; i < _obj.transform.childCount; i++)
                {
                    var subobj = _obj.transform.GetChild(i).gameObject;
                    MyJson.JsonNode_Object _subjson = new MyJson.JsonNode_Object();
                    Obj2Json(subobj, _subjson);
                    children.Add(_subjson);
                }
            }
        }
示例#27
0
 private static void filemap_list(IOwinContext context, FormData formdata)
 {
     MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
     json["tag"] = new MyJson.JsonNode_ValueNumber(0);
     MyJson.JsonNode_Array maps = new MyJson.JsonNode_Array();
     json["maps"] = maps;
     foreach (var k in CustomServer.mapParser)
     {
         if (k.Value is StaticFileParser)
         {
             StaticFileParser       pv   = k.Value as StaticFileParser;
             MyJson.JsonNode_Object item = new MyJson.JsonNode_Object();
             item.SetDictValue("url", "/" + k.Key);
             item.SetDictValue("pathOnDrive", pv.pathOnDrive);
             maps.Add(item);
         }
     }
     context.Response.Write(json.ToString());
     return;
 }
示例#28
0
        public MyJson.JsonNode_Object GenJson()
        {
            MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
            json.SetDictValue("name", this.name);
            var sha1 = SHA1.Create();

            json.SetDictValue("returntype", this.returntype);

            json.SetDictValue("paramcount", this.paramtypes.Count);
            MyJson.JsonNode_Array jsonparams = new MyJson.JsonNode_Array();
            json.SetDictValue("params", jsonparams);
            for (var i = 0; i < this.paramtypes.Count; i++)
            {
                MyJson.JsonNode_Object item = new MyJson.JsonNode_Object();
                item.SetDictValue("name", this.paramtypes[i].name);
                item.SetDictValue("type", this.paramtypes[i].type);
                jsonparams.Add(item);
            }
            return(json);
        }
        public JArray getAddressNep5Asset(string address, string nep5Hash)
        {
            string script = null;

            using (var sb = new ThinNeo.ScriptBuilder())
            {
                ThinNeo.Hash160 shash = new ThinNeo.Hash160(nep5Hash);

                MyJson.JsonNode_Array JAParams = new MyJson.JsonNode_Array();
                JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + address));
                sb.EmitParamJson(JAParams);
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)balanceOf"));
                sb.EmitAppCall(shash);

                sb.EmitParamJson(new MyJson.JsonNode_Array());
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)decimals"));
                sb.EmitAppCall(shash);

                var data = sb.ToArray();
                script = ThinNeo.Helper.Bytes2HexString(data);
            }
            var res         = Rpc.invokescript(this.neoCliJsonRPCUrl, script).Result;
            var arr         = res.GetDictItem("stack").AsList().ToArray();
            var valueString = arr[0].AsDict()["value"].AsString();

            var decimalString = arr[1].AsDict()["value"].AsString();
            int decimals      = int.Parse(decimalString);
            //-----------精度
            //string findStr = "{{assetid:'{0}'}}";
            //findStr = string.Format(findStr, nep5Hash);
            //JArray utxoArr=mh.GetData(Block_mongodbConnStr, Block_mongodbDatabase, "NEP5asset", findStr);
            //int decimals=(int)((JObject)utxoArr[0])["decimals"];

            decimal value = decimal.Parse(Number.getNumStrFromHexStr(valueString, decimals));

            return(new JArray(new JObject()
            {
                { "value", value }
            }));
        }
示例#30
0
        //public Dictionary<string, byte[]> codes = new Dictionary<string, byte[]>();
        //public byte[] GetScript(byte[] script_hash)
        //{
        //    string strhash = "";
        //    foreach (var b in script_hash)
        //    {
        //        strhash += b.ToString("X02");
        //    }
        //    return codes[strhash];
        //}
        public string GenJson()
        {
            MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
            json["__name__"] = new MyJson.JsonNode_ValueString("neomodule.");

            //code
            var jsoncode = new MyJson.JsonNode_Array();

            json["code"] = jsoncode;
            foreach (var c in this.total_Codes.Values)
            {
                jsoncode.Add(c.GenJson());
            }
            //code bytes
            var code    = this.Build();
            var codestr = "";

            foreach (var c in code)
            {
                codestr += c.ToString("X02");
            }
            json.SetDictValue("codebin", codestr);

            //calls
            MyJson.JsonNode_Object methodinfo = new MyJson.JsonNode_Object();
            json["call"] = methodinfo;
            foreach (var m in this.mapMethods)
            {
                methodinfo[m.Key] = m.Value.GenJson();
            }


            StringBuilder sb = new StringBuilder();

            json.ConvertToStringWithFormat(sb, 4);
            return(sb.ToString());
        }
示例#31
0
    void SaveItem()
    {
        //GameObject setobj = null;//选中的对象
        //bool bUseHashName = true;//是否使用hash作为资源文件名
        //string exportResult = null;//导出结果
        //string exportPath = null;//导出路径
        //bool bUseHashTreeName = false;//是否使用hash作为导出节点名
        //string exportNodeName = "";//导出节点名称

        nodeParser.nodeParser np = new nodeParser.nodeParser();
        np.SaveNode(this.setobj);//先强制使用HashName

        if (System.IO.Directory.Exists(exportPath) == false)
            System.IO.Directory.CreateDirectory(exportPath);
        string respath = System.IO.Path.Combine(exportPath, "resources");
        if (System.IO.Directory.Exists(respath) == false)
            System.IO.Directory.CreateDirectory(respath);

        MyJson.JsonNode_Array indexfile = new MyJson.JsonNode_Array();
        foreach (var f in np.bufs)
        {
            //写入文件
            {
                var file = System.IO.Path.Combine(respath, f.Key);
                System.IO.File.WriteAllBytes(file, f.Value);
            }
            //记录索引
            MyJson.JsonNode_Object indexitem = new MyJson.JsonNode_Object();
            indexitem["Name"] = new MyJson.JsonNode_ValueString("resources/" + f.Key);
            indexitem["Length"] = new MyJson.JsonNode_ValueNumber(f.Value.Length);
            indexfile.Add(indexitem);
        }
        indexfile.Sort((a, b) =>
        {
            return string.Compare(a.asDict()["Name"].AsString(), b.asDict()["Name"].AsString());
        });
        {//保存索引文件
            byte[] indexcode = System.Text.Encoding.UTF8.GetBytes(indexfile.ToString());

            exportResult = exportNodeName;
            if (bUseHashTreeName)
            {
                exportResult = ResLibTool.ComputeHashString(indexcode);
            }
            string outfile = System.IO.Path.Combine(exportPath, exportResult + ".indexlist.txt");

            System.IO.File.WriteAllBytes(outfile, indexcode);
        }

    }
示例#32
0
        public static MyJson.JsonNode_Object ToJson(object ScriptObject)
        {
            CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance;
            if (sobj == null)
            {
                return(null);
            }
            MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
            var stype = sobj.type;
            //    CSLE.SType stype=sobj.type;
            var ms = stype.GetFieldNames();

            foreach (var m in ms)
            {
                var field = stype.GetField(m);
                if (field.isStatic)
                {
                    continue;
                }
                if ((Type)field.FieldType.TypeForSystem == typeof(int))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(float))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(double))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(string))
                {
                    obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]);
                }

                //        else if ((Type)m.Value.type.type == typeof(List<object>))
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <CLRSharp.CLRSharp_Instance>))
                {
                    //处理List
                    List <CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List <CLRSharp.CLRSharp_Instance>;
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;
                    foreach (var item in slist)
                    {
                        list.Add(ToJson(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <string>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <string> slist = sobj.Fields[m] as List <string>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueString(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <int>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <int> slist = sobj.Fields[m] as List <int>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <float>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <float> slist = sobj.Fields[m] as List <float>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <double>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <double> slist = sobj.Fields[m] as List <double>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if (field.FieldType is CLRSharp.ICLRType_Sharp)
                //        else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型
                {
                    obj[m] = ToJson(sobj.Fields[m]);
                }
                else
                {
                    Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString());
                }
            }
            return(obj);
        }
示例#33
0
 public override string ToString()
 {
     MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
     foreach(var list in needList)
     {
         MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
         obj[list.Key] = array;
         foreach(var item in list.Value)
         {
             array.Add(new MyJson.JsonNode_ValueString(item));
         }
     }
     return obj.ToString();
 }
示例#34
0
        void Obj2Json(GameObject _obj, MyJson.JsonNode_Object _json)
        {
            _json["name"] = new MyJson.JsonNode_ValueString(_obj.name);
            _json["id"] = new MyJson.JsonNode_ValueNumber(_obj.GetInstanceID());
            //遍历填充组件
            MyJson.JsonNode_Array comps = new MyJson.JsonNode_Array();
            _json["components"] = comps;
            foreach (var c in _obj.GetComponents<Component>())
            {
                if (c == null)
                {
                    Debug.LogWarning("got a commponet null.");
                    continue;
                }
                string type = c.GetType().Name.ToLower();
                var _cjson = new MyJson.JsonNode_Object();
                _cjson["type"] = new MyJson.JsonNode_ValueString(type);
                if (componentParsers.ContainsKey(type) == false)
                {
                    Debug.LogWarning("can't find comparser:" + type);
                    continue;
                }

                componentParsers[type].WriteToJson(resmgr, _obj, c, _cjson);
                comps.Add(_cjson);
            }

            //遍历填充树
            if (_obj.transform.childCount > 0)
            {
                MyJson.JsonNode_Array children = new MyJson.JsonNode_Array();
                _json["children"] = children;

                for (int i = 0; i < _obj.transform.childCount; i++)
                {
                    var subobj = _obj.transform.GetChild(i).gameObject;
                    MyJson.JsonNode_Object _subjson = new MyJson.JsonNode_Object();
                    Obj2Json(subobj, _subjson);
                    children.Add(_subjson);
                }
            }

        }
示例#35
0
 static MyJson.IJsonNode UnPackJsonArray(System.IO.Stream stream, byte tagfirst, IList<string> pubdict, IList<string> localdict)
 {
     MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
     int count = ReadCountHead(stream, tagfirst);
     for (int i = 0; i < count; i++)
     {
         array.Add(UnPackJson(stream, pubdict, localdict));
     }
     return array;
 }
示例#36
0
        public static MyJson.JsonNode_Object Export(NeoModule module, byte[] script)
        {
            var sha256 = System.Security.Cryptography.SHA256.Create();

            byte[] hash256   = sha256.ComputeHash(script);
            var    ripemd160 = new Neo.Cryptography.RIPEMD160Managed();
            var    hash      = ripemd160.ComputeHash(hash256);

            var outjson = new MyJson.JsonNode_Object();

            //hash
            StringBuilder sb = new StringBuilder();

            sb.Append("0x");
            foreach (var b in hash.Reverse().ToArray())
            {
                sb.Append(b.ToString("x02"));
            }
            outjson.SetDictValue("hash", sb.ToString());

            //entrypoint
            outjson.SetDictValue("entrypoint", "Main");
            var mainmethod = module.mapMethods[module.mainMethod];

            if (mainmethod != null)
            {
                var name = mainmethod.displayName;
                outjson.SetDictValue("entrypoint", name);
            }
            //functions
            var funcsigns = new MyJson.JsonNode_Array();

            outjson["functions"] = funcsigns;

            foreach (var function in module.mapMethods)
            {
                var mm = function.Value;
                if (mm.isPublic == false)
                {
                    continue;
                }
                var ps       = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries);
                var funcsign = new MyJson.JsonNode_Object();

                funcsigns.Add(funcsign);
                var funcname = ps[1];
                if (funcname.IndexOf("::") > 0)
                {
                    var sps = funcname.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries);
                    funcname = sps.Last();
                }
                funcsign.SetDictValue("name", function.Value.displayName);
                MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                funcsign["parameters"] = funcparams;
                if (mm.paramtypes != null)
                {
                    foreach (var v in mm.paramtypes)
                    {
                        var ptype = ConvType(v.type);
                        var item  = new MyJson.JsonNode_Object();
                        funcparams.Add(item);

                        item.SetDictValue("name", v.name);
                        item.SetDictValue("type", ptype);
                    }
                }

                var rtype = ConvType(mm.returntype);
                funcsign.SetDictValue("returntype", rtype);
            }

            //events
            var eventsigns = new MyJson.JsonNode_Array();

            outjson["events"] = eventsigns;
            foreach (var events in module.mapEvents)
            {
                var mm = events.Value;

                var ps       = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries);
                var funcsign = new MyJson.JsonNode_Object();

                eventsigns.Add(funcsign);

                funcsign.SetDictValue("name", events.Value.displayName);
                MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                funcsign["parameters"] = funcparams;
                if (mm.paramtypes != null)
                {
                    foreach (var v in mm.paramtypes)
                    {
                        var ptype = ConvType(v.type);
                        var item  = new MyJson.JsonNode_Object();
                        funcparams.Add(item);

                        item.SetDictValue("name", v.name);
                        item.SetDictValue("type", ptype);
                    }
                }
                var rtype = ConvType(mm.returntype);
                funcsign.SetDictValue("returntype", rtype);
            }

            return(outjson);
        }
示例#37
0
 public void Log(string log)
 {
     array.Add(new MyJson.JsonNode_ValueString(log));
 }
示例#38
0
        private static async Task parseJAVA(IOwinContext context, FormData formdata)
        {
            try
            {
                string dictname  = null;
                string classname = null;
                var    file      = formdata.mapFiles["file"];
                var    code      = System.Text.Encoding.UTF8.GetString(file);

                //准备临时目录
                {
                    Random i   = new Random();
                    var    num = i.Next();

                    while (System.IO.Directory.Exists("tmp\\tmp_" + num.ToString("X08")))
                    {
                        num++;
                    }
                    dictname = "tmp\\tmp_" + num.ToString("X08");

                    var fc     = code.IndexOf("class");
                    int ibegin = -1;

                    for (int ib = fc + 6; ib < fc + 100; ib++)
                    {
                        if (ibegin < 0)
                        {
                            if (code[ib] == ' ')
                            {
                                continue;
                            }
                            else
                            {
                                ibegin = ib;
                            }
                        }
                        else
                        {
                            if (code[ib] == ' ' || code[ib] == '}')
                            {
                                classname = code.Substring(ibegin, ib - ibegin);
                                break;
                            }
                        }
                    }
                }
                System.IO.Directory.CreateDirectory(dictname);
                string filename = System.IO.Path.Combine(dictname, classname + ".java");
                System.IO.File.WriteAllText(filename, code);
                string jarfile = "AntShares.SmartContract.Framework.jar";
                System.IO.File.Copy(jarfile, System.IO.Path.Combine(dictname, jarfile));

                //编译
                try
                {
                    System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
                    info.FileName               = "cmd.exe";
                    info.UseShellExecute        = false;
                    info.RedirectStandardOutput = true;
                    info.RedirectStandardInput  = true;
                    info.RedirectStandardError  = true;
                    info.WorkingDirectory       = dictname;
                    var proc = System.Diagnostics.Process.Start(info);
                    proc.StandardInput.WriteLine("javac -cp " + jarfile + " " + classname + ".java");
                    proc.StandardInput.WriteLine("exit");


                    string        back      = proc.StandardError.ReadToEnd();
                    string        inerror   = "";
                    int           line      = -1;
                    string        tag       = "";
                    List <string> outline   = new List <string>();
                    List <int>    errorline = new List <int>();
                    List <string> errorTag  = new List <string>();
                    string[]      lines     = back.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                    for (var i = 0; i < lines.Length; i++)
                    {
                        if (inerror == "")
                        {
                            var mm = lines[i].Split(':');
                            if (mm.Length > 3)
                            {
                                line     = int.Parse(mm[1]);
                                inerror += mm[3];
                                tag      = mm[2];
                            }
                        }
                        else
                        {
                            if (lines[i].IndexOf("^") >= 0)
                            {
                                outline.Add(inerror);
                                errorline.Add(line);
                                errorTag.Add(tag);
                                inerror = "";
                            }
                            else
                            {
                                inerror += "\n" + lines[i];
                            }
                        }
                    }

                    if (outline.Count == 0)
                    {
                        //succ
                    }
                    else
                    {
                        MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                        json["tag"] = new MyJson.JsonNode_ValueNumber(-3);
                        json["msg"] = new MyJson.JsonNode_ValueString("compile fail.");

                        MyJson.JsonNode_Array errs = new MyJson.JsonNode_Array();
                        json["errors"] = errs;
                        for (var i = 0; i < outline.Count; i++)
                        {
                            MyJson.JsonNode_Object errtag = new MyJson.JsonNode_Object();
                            errs.Add(errtag);
                            errtag.SetDictValue("msg", outline[i]);
                            errtag.SetDictValue("line", errorline[i]);
                            errtag.SetDictValue("tag", errorTag[i]);
                            //errtag.SetDictValue("col", r.Errors[i].Column);
                        }
                        await context.Response.WriteAsync(json.ToString());

                        return;
                    }
                }
                catch (Exception err)
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on comp.");
                    json["err"] = new MyJson.JsonNode_ValueString(err.ToString());
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }

                //conv
                try
                {
                    JavaModule module = new JavaModule();
                    module.LoadJar(jarfile);
                    module.LoadClass(System.IO.Path.Combine(dictname, classname + ".class"));
                    var logjson = new Log2Json();
                    var conv    = new Neo.Compiler.JVM.ModuleConverter(logjson);
                    var neomd   = conv.Convert(module);
                    var mm      = neomd.mapMethods[neomd.mainMethod];

                    var bs = neomd.Build();
                    if (bs != null)
                    {
                        MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                        json["tag"] = new MyJson.JsonNode_ValueNumber(0);
                        StringBuilder sb     = new StringBuilder();
                        StringBuilder sb2    = new StringBuilder();
                        var           hash   = System.Security.Cryptography.SHA256.Create();
                        var           hashbs = hash.ComputeHash(bs);
                        foreach (var b in bs)
                        {
                            sb.Append(b.ToString("X02"));
                        }
                        foreach (var b in hashbs)
                        {
                            sb2.Append(b.ToString("X02"));
                        }
                        json["hex"]  = new MyJson.JsonNode_ValueString(sb.ToString());
                        json["hash"] = new MyJson.JsonNode_ValueString(sb2.ToString());

                        json["returntype"] = new MyJson.JsonNode_ValueString(mm.returntype);
                        MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                        json["params"] = funcparams;
                        if (mm.paramtypes != null)
                        {
                            foreach (var v in mm.paramtypes)
                            {
                                funcparams.Add(new MyJson.JsonNode_ValueString(v.type));
                            }
                        }

                        await context.Response.WriteAsync(json.ToString());

                        return;
                    }


                    else
                    {
                        {
                            MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                            json["tag"]  = new MyJson.JsonNode_ValueNumber(-4);
                            json["msg"]  = new MyJson.JsonNode_ValueString("compile fail.");
                            json["info"] = logjson.array;
                            await context.Response.WriteAsync(json.ToString());

                            return;
                        }
                    }
                }
                catch (Exception err)
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on conv.");
                    json["err"] = new MyJson.JsonNode_ValueString(err.ToString());
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
            }
            catch
            {
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("parse fail.");
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
            }
        }
示例#39
0
        public static MyJson.JsonNode_Object ToJson(object ScriptObject)
        {
            CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance;
            if (sobj == null) return null;
            MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
            var stype = sobj.type;
            //    CSLE.SType stype=sobj.type;
            var ms = stype.GetFieldNames();
            foreach (var m in ms)
            {
                var field = stype.GetField(m);
                if (field.isStatic) continue;
                if ((Type)field.FieldType.TypeForSystem == typeof(int))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(float))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(double))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(string))
                {
                    obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]);
                }

        //        else if ((Type)m.Value.type.type == typeof(List<object>))
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<CLRSharp.CLRSharp_Instance>))
                {
                    //处理List
                    List<CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List<CLRSharp.CLRSharp_Instance>;
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;
                    foreach (var item in slist)
                    {
                        list.Add(ToJson(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<string>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<string> slist = sobj.Fields[m] as List<string>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueString(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<int>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<int> slist = sobj.Fields[m] as List<int>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<float>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<float> slist = sobj.Fields[m] as List<float>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<double>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<double> slist = sobj.Fields[m] as List<double>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if (field.FieldType is CLRSharp.ICLRType_Sharp)
                //        else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型
                {
                    obj[m] = ToJson(sobj.Fields[m]);
                }
                else
                {
                    Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString());
                }
            }
            return obj;
        }
示例#40
0
        public static MyJson.JsonNode_Object ToJson(object ScriptObject)
        {
            CSLE.SInstance sobj = ScriptObject as CSLE.SInstance;
            if (sobj == null) return null;
            MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
            CSLE.SType stype=sobj.type;
            foreach (var m in stype.members)
            {
                if ((Type)m.Value.type.type == typeof(int))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueNumber((int)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(float))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueNumber((float)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(double))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueNumber((double)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(string))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueString((string)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(List<object>))
                {
                    //处理List
                    List<object> slist = sobj.member[m.Key].value as List<object>;
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;
                    foreach(var item in slist)
                    {
                        list.Add(ToJson(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<string>))
                {
                    var list =new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<string> slist = sobj.member[m.Key].value as List<string>;
                  
                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueString(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<int>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<int> slist = sobj.member[m.Key].value as List<int>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<float>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<float> slist = sobj.member[m.Key].value as List<float>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<double>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<double> slist = sobj.member[m.Key].value as List<double>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型
                {
                    obj[m.Key] = ToJson(sobj.member[m.Key].value);
                }
                else
                {
                    Debug.Log("发现不能处理的类型:" + stype.Name + ":" + m.Key + ":" + m.Value.type.ToString());
                }
            }
            return obj;
        }