Restructure files
@ -1,40 +0,0 @@
|
||||
## Contributing to xNode
|
||||
💙Thank you for taking the time to contribute💙
|
||||
|
||||
If you haven't already, join our [Discord channel](https://discord.gg/qgPrHv4)!
|
||||
|
||||
## Pull Requests
|
||||
Try to keep your pull requests relevant, neat, and manageable. If you are adding multiple features, split them into separate PRs.
|
||||
These are the main points to follow:
|
||||
|
||||
1) Use formatting which is consistent with the rest of xNode base (see below)
|
||||
2) Keep _one feature_ per PR (see below)
|
||||
3) xNode aims to be compatible with C# 4.x, do not use new language features
|
||||
4) Avoid including irellevant whitespace or formatting changes
|
||||
5) Comment your code
|
||||
6) Spell check your code / comments
|
||||
7) Use concrete types, not *var*
|
||||
8) Use english language
|
||||
|
||||
## New features
|
||||
xNode aims to be simple and extendible, not trying to fix all of Unity's shortcomings.
|
||||
|
||||
Approved changes might be rejected if bundled with rejected changes, so keep PRs as separate as possible.
|
||||
|
||||
If your feature aims to cover something not related to editing nodes, it generally won't be accepted. If in doubt, ask on the Discord channel.
|
||||
|
||||
## Coding conventions
|
||||
Using consistent formatting is key to having a clean git history. Skim through the code and you'll get the hang of it quickly.
|
||||
* Methods, Types and properties PascalCase
|
||||
* Variables camelCase
|
||||
* Public methods XML commented. Params described if not obvious
|
||||
* Explicit usage of brackets when doing multiple math operations on the same line
|
||||
|
||||
## Formatting
|
||||
I use VSCode with the C# FixFormat extension and the following setting overrides:
|
||||
```json
|
||||
"csharpfixformat.style.spaces.beforeParenthesis": false,
|
||||
"csharpfixformat.style.indent.regionIgnored": true
|
||||
```
|
||||
* Open braces on same line as condition
|
||||
* 4 spaces for indentation.
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc1db8b29c76d44648c9c86c2dfade6d
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,9 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94d4fd78d9120634ebe0e8717610c412
|
||||
folderAsset: yes
|
||||
timeCreated: 1505418345
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
0
Scripts/Editor/NodeEditorGUI.cs → Editor/NodeEditorGUI.cs
Executable file → Normal file
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
121
README.md
@ -1,121 +0,0 @@
|
||||
<img align="right" width="100" height="100" src="https://user-images.githubusercontent.com/37786733/41541140-71602302-731a-11e8-9434-79b3a57292b6.png">
|
||||
|
||||
[](https://discord.gg/qgPrHv4)
|
||||
[](https://github.com/Siccity/xNode/issues)
|
||||
[](https://raw.githubusercontent.com/Siccity/xNode/master/LICENSE.md)
|
||||
[](https://github.com/Siccity/xNode/wiki)
|
||||
[](https://openupm.com/packages/com.github.siccity.xnode/)
|
||||
|
||||
[Downloads](https://github.com/Siccity/xNode/releases) / [Asset Store](http://u3d.as/108S) / [Documentation](https://github.com/Siccity/xNode/wiki)
|
||||
|
||||
Support xNode on [Ko-fi](https://ko-fi.com/Z8Z5DYWA) or [Patreon](https://www.patreon.com/thorbrigsted)
|
||||
|
||||
For full Odin support, consider using [KAJed82's fork](https://github.com/KAJed82/xNode)
|
||||
|
||||
### xNode
|
||||
Thinking 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.
|
||||
|
||||
xNode is super userfriendly, intuitive and will help you reap the benefits of node graphs in no time.
|
||||
With a minimal footprint, it is ideal as a base for custom state machines, dialogue systems, decision makers etc.
|
||||
|
||||
<p align="center">
|
||||
<img src="https://user-images.githubusercontent.com/6402525/53689100-3821e680-3d4e-11e9-8440-e68bd802bfd9.png">
|
||||
</p>
|
||||
|
||||
### Key features
|
||||
* Lightweight in runtime
|
||||
* Very little boilerplate code
|
||||
* Strong separation of editor and runtime code
|
||||
* No runtime reflection (unless you need to edit/build node graphs at runtime. In this case, all reflection is cached.)
|
||||
* Does not rely on any 3rd party plugins
|
||||
* Custom node inspector code is very similar to regular custom inspector code
|
||||
* Supported from Unity 5.3 and up
|
||||
|
||||
### Wiki
|
||||
* [Getting started](https://github.com/Siccity/xNode/wiki/Getting%20Started) - create your very first node node and graph
|
||||
* [Examples branch](https://github.com/Siccity/xNode/tree/examples) - look at other small projects
|
||||
|
||||
### Installation
|
||||
<details><summary>Instructions</summary>
|
||||
|
||||
### Installing with Unity Package Manager
|
||||
***Via Git URL***
|
||||
*(Requires Unity version 2018.3.0b7 or above)*
|
||||
|
||||
To install this project as a [Git dependency](https://docs.unity3d.com/Manual/upm-git.html) using the Unity Package Manager,
|
||||
add the following line to your project's `manifest.json`:
|
||||
|
||||
```
|
||||
"com.github.siccity.xnode": "https://github.com/siccity/xNode.git"
|
||||
```
|
||||
|
||||
You will need to have Git installed and available in your system's PATH.
|
||||
|
||||
If 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.
|
||||
|
||||
***Via OpenUPM***
|
||||
|
||||
The 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).
|
||||
|
||||
```
|
||||
openupm add com.github.siccity.xnode
|
||||
```
|
||||
|
||||
### Installing with git
|
||||
***Via Git Submodule***
|
||||
|
||||
To add xNode as a [submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules) in your existing git project,
|
||||
run the following git command from your project root:
|
||||
|
||||
```
|
||||
git submodule add git@github.com:Siccity/xNode.git Assets/Submodules/xNode
|
||||
```
|
||||
|
||||
### Installing 'the old way'
|
||||
If no source control or package manager is available to you, you can simply copy/paste the source files into your assets folder.
|
||||
|
||||
</details>
|
||||
|
||||
### Node example:
|
||||
```csharp
|
||||
// public classes deriving from Node are registered as nodes for use within a graph
|
||||
public class MathNode : Node {
|
||||
// Adding [Input] or [Output] is all you need to do to register a field as a valid port on your node
|
||||
[Input] public float a;
|
||||
[Input] public float b;
|
||||
// The value of an output node field is not used for anything, but could be used for caching output results
|
||||
[Output] public float result;
|
||||
[Output] public float sum;
|
||||
|
||||
// The value of 'mathType' will be displayed on the node in an editable format, similar to the inspector
|
||||
public MathType mathType = MathType.Add;
|
||||
public enum MathType { Add, Subtract, Multiply, Divide}
|
||||
|
||||
// GetValue should be overridden to return a value for any specified output port
|
||||
public override object GetValue(NodePort port) {
|
||||
|
||||
// Get new a and b values from input connections. Fallback to field values if input is not connected
|
||||
float a = GetInputValue<float>("a", this.a);
|
||||
float b = GetInputValue<float>("b", this.b);
|
||||
|
||||
// After you've gotten your input values, you can perform your calculations and return a value
|
||||
if (port.fieldName == "result")
|
||||
switch(mathType) {
|
||||
case MathType.Add: default: return a + b;
|
||||
case MathType.Subtract: return a - b;
|
||||
case MathType.Multiply: return a * b;
|
||||
case MathType.Divide: return a / b;
|
||||
}
|
||||
else if (port.fieldName == "sum") return a + b;
|
||||
else return 0f;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Plugins
|
||||
Plugins are repositories that add functionality to xNode
|
||||
* [xNodeGroups](https://github.com/Siccity/xNodeGroups): adds resizable groups
|
||||
|
||||
### Community
|
||||
Join the [Discord](https://discord.gg/qgPrHv4 "Join Discord server") server to leave feedback or get support.
|
||||
Feel free to also leave suggestions/requests in the [issues](https://github.com/Siccity/xNode/issues "Go to Issues") page.
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 243efae3a6b7941ad8f8e54dcf38ce8c
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,9 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 657b15cb3ec32a24ca80faebf094d0f4
|
||||
guid: ed1a0425bcd8ed24db55f26e9fb193ec
|
||||
folderAsset: yes
|
||||
timeCreated: 1505418321
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||