Beispiel #1
0
        static void testMapping()
        {
            var pattern = "var f; function k(){var t=0; while(false) t=t;}    function a(){ var t=0; while(t<1) ++t; return t>3; } /*a();*/ var c=b.Name; var d=b.Age; b.Age=15; /*for(var i=0;i<100;++i){ d=b.Age;b.Age=i; b.Name=\"cat\"; c=b.Say();b.Add(); f=a(); k();}*/";

            Tokenizer tg     = new Tokenizer();
            var       watch  = new Stopwatch();
            var       reader = new SequenceReader <Token>(tg.Tokenize(pattern));

            var block = new TopBlock();
            var p     = new Animal {
                Name = "dog", Age = 10
            };

            block.Declare("b", new JMappingObject(p));
            var builder = new TopBlockBuilder(reader, block);

            builder.Build();

            watch.Start();
            builder.Block.Excute(null);
            Console.WriteLine(watch.ElapsedMilliseconds);
            Console.WriteLine("c is " + block.GetVariable("c"));
            Console.WriteLine("d is " + block.GetVariable("d"));
            Console.WriteLine("f is " + block.GetVariable("f"));
            Console.WriteLine(p.Age);
            Console.WriteLine(p.Name);
            Console.Read();
        }
        //Only overriden, not called from elsewhere
        protected virtual bool Attach(MyAttachableTopBlockBase topBlock, bool updateGroup = true)
        {
            Debug.Assert(TopBlock == null, "Inconsistency");
            Debug.Assert(!m_welded, "Inconsistency");
            if (topBlock.CubeGrid.Physics == null)
            {
                return(false);
            }

            if (CubeGrid.Physics == null || !CubeGrid.Physics.Enabled)
            {
                return(false);
            }

            m_topBlock = topBlock;
            m_topGrid  = TopBlock.CubeGrid;
            TopBlock.Attach(this);

            if (updateGroup)
            {
                CubeGrid.OnPhysicsChanged += cubeGrid_OnPhysicsChanged;

                TopGrid.OnGridSplit      += CubeGrid_OnGridSplit;
                TopGrid.OnPhysicsChanged += cubeGrid_OnPhysicsChanged;
                TopBlock.OnClosing       += TopBlock_OnClosing;

                OnConstraintAdded(GridLinkTypeEnum.Physical, TopGrid);
                OnConstraintAdded(GridLinkTypeEnum.Logical, TopGrid);

                RaiseAttachedEntityChanged(); //top is already set we can call here
            }

            if (Sync.IsServer)
            {
                MatrixD masterToSlave = TopBlock.CubeGrid.WorldMatrix * MatrixD.Invert(WorldMatrix);
                m_connectionState.Value = new State()
                {
                    TopBlockId = TopBlock.EntityId, MasterToSlave = masterToSlave, Welded = m_welded
                };
            }
            else if (m_connectionState.Value.MasterToSlave.HasValue)
            {
                TopBlock.CubeGrid.WorldMatrix = MatrixD.Multiply(m_connectionState.Value.MasterToSlave.Value, this.WorldMatrix);
            }

            m_isAttached = true; //Welding only allowed when attached

            if (m_forceWeld)
            {
                WeldGroup(true);
            }
            CheckVelocities();

            return(true);
        }
Beispiel #3
0
    public void spawnNewBlock()
    {
        Vector3 pos;

        pos.x = 10.0f;
        pos.z = 0.0f;
        if (Random.value < 0.3f)
        {
            pos.y = 0.4f;
            TopBlock newBlock = Instantiate(block, pos, Quaternion.identity);
        }
        else
        {
            pos.y = -1.1f;
            BotBlock newBlock = Instantiate(bblock, pos, Quaternion.identity);
        }
    }
Beispiel #4
0
        static void tsetExcute()
        {
            var pattern = " var d=\"hello\"+\" world!\"; var b=d==\"hello world!\";var f=d+\" just for test! \";  var a=15; function add(b,c){ var t=0; for(var i=b;i<c;++i) t=t+i*5;   return t;}  var c= add(1,100000); ";


            Tokenizer tg    = new Tokenizer();
            var       watch = new Stopwatch();



            for (int i = 0; i < 100000; i++)
            {
                var reader = new SequenceReader <Token>(tg.Tokenize(pattern));

                var block = new TopBlock();

                var builder = new TopBlockBuilder(reader, block);
                builder.Build();

                watch.Start();
                builder.Block.Excute(null);

                Console.WriteLine(watch.ElapsedMilliseconds);
                Console.WriteLine("a is " + block.GetVariable("a"));
                Console.WriteLine("c is " + block.GetVariable("c").ToString());
                Console.WriteLine("b is " + block.GetVariable("b").ToString());
                Console.WriteLine("d is " + block.GetVariable("d"));
                Console.WriteLine("f is " + block.GetVariable("f"));
                Console.Read();
            }
            Console.WriteLine($"spend:{watch.ElapsedMilliseconds} ");


            var watch2 = new Stopwatch();

            watch2.Start();
            var a = 7;
            var b = 9;

            for (int i = 0; i < 10000; i++)
            {
                var c = (a + b * b - a) - a * 7 + a - b + b + b * a;
            }

            Console.WriteLine(watch2.ElapsedMilliseconds);
        }
        //Only overriden, not called from elsewhere
        protected virtual void Detach(bool updateGroups = true)
        {
            Debug.Assert(m_isAttached && TopBlock != null, "Inconsistency! critical!");
            if (m_welded)
            {
                UnweldGroup();
            }

            if (updateGroups)
            {
                m_needReattach = false; //i.e. block could be destroyed after the flag was rised

                BreakLinks(TopGrid, TopBlock);

                if (Sync.IsServer)
                {
                    m_connectionState.Value = new State()
                    {
                        TopBlockId = null, Welded = false
                    };
                }
            }

            DisposeConstraint();

            if (TopBlock != null)
            {
                TopBlock.Detach(false);
            }


            m_topGrid    = null;
            m_topBlock   = null;
            m_isAttached = false;

            UpdateText();

            if (updateGroups)
            {
                RaiseAttachedEntityChanged();
            }
        }
Beispiel #6
0
 public void AddRangeVariable(RangeVariable variable)
 {
     variable.Block = this;
     TopBlock.AddLocalName(variable.Name, variable, true);
 }
Beispiel #7
0
 public InstrcutGroupCollection Build(TopBlock block)
 {
     return(null);
 }
Beispiel #8
0
    public IEnumerator GetJSON()
    {
        //Add login and pass string
        WWW www = new WWW("http://vg2.v-galaktike.ru/api/?class=user&method=login&email=" + login_str + "&password="******"error"] == null)
            {
                LoginPanel.SetActive(false);
                if (isFirstLogin)
                {
                    PlayerPrefs.SetString("userLogin", login_str);
                    PlayerPrefs.SetString("userPass", pass_str);
                    PlayerPrefs.Save();
                }

                if (PlayerPrefs.HasKey("userLogin") && PlayerPrefs.HasKey("userPass"))
                {
                    LoadingPanel.SetActive(true);
                }

                MainResourcesController.userId    = error["user_id"].AsInt;
                MainResourcesController.userToken = error["token"].Value;

                WWW www_getuser = new WWW("http://vg2.v-galaktike.ru/api/?class=user&method=getuser&token=" + MainResourcesController.userToken);
                yield return(www_getuser);

                result = JSON.Parse(www_getuser.text);

                current_user   = result["user"];
                current_planet = result["system"];
                game_config    = result["game_config"];
                system_list    = result["system_list"];
                statistic      = result["stats"];

                buildingsInProgress = current_planet["building"];
                researchInProgress  = current_user["tech"];
                docDefInProgress    = current_planet["weapon"];


                GetValForJson();
                mrc = TopBlock.GetComponent <MainResourcesController>();
                mrc.ValOnTheirPlace();
                mrc.repeatTick();
                MainResourcesController.timeNow        = result["now"].AsLong;
                MainResourcesController.weapone_update = current_planet["weapon_update"].AsLong;

                xmlParser.SetActive(true);
            }
            else
            {
                // Bad Login Or Pass
                login_field.transform.FindChild("Text").GetComponent <Text>().color = red;
                login_field.GetComponent <Image>().sprite = errorLogin_sprite;
                pass_field.transform.FindChild("Text").GetComponent <Text>().color = red;
                pass_field.GetComponent <Image>().sprite = errorLogin_sprite;
                errorText_go.SetActive(true);
                errorText_go.GetComponent <Text>().text = "Ошибка:\nЕмайл или пароль введены не верно.";
            }
        }
        else
        {
            Debug.Log(www.error);
            Error.SetActive(true);
        }
    }