{"id":14960336,"url":"https://github.com/siccity/xnode","last_synced_at":"2025-05-14T13:09:31.618Z","repository":{"id":37286295,"uuid":"103574336","full_name":"Siccity/xNode","owner":"Siccity","description":"Unity Node Editor: Lets you view and edit node graphs inside Unity","archived":false,"fork":false,"pushed_at":"2024-08-26T13:00:57.000Z","size":905,"stargazers_count":3519,"open_issues_count":86,"forks_count":610,"subscribers_count":110,"default_branch":"master","last_synced_at":"2025-05-07T07:39:52.373Z","etag":null,"topics":["editor","framework","graph","node","unity"],"latest_commit_sha":null,"homepage":"","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/Siccity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":"thorbrigsted","open_collective":null,"ko_fi":"thorbrigsted","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2017-09-14T19:42:24.000Z","updated_at":"2025-05-07T03:19:10.000Z","dependencies_parsed_at":"2023-02-10T12:15:34.755Z","dependency_job_id":"0910b82c-f19b-4036-9e41-05313cf09bfb","html_url":"https://github.com/Siccity/xNode","commit_stats":{"total_commits":545,"total_committers":65,"mean_commits":8.384615384615385,"dds":"0.40550458715596327","last_synced_commit":"d6effd70f5574369e3415c423ef3e621ea309564"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siccity%2FxNode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siccity%2FxNode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siccity%2FxNode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siccity%2FxNode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Siccity","download_url":"https://codeload.github.com/Siccity/xNode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254149977,"owners_count":22022852,"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":["editor","framework","graph","node","unity"],"created_at":"2024-09-24T13:22:04.449Z","updated_at":"2025-05-14T13:09:26.597Z","avatar_url":"https://github.com/Siccity.png","language":"C#","readme":"\u003cimg align=\"right\" width=\"100\" height=\"100\" src=\"https://user-images.githubusercontent.com/37786733/41541140-71602302-731a-11e8-9434-79b3a57292b6.png\"\u003e\n\n[![Discord](https://img.shields.io/discord/361769369404964864.svg)](https://discord.gg/qgPrHv4)\n[![GitHub issues](https://img.shields.io/github/issues/Siccity/xNode.svg)](https://github.com/Siccity/xNode/issues)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/Siccity/xNode/master/LICENSE.md)\n[![GitHub Wiki](https://img.shields.io/badge/wiki-available-brightgreen.svg)](https://github.com/Siccity/xNode/wiki)\n[![openupm](https://img.shields.io/npm/v/com.github.siccity.xnode?label=openupm\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.github.siccity.xnode/)\n\n[Downloads](https://github.com/Siccity/xNode/releases) / [Asset Store](http://u3d.as/108S) / [Documentation](https://github.com/Siccity/xNode/wiki)\n\nSupport xNode on [Ko-fi](https://ko-fi.com/Z8Z5DYWA) or [Patreon](https://www.patreon.com/thorbrigsted)\n\nFor full Odin support, consider using [KAJed82's fork](https://github.com/KAJed82/xNode)\n\n### xNode\nThinking of developing a node-based plugin? Then this is for you. You can download it as an archive and unpack to a new unity project, or connect it as git submodule.\n\nxNode is super userfriendly, intuitive and will help you reap the benefits of node graphs in no time.\nWith a minimal footprint, it is ideal as a base for custom state machines, dialogue systems, decision makers etc.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/6402525/53689100-3821e680-3d4e-11e9-8440-e68bd802bfd9.png\"\u003e\n\u003c/p\u003e\n\n### Key features\n* Lightweight in runtime\n* Very little boilerplate code\n* Strong separation of editor and runtime code\n* No runtime reflection (unless you need to edit/build node graphs at runtime. In this case, all reflection is cached.)\n* Does not rely on any 3rd party plugins\n* Custom node inspector code is very similar to regular custom inspector code\n* Supported from Unity 5.3 and up\n\n### Wiki\n* [Getting started](https://github.com/Siccity/xNode/wiki/Getting%20Started) - create your very first node node and graph\n* [Examples branch](https://github.com/Siccity/xNode/tree/examples) - look at other small projects\n\n### Installation\n\u003cdetails\u003e\u003csummary\u003eInstructions\u003c/summary\u003e\n\n### Installing with Unity Package Manager\n***Via Git URL***\n*(Requires Unity version 2018.3.0b7  or above)*\n\nTo install this project as a [Git dependency](https://docs.unity3d.com/Manual/upm-git.html) using the Unity Package Manager,\nadd the following line to your project's `manifest.json`:\n\n```\n\"com.github.siccity.xnode\": \"https://github.com/siccity/xNode.git\"\n```\n\nYou will need to have Git installed and available in your system's PATH.\n\nIf you are using [Assembly Definitions](https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html) in your project, you will need to add `XNode` and/or `XNodeEditor` as Assembly Definition References.\n\n***Via OpenUPM***\n\nThe package is available on the [openupm registry](https://openupm.com). It's recommended to install it via [openupm-cli](https://github.com/openupm/openupm-cli).\n\n```\nopenupm add com.github.siccity.xnode\n```\n\n### Installing with git\n***Via Git Submodule***\n\nTo add xNode as a [submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules) in your existing git project,\nrun the following git command from your project root:\n\n```\ngit submodule add git@github.com:Siccity/xNode.git Assets/Submodules/xNode\n```\n\n### Installing 'the old way'\nIf no source control or package manager is available to you, you can simply copy/paste the source files into your assets folder.\n\n\u003c/details\u003e\n\n### Node example:\n```csharp\n// public classes deriving from Node are registered as nodes for use within a graph\npublic class MathNode : Node {\n    // Adding [Input] or [Output] is all you need to do to register a field as a valid port on your node \n    [Input] public float a;\n    [Input] public float b;\n    // The value of an output node field is not used for anything, but could be used for caching output results\n    [Output] public float result;\n    [Output] public float sum;\n\n    // The value of 'mathType' will be displayed on the node in an editable format, similar to the inspector\n    public MathType mathType = MathType.Add;\n    public enum MathType { Add, Subtract, Multiply, Divide}\n    \n    // GetValue should be overridden to return a value for any specified output port\n    public override object GetValue(NodePort port) {\n\n        // Get new a and b values from input connections. Fallback to field values if input is not connected\n        float a = GetInputValue\u003cfloat\u003e(\"a\", this.a);\n        float b = GetInputValue\u003cfloat\u003e(\"b\", this.b);\n\n        // After you've gotten your input values, you can perform your calculations and return a value\n        if (port.fieldName == \"result\")\n            switch(mathType) {\n                case MathType.Add: default: return a + b;\n                case MathType.Subtract: return a - b;\n                case MathType.Multiply: return a * b;\n                case MathType.Divide: return a / b;\n            }\n        else if (port.fieldName == \"sum\") return a + b;\n        else return 0f;\n    }\n}\n```\n\n### Plugins\nPlugins are repositories that add functionality to xNode\n* [xNodeGroups](https://github.com/Siccity/xNodeGroups): adds resizable groups\n\n### Community\nJoin the [Discord](https://discord.gg/qgPrHv4 \"Join Discord server\") server to leave feedback or get support.\nFeel free to also leave suggestions/requests in the [issues](https://github.com/Siccity/xNode/issues \"Go to Issues\") page.\n","funding_links":["https://patreon.com/thorbrigsted","https://ko-fi.com/thorbrigsted","https://ko-fi.com/Z8Z5DYWA","https://www.patreon.com/thorbrigsted"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiccity%2Fxnode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsiccity%2Fxnode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiccity%2Fxnode/lists"}