Esempio n. 1
0
        public void TestOpenFirstBlock()
        {
            var(_, inbox, outbox, _, c5) = Setup();

            var store = new VolatileChainStore();

            var chainController = new ChainController(
                store,
                inbox,
                outbox,
                lineage => { });

            var request = OpenBlockRequest.From(
                _r1, c5, CommittedBlockId.GenesisParent);

            inbox.TryWrite(request.Span);

            chainController.HandleRequest();

            var result = new OpenBlockResponse(outbox.Peek().Span);

            Assert.Equal(MessageKind.OpenBlockResponse, result.MessageHeader.MessageKind);

            Assert.Equal(_r1, result.MessageHeader.RequestId);
            Assert.Equal(c5, result.MessageHeader.ClientId);
            Assert.Equal(new BlockAlias(0, 0), result.Handle.ConvertToBlockAlias(c5.Mask));

            // TODO: [vermorel] persistence unit tests should be isolated
            //var persister = new BlockchainPersister(TerabConfiguration.CommittedBlocksPersistencePath,
            //    TerabConfiguration.UncommittedBlocksPersistencePath);
            //var newChain = persister.ReadBlockchain();
            //Assert.Equal(chain.UncommittedBlockCount, newChain.UncommittedBlockCount);
            //Assert.Equal(chain.CommittedBlockCount, newChain.CommittedBlockCount);
        }
Esempio n. 2
0
        public async void Patch_No_Errors()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();
            var mockResult = new Mock <UpdateResponse <ApiChainResponseModel> >();

            mockResult.SetupGet(x => x.Success).Returns(true);
            mock.ServiceMock.Setup(x => x.Update(It.IsAny <int>(), It.IsAny <ApiChainRequestModel>()))
            .Callback <int, ApiChainRequestModel>(
                (id, model) => model.ChainStatusId.Should().Be(1)
                )
            .Returns(Task.FromResult <UpdateResponse <ApiChainResponseModel> >(mockResult.Object));
            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiChainResponseModel>(new ApiChainResponseModel()));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, new ApiChainModelMapper());

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var patch = new JsonPatchDocument <ApiChainRequestModel>();

            patch.Replace(x => x.ChainStatusId, 1);

            IActionResult response = await controller.Patch(default(int), patch);

            response.Should().BeOfType <OkObjectResult>();
            (response as OkObjectResult).StatusCode.Should().Be((int)HttpStatusCode.OK);
            mock.ServiceMock.Verify(x => x.Update(It.IsAny <int>(), It.IsAny <ApiChainRequestModel>()));
        }
Esempio n. 3
0
        public async void BulkInsert_No_Errors()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();

            var mockResponse = new CreateResponse <ApiChainResponseModel>(new FluentValidation.Results.ValidationResult());

            mockResponse.SetRecord(new ApiChainResponseModel());
            mock.ServiceMock.Setup(x => x.Create(It.IsAny <ApiChainRequestModel>())).Returns(Task.FromResult <CreateResponse <ApiChainResponseModel> >(mockResponse));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var records = new List <ApiChainRequestModel>();

            records.Add(new ApiChainRequestModel());
            IActionResult response = await controller.BulkInsert(records);

            response.Should().BeOfType <OkObjectResult>();
            (response as OkObjectResult).StatusCode.Should().Be((int)HttpStatusCode.OK);
            var result = (response as OkObjectResult).Value as List <ApiChainResponseModel>;

            result.Should().NotBeEmpty();
            mock.ServiceMock.Verify(x => x.Create(It.IsAny <ApiChainRequestModel>()));
        }
    private void Awake()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible   = false;

        _rb              = GetComponent <Rigidbody2D>();
        listener         = Camera.main.GetComponent <AudioListener>();
        mainCameraSource = Camera.main.GetComponent <AudioSource>();
        _physics         = new PhysicsCalculation();
        _physics.CalculateGravity(stats.jumpHeight, stats.timeToApex);
        Physics.gravity  = Vector3.zero;
        _rb.gravityScale = 0;
        yVelocity        = 0;
        _applyPhysics    = ApplyGravity;

        _detectFloor = DetectGroundFromGround;

        _groundKeys = new GroundController().SetModel(this);
        _airKeys    = new AirController().SetModel(this);
        _ladderKeys = new LadderController().SetModel(this);
        _chainKeys  = new ChainController().SetModel(this);

        stats.hp = stats.maxHP;

        _currentSpeed = stats.walkingSpeed;

        _checkpointPosition = transform.position;

        AddNewSkin(Resources.Load <Skin>("Skins/Latin_Lover_Skin"));
        SkillsAndValues.Add(_mySkins[0], () => { return(-1); });

        if (skillJet)
        {
            AddNewSkin(Resources.Load <Skin>("Skins/Jetpack_Skin"));
            GameObject.Find("JET").SetActive(true);
        }

        if (skillBowser)
        {
            AddNewSkin(Resources.Load <Skin>("Skins/Bowser_Skin"));
            GameObject.Find("BOW").SetActive(true);
        }

        if (skillFRQ)
        {
            AddNewSkin(Resources.Load <Skin>("Skins/FusRohCuack_Skin"));
            GameObject.Find("FRQ").SetActive(true);
        }
        //AddNewSkin(Resources.Load<Skin>("Skins/Bowser_Skin"));
        //SkillsAndValues.Add(_mySkins[1], () => { return -1; });
        //AddNewSkin(Resources.Load<Skin>("Skins/FusRohCuack_Skin"));
        //SkillsAndValues.Add(_mySkins[2], () => { return currentPointsFRC; });
        //AddNewSkin(Resources.Load<Skin>("Skins/Jetpack_Skin"));
        //SkillsAndValues.Add(_mySkins[3], () => { return currentPointsJetPack; });
    }
        public void Get_last_block()
        {
            var node = new Mock <INode>();

            node.SetupGet(n => n.Blockchain).Returns(blockchain);
            var controller = new ChainController(node.Object, new NullLogger <ChainController>());

            var block = controller.GetLast();

            Assert.IsNotNull(block);
            Assert.AreEqual(1, block.Questions.Count);
            Assert.AreEqual(1, block.Members.Count);
        }
        public void Test()
        {
            var application = new FakeApplicationContext();

            var blockchain = application.GetService <Blockchain>();
            var controller = new ChainController(blockchain);

            var response = controller.Index();

            var actual = ((List <Block>)response.Value).First().PreviousHash;

            Assert.NotNull(actual);
            Assert.Equal("7F83B1657FF1FC53B92DC18148A1D65DFC2D4B1FA3D677284ADDD200126D9069", actual);
        }
 void Start()
 {
     chain       = this;
     isReturning = false;
     SetState(idle);
     chainList     = new Stack();
     speed         = 0f;
     isStuck       = false;
     isChaining    = false;
     wasClimbing   = false;
     LastPos       = new Vector2();
     PlatformSpeed = new Vector2();
     rgdBdy        = GetComponent <Rigidbody2D>();
     lastPosList   = new List <float>();
     audio         = GetComponent <AudioSource>();
 }
Esempio n. 8
0
        public async void Get_Not_Exists()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();

            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiChainResponseModel>(null));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Get(default(int));

            response.Should().BeOfType <StatusCodeResult>();
            (response as StatusCodeResult).StatusCode.Should().Be((int)HttpStatusCode.NotFound);
            mock.ServiceMock.Verify(x => x.Get(It.IsAny <int>()));
        }
        public void Get_block()
        {
            var node = new Mock <INode>();

            node.SetupGet(n => n.Blockchain).Returns(blockchain);
            var controller = new ChainController(node.Object, new NullLogger <ChainController>());

            var response = controller.Get(Base58.Encode(block1Hash));

            Assert.AreEqual(200, response.StatusCode);

            var block = (Block)response.Value;

            Assert.IsNotNull(block);
            Assert.AreEqual(1, block.Questions.Count);
            Assert.AreEqual(1, block.Members.Count);
        }
Esempio n. 10
0
        public async void Delete_Errors()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();
            var mockResult = new Mock <ActionResponse>();

            mockResult.SetupGet(x => x.Success).Returns(false);
            mock.ServiceMock.Setup(x => x.Delete(It.IsAny <int>())).Returns(Task.FromResult <ActionResponse>(mockResult.Object));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Delete(default(int));

            response.Should().BeOfType <ObjectResult>();
            (response as ObjectResult).StatusCode.Should().Be((int)HttpStatusCode.UnprocessableEntity);
            mock.ServiceMock.Verify(x => x.Delete(It.IsAny <int>()));
        }
Esempio n. 11
0
        public void Setup()
        {
            var dispatchInbox = new BoundedInbox();
            var chainInbox    = new BoundedInbox();
            var coinInboxes   = new BoundedInbox[ShardCount];

            for (var i = 0; i < coinInboxes.Length; i++)
            {
                coinInboxes[i] = new BoundedInbox();
            }

            _dispatcher = new DispatchController(
                dispatchInbox,
                chainInbox,
                coinInboxes,
                new IdentityHash());

            // Configure the wake-up callbacks to do nothing.
            _dispatcher.OnBlockMessageDispatched = () => { };
            for (var i = 0; i < _dispatcher.OnCoinMessageDispatched.Length; i++)
            {
                _dispatcher.OnCoinMessageDispatched[i] = () => { }
            }
            ;

            _store = new VolatileChainStore();

            _chainController = new ChainController(
                _store,
                chainInbox,
                dispatchInbox,
                lineage => { });

            var c1 = ClientId.Next();

            _clientConn = new ConnectionController(dispatchInbox, _socket, c1);
            _handleMask = c1.Mask;

            _dispatcher.AddConnection(_clientConn);
            _dispatcher.OnConnectionAccepted = _ => { };
            _dispatcher.HandleNewConnection();

            _c0 = new ClientId(0);
        }
Esempio n. 12
0
        public async void Update_NotFound()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();
            var mockResult = new Mock <UpdateResponse <ApiChainResponseModel> >();

            mockResult.SetupGet(x => x.Success).Returns(false);
            mock.ServiceMock.Setup(x => x.Update(It.IsAny <int>(), It.IsAny <ApiChainRequestModel>())).Returns(Task.FromResult <UpdateResponse <ApiChainResponseModel> >(mockResult.Object));
            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiChainResponseModel>(null));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, new ApiChainModelMapper());

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Update(default(int), new ApiChainRequestModel());

            response.Should().BeOfType <StatusCodeResult>();
            (response as StatusCodeResult).StatusCode.Should().Be((int)HttpStatusCode.NotFound);
            mock.ServiceMock.Verify(x => x.Get(It.IsAny <int>()));
        }
Esempio n. 13
0
        public async void Get_Exists()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();

            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult(new ApiChainServerResponseModel()));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Get(default(int));

            response.Should().BeOfType <OkObjectResult>();
            (response as OkObjectResult).StatusCode.Should().Be((int)HttpStatusCode.OK);
            var record = (response as OkObjectResult).Value as ApiChainServerResponseModel;

            record.Should().NotBeNull();
            mock.ServiceMock.Verify(x => x.Get(It.IsAny <int>()));
        }
Esempio n. 14
0
        public async void All_Not_Exists()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();

            mock.ServiceMock.Setup(x => x.All(It.IsAny <int>(), It.IsAny <int>())).Returns(Task.FromResult <List <ApiChainResponseModel> >(new List <ApiChainResponseModel>()));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.All(1000, 0);

            response.Should().BeOfType <OkObjectResult>();
            (response as OkObjectResult).StatusCode.Should().Be((int)HttpStatusCode.OK);
            var items = (response as OkObjectResult).Value as List <ApiChainResponseModel>;

            items.Should().BeEmpty();
            mock.ServiceMock.Verify(x => x.All(It.IsAny <int>(), It.IsAny <int>()));
        }
Esempio n. 15
0
        public SchemaVisualizer(Gtk.DrawingArea canvas)
        {
            this.canvas = canvas;

            canvas.AddEvents((int)Gdk.EventMask.ButtonPressMask);
            canvas.AddEvents((int)Gdk.EventMask.ButtonReleaseMask);
            canvas.AddEvents((int)Gdk.EventMask.PointerMotionMask);

            canvas.ButtonPressEvent   += HandleDrawingArea1ButtonPressEvent;
            canvas.ButtonReleaseEvent += HandleDrawingArea1ButtonReleaseEvent;
            canvas.KeyPressEvent      += HandleKeyPressEvent;
            canvas.KeyReleaseEvent    += HandleKeyReleaseEvent;

            canvas.ExposeEvent       += HandleDrawingArea1ExposeEvent;
            canvas.ConfigureEvent    += HandleConfigureEvent;
            canvas.MotionNotifyEvent += HandleDrawingArea1MotionNotifyEvent;

            model.RegisterSubModel <ShapesModel>(scene);
            model.RegisterSubModel <SelectionModel>(selection);
            model.RegisterSubModel <InteractionStateModel>(interaction);

            model.ModelChanged += HandleModelChanged;

            view.Viewers.Add(typeof(SolidV.MVC.Model), new ModelViewer <Context>());
            view.Viewers.Add(typeof(ShapesModel), new ShapeModelViewer());
            view.Viewers.Add(typeof(RectangleShape), new RectangleShapeViewer());
            view.Viewers.Add(typeof(EllipseShape), new EllipseShapeViewer());
            view.Viewers.Add(typeof(ArrowShape), new ArrowShapeViewer());
            view.Viewers.Add(typeof(TextBlockShape), new TextBlockShapeViewer());
            view.Viewers.Add(typeof(SelectionModel), new SelectionModelViewer());
            view.Viewers.Add(typeof(Glue), new GlueViewer());
            view.Viewers.Add(typeof(InteractionStateModel), new InteractionStateModelViewer());

            controller.SubControllers.Add(new ShapeSelectionController(model, view));
            ChainController <Gdk.Event, Context, SolidV.MVC.Model> cc =
                new ChainController <Gdk.Event, Context, SolidV.MVC.Model>();

            cc.SubControllers.Add(new ConnectorDragController(model, view));
            cc.SubControllers.Add(new ShapeDragController(model, view));
            controller.SubControllers.Add(cc);
        }
Esempio n. 16
0
        public async void Create_Errors()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();

            var mockResponse = new Mock <CreateResponse <ApiChainResponseModel> >(new FluentValidation.Results.ValidationResult());
            var mockRecord   = new ApiChainResponseModel();

            mockResponse.SetupGet(x => x.Success).Returns(false);

            mock.ServiceMock.Setup(x => x.Create(It.IsAny <ApiChainRequestModel>())).Returns(Task.FromResult <CreateResponse <ApiChainResponseModel> >(mockResponse.Object));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Create(new ApiChainRequestModel());

            response.Should().BeOfType <ObjectResult>();
            (response as ObjectResult).StatusCode.Should().Be((int)HttpStatusCode.UnprocessableEntity);
            mock.ServiceMock.Verify(x => x.Create(It.IsAny <ApiChainRequestModel>()));
        }
Esempio n. 17
0
        public async void Patch_Record_Not_Found()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();
            var mockResult = new Mock <ActionResponse>();

            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiChainResponseModel>(null));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var patch = new JsonPatchDocument <ApiChainRequestModel>();

            patch.Replace(x => x.ChainStatusId, 1);

            IActionResult response = await controller.Patch(default(int), patch);

            response.Should().BeOfType <StatusCodeResult>();
            (response as StatusCodeResult).StatusCode.Should().Be((int)HttpStatusCode.NotFound);
            mock.ServiceMock.Verify(x => x.Get(It.IsAny <int>()));
        }
Esempio n. 18
0
        public async void Create_No_Errors()
        {
            ChainControllerMockFacade mock = new ChainControllerMockFacade();

            var mockResponse = ValidationResponseFactory <ApiChainServerResponseModel> .CreateResponse(null as ApiChainServerResponseModel);

            mockResponse.SetRecord(new ApiChainServerResponseModel());
            mock.ServiceMock.Setup(x => x.Create(It.IsAny <ApiChainServerRequestModel>())).Returns(Task.FromResult <CreateResponse <ApiChainServerResponseModel> >(mockResponse));
            ChainController controller = new ChainController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Create(new ApiChainServerRequestModel());

            response.Should().BeOfType <CreatedResult>();
            (response as CreatedResult).StatusCode.Should().Be((int)HttpStatusCode.Created);
            var createResponse = (response as CreatedResult).Value as CreateResponse <ApiChainServerResponseModel>;

            createResponse.Record.Should().NotBeNull();
            mock.ServiceMock.Verify(x => x.Create(It.IsAny <ApiChainServerRequestModel>()));
        }
        public void Send_block_512()
        {
            using (var loggerFactory = CreateLoggerFactory())
            {
                var node       = new Mock <INode>();
                var controller = new ChainController(node.Object, loggerFactory.CreateLogger <ChainController>());

                var previousHash = new byte[] { 0, 0, 0, 0 };
                var block        = new Block(previousHash, 0);

                var path = Path.Combine(WorkingFolder, "files", "Lorem-Ipsum-512.txt");
                Assert.IsTrue(File.Exists(path));
                var content = File.ReadAllText(path);
                Assert.AreEqual(512, content.Length);
                block.Documents.Add(new Document(content));

                var response = controller.Post(block);

                Assert.AreEqual((int)HttpStatusCode.Accepted, response.StatusCode);
                node.Verify(n => n.Add(It.IsAny <Block>()), Times.Once);
            }
        }
 // Token: 0x06001E7C RID: 7804 RVA: 0x0008390C File Offset: 0x00081B0C
 private void Update()
 {
     this.timer          += Time.deltaTime;
     this.nextSpawnTimer += Time.deltaTime;
     if (this.timer >= this.duration)
     {
         UnityEngine.Object.Destroy(base.gameObject);
     }
     if (this.nextSpawnTimer >= this.duration / (float)this.count)
     {
         this.nextSpawnTimer -= this.duration / (float)this.count;
         GameObject           gameObject = UnityEngine.Object.Instantiate <GameObject>(this.childProjectilePrefab, base.transform.position, Util.QuaternionSafeLookRotation(base.transform.forward));
         ProjectileController component  = gameObject.GetComponent <ProjectileController>();
         if (component)
         {
             component.procChainMask   = this.projectileController.procChainMask;
             component.procCoefficient = this.projectileController.procCoefficient * this.childProcCoefficient;
             component.Networkowner    = this.projectileController.owner;
         }
         gameObject.GetComponent <TeamFilter>().teamIndex = base.GetComponent <TeamFilter>().teamIndex;
         ProjectileDamage component2 = gameObject.GetComponent <ProjectileDamage>();
         if (component2)
         {
             component2.damage           = this.projectileDamage.damage * this.childDamageCoefficient;
             component2.crit             = this.projectileDamage.crit;
             component2.force            = this.projectileDamage.force;
             component2.damageColorIndex = this.projectileDamage.damageColorIndex;
         }
         if (!this.ignoreParentForChainController)
         {
             ChainController component3 = gameObject.GetComponent <ChainController>();
             if (component3)
             {
                 component3.pastTargetList.Add(base.transform.parent);
             }
         }
         NetworkServer.Spawn(gameObject);
     }
 }
Esempio n. 21
0
    /// <summary>
    /// Shoot the specified start and target.
    /// </summary>
    /// <param name="chainsHolder">chain objects holder</param>
    /// <param name="start">Start location where the silk is shoot </param>
    /// <param name="target">The target location that the silk finally hangs on</param>
    /// <returns>true if silking succeeeded, false otherwise</returns>
    public bool Shoot(GameObject chainsHolder, Transform start, Transform target, int chainsNumber, Material silkMaterial)
    {
        _savedChainsHolder = chainsHolder;

        Vector2 startPos  = start.position;
        Vector2 targetPos = target.position;
        float   distance  = Vector2.Distance(startPos, targetPos);

        if (distance < 0.1f)
        {
            Debug.LogWarning("too close to shoot a silk");
            return(false);
        }

        _lineRenderer = chainsHolder.GetComponent <LineRenderer> ();
        if (!_lineRenderer)
        {
            _lineRenderer = chainsHolder.AddComponent <LineRenderer> ();
        }

        float chainLength = distance / chainsNumber;

        Debug.Log("chain length: " + chainLength);

        Vector2 chainBoxColliderSize = new Vector2(chainLength, _lineWidth);

        float angle       = Utils.AngleFromX(start.position - target.position);
        float angleRadian = angle * Mathf.Deg2Rad;

        Vector2    chainOffset = new Vector2(chainLength * Mathf.Cos(angleRadian), chainLength * Mathf.Sin(angleRadian));
        Vector2    currentPos  = targetPos + 0.5f * chainOffset;
        Quaternion rotation    = Quaternion.AngleAxis(angle, Vector3.forward);

        // chain objects in reverse order
        for (int i = 0; i < chainsNumber; i++)
        {
            GameObject      obj             = new GameObject("Chain" + i);
            ChainController chainController = obj.AddComponent <ChainController>();
            chainController.SetSilk(this);

            Rigidbody2D rb2D = obj.AddComponent <Rigidbody2D>();
            //rb2D.mass = 1f;

            BoxCollider2D box = obj.AddComponent <BoxCollider2D>();
            box.size = chainBoxColliderSize;

            HingeJoint2D joint = obj.AddComponent <HingeJoint2D>();
            if (i == 0)
            {
                // joint.anchor is always in its local space
                joint.anchor = new Vector2(-0.5f * chainLength, 0);
                // joint.connectedAnchor in world space since not connected to other
                // rigidbody for the first hinge
                joint.connectedAnchor = targetPos;
            }
            else
            {
                // connect to parent rigid body if not the first chain
                joint.connectedBody = _chains[i - 1].GetComponent <Rigidbody2D>();

                // joint.anchor is always in my own local space
                joint.anchor = new Vector2(-0.5f * chainLength, 0);

                // joint.connectedBody now in other object’s local space
                joint.connectedAnchor = new Vector2(0.5f * chainLength, 0);
            }

            obj.transform.SetParent(chainsHolder.transform);
            obj.transform.position   = currentPos;
            obj.transform.rotation   = rotation;
            obj.transform.localScale = Vector3.one;

            _chains.Add(obj);
            currentPos += chainOffset;
        }

        _lineRenderer.SetVertexCount(chainsNumber);
        _lineRenderer.SetWidth(_lineWidth, _lineWidth);
        _lineRenderer.material = silkMaterial;
        for (int i = 0; i < chainsNumber; i++)
        {
            _lineRenderer.SetPosition(i, _chains[i].transform.position);
        }

        _state = State.Completed;

        return(true);
    }
Esempio n. 22
0
        public (IChainStore, BoundedInbox, BoundedInbox, ChainController, ClientId) Setup(int pruneLimit = 100)
        {
            var store = new VolatileChainStore();

            store.BlockPruneLimitDistance = pruneLimit;

            Assert.Equal(OpenBlockStatus.Success,
                         store.TryOpenBlock(CommittedBlockId.GenesisParent, out var openedBlock));
            var id = openedBlock.Alias;

            Assert.NotEqual(BlockAlias.GenesisParent, id);

            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(id, CommittedBlockId.Genesis, out _));
            // C(0)

            Assert.Equal(OpenBlockStatus.Success, store.TryOpenBlock(CommittedBlockId.Genesis, out var cb1));
            Assert.Equal(_1, cb1.Alias);
            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(cb1.Alias, _id_1, out _));
            // C(0) -> C(1)

            Assert.Equal(OpenBlockStatus.Success, store.TryOpenBlock(_id_1, out var cb2));
            Assert.Equal(_2, cb2.Alias);
            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(cb2.Alias, _id_2, out _));
            // C(0) -> C(1) -> C(2)

            // Second child for block 2
            Assert.Equal(OpenBlockStatus.Success, store.TryOpenBlock(_id_1, out var cb3));
            Assert.Equal(_2_1, cb3.Alias);
            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(cb3.Alias, _id_2_1, out _));
            // C(0) -> C(1) -> C(2)
            //             \-> C(2-1)

            // main chain prolonged
            Assert.Equal(OpenBlockStatus.Success, store.TryOpenBlock(_id_2, out var cb4));
            Assert.Equal(_3, cb4.Alias);
            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(cb4.Alias, _id_3, out _));
            // C(0) -> C(1) -> C(2)  -> C(3)
            //             \-> C(2-1)

            // side chain prolonged
            Assert.Equal(OpenBlockStatus.Success, store.TryOpenBlock(_id_2_1, out var cb5));
            // the new assert
            Assert.Equal(_3_1, cb5.Alias);
            // the new assert
            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(cb5.Alias, _id_3_1, out _));
            // C(0) -> C(1) -> C(2)   -> C(3)
            //             \-> C(2-1) -> C(3-1)

            // fork on end of main chain
            Assert.Equal(OpenBlockStatus.Success, store.TryOpenBlock(_id_3, out var cb6));
            Assert.Equal(_4_0, cb6.Alias);
            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(cb6.Alias, _id_4_0, out _));

            Assert.Equal(OpenBlockStatus.Success, store.TryOpenBlock(_id_3, out var cb7));
            Assert.Equal(_4_1, cb7.Alias);
            Assert.Equal(CommitBlockStatus.Success, store.TryCommitBlock(cb7.Alias, _id_4_1, out _));

            // C(0) -> C(1) -> C(2)   -> C(3) -> C(4)
            //             |                 \-> C(4-1)
            //             \-> C(2-1) -> C(3-1)

            var inbox  = new BoundedInbox();
            var outbox = new BoundedInbox();

            var chainController = new ChainController(
                store,
                inbox,
                outbox,
                lineage => { });

            ClientId.Next();
            ClientId.Next();
            ClientId.Next();
            ClientId.Next();
            var c5 = ClientId.Next();

            return(store, inbox, outbox, chainController, c5);
        }
Esempio n. 23
0
        void IPlugin.Init(object context)
        {
            solidIDE   = context as ISolidIDE;
            mainWindow = solidIDE.GetMainWindow();

            // Notebook
            noteBook = new Gtk.Notebook();

            designerDockItem          = mainWindow.DockFrame.AddItem("Designer");
            designerDockItem.Behavior =
                DockItemBehavior.CantAutoHide |
                DockItemBehavior.CantClose |
                DockItemBehavior.NeverFloating;
            designerDockItem.Expand         = true;
            designerDockItem.DrawFrame      = true;
            designerDockItem.Label          = "Designer";
            designerDockItem.Content        = noteBook;
            designerDockItem.DefaultVisible = true;
            designerDockItem.Visible        = true;

            // Menu
            var fileMenuItem = solidIDE.GetMenuItem <Gtk.ImageMenuItem>("File");
            var saveMenuItem = solidIDE.GetMenuItem <Gtk.ImageMenuItem>("File", "Save");

            saveMenuItem.Activated += HandleSaveActivated;
            var viewMenuItem     = solidIDE.GetMenuItem <Gtk.ImageMenuItem>("View");
            var designerMenuItem = solidIDE.GetMenuItem <Gtk.ImageMenuItem>("View", "Designer");

            designerMenuItem.Activated += HandleShowDesignerActivated;

            // Test
            var                   model       = new Model();
            ShapesModel           scene       = new ShapesModel();
            SelectionModel        selection   = new SelectionModel();
            InteractionStateModel interaction = new InteractionStateModel();
            var                   view        = new View <Cairo.Context, Model>();

            controller = new CompositeController <Gdk.Event, Cairo.Context, Model>();

            model.RegisterSubModel <ShapesModel>(scene);
            model.RegisterSubModel <SelectionModel>(selection);
            model.RegisterSubModel <InteractionStateModel>(interaction);
            model.ModelChanged += HandleModelChanged;

            //TODO: Scan plugins for shapes and viewers
            view.Viewers.Add(typeof(Model), new ModelViewer <Cairo.Context>());
            view.Viewers.Add(typeof(ShapesModel), new ShapeModelViewer());
            view.Viewers.Add(typeof(RectangleShape), new RectangleShapeViewer());
            view.Viewers.Add(typeof(EllipseShape), new EllipseShapeViewer());
            view.Viewers.Add(typeof(ArrowShape), new ArrowShapeViewer());
            view.Viewers.Add(typeof(BezierCurvedArrowShape), new BezierCurvedArrowShapeViewer());
            view.Viewers.Add(typeof(TextBlockShape), new TextBlockShapeViewer());
            view.Viewers.Add(typeof(SelectionModel), new SelectionModelViewer());
            view.Viewers.Add(typeof(Glue), new GlueViewer());
            view.Viewers.Add(typeof(InteractionStateModel), new InteractionStateModelViewer());
            view.Viewers.Add(typeof(FocusRectangleShape), new FocusRectangleShapeViewer());

            //scene.Shapes.Add(new RectangleShape(new Rectangle(0,0,100,50)));

            controller.SubControllers.Add(new ShapeSelectionController(model, view));
            chainController = new ChainController <Gdk.Event, Cairo.Context, Model>();
            chainController.SubControllers.Add(new ConnectorDragController(model, view));
            chainController.SubControllers.Add(new ShapeDragController(model, view));
            controller.SubControllers.Add(chainController);

            IDesigner designer = this;

            designer.AddSheet("Sheet", new Sheet <Gdk.Event, Cairo.Context, Model>(model, view, controller));
        }
Esempio n. 24
0
 private void Awake()
 {
     mainCamera = Camera.main;
     chainCtrl  = GetComponent <ChainController>();
 }
Esempio n. 25
0
 void Awake()
 {
     chainController = new ChainController(this);
 }
Esempio n. 26
0
 private void Start()
 {
     auxRb = GameObject.Find("GameObject").GetComponent <Rigidbody>();
     cc    = GameObject.Find("Controller").GetComponent <ChainController>();
 }