{"id":16214468,"url":"https://github.com/grofit/bindingsrx","last_synced_at":"2025-04-10T05:35:47.969Z","repository":{"id":141463073,"uuid":"84300486","full_name":"grofit/bindingsrx","owner":"grofit","description":"A 2 way binding system for unity using unirx","archived":false,"fork":false,"pushed_at":"2024-06-03T19:40:33.000Z","size":7052,"stargazers_count":122,"open_issues_count":2,"forks_count":14,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-24T06:51:53.041Z","etag":null,"topics":["bindings","csharp","rx","unirx","unity","unity-ui","unity3d"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grofit.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-03-08T09:04:21.000Z","updated_at":"2025-03-13T01:42:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"a986d286-407c-41cc-b3d6-faf65e572195","html_url":"https://github.com/grofit/bindingsrx","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grofit%2Fbindingsrx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grofit%2Fbindingsrx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grofit%2Fbindingsrx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grofit%2Fbindingsrx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grofit","download_url":"https://codeload.github.com/grofit/bindingsrx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248164071,"owners_count":21058074,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bindings","csharp","rx","unirx","unity","unity-ui","unity3d"],"created_at":"2024-10-10T11:10:45.164Z","updated_at":"2025-04-10T05:35:47.934Z","avatar_url":"https://github.com/grofit.png","language":"C#","readme":"# BindingsRx\n\nBindingsRx is a one or two way binding system for unity using unirx.\n\n[![Discord](https://img.shields.io/discord/488609938399297536.svg)](https://discord.gg/bS2rnGz)\n\nIt allows you to write more succinct code while showing intent for properties which are bound to other properties, and looks something like this:\n\n```c#\nmyInputField.BindTextTo(someReactiveProperty);\n// Changing myInputField.text will update someReactiveProperty and vice versa\n```\n\n## Dependencies\n\n- [UniRx](https://github.com/neuecc/UniRx) \n\n## Features\n\n- Supports one and two way binding\n- Helpers for creating your own custom bindings\n- Works with `ReactiveProperty\u003cT\u003e` and regular values\n- Supports custom processing on binding via `IFilter` interface\n- Simplifies complex UI interactions, such as binding dropdown options\n\nAs mentioned it works with the unirx `ReactiveProperty\u003cT\u003e` but does not need them, so for example if I had a reactive property I could do:\n\n```c#\nvar myReactiveProperty = new ReactiveProperty\u003cfloat\u003e(1.0f);\nmySlider.BindValueTo(myReactiveProperty);\n```\n\nHowever if I was working with a 3rd party library I may not have ReactiveProperty objects, so for that I would do:\n\n```c#\nvar myNormalValue = 1.0f;\nmySlider.BindValueTo(() =\u003e myNormalValue, x =\u003e myNormalValue = x);\n```\n\nYou can also specify if you want one way or two way bindings explicitly.\n\n```c#\nvar myReactiveProperty = new ReactiveProperty\u003cfloat\u003e(1.0f);\nmySlider.BindValueTo(myReactiveProperty, BindingTypes.OneWay);\n```\n\nHere is an example of making a dropdown in the UI bind to a reactive collection:\n\n```c#\nvar exampleOptions = new ReactiveCollection\u003cstring\u003e();\nexampleOptions.Add(\"Option 1\");\nexampleOptions.Add(\"Option 2\");\nexampleOptions.Add(\"Some Other Option\");\n\nsomeDropdownUIElement.BindOptionsTo(exampleOptions);\n```\n\n\n## Installation\n\nYou can take the unitypackage installation file from the relevent release.\n\n## Quick Start\n\n- Install the above package\n- Install UniRx \n\n## Running Examples\n\nIf you want to run the examples then just clone it and open the unity project in the `src` folder, then run the examples, I will try to add to as the library matures.\n\nThere are also a suite of tests which are being expanded as the project grows.\n\n## Docs\n\nSee the docs folder for more information. (This will grow)\n\n## Other Blurbs\n\nIf you like design patterns and practices then there is also a ECS framework built on unirx which can be found @ [grofit/ecsrx](https://github.com/grofit/ecsrx).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrofit%2Fbindingsrx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrofit%2Fbindingsrx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrofit%2Fbindingsrx/lists"}