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
|
fileFormatVersion: 2
|
||||||
guid: 94d4fd78d9120634ebe0e8717610c412
|
guid: 94d4fd78d9120634ebe0e8717610c412
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
timeCreated: 1505418345
|
|
||||||
licenseType: Free
|
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
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
|
fileFormatVersion: 2
|
||||||
guid: 657b15cb3ec32a24ca80faebf094d0f4
|
guid: ed1a0425bcd8ed24db55f26e9fb193ec
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
timeCreated: 1505418321
|
|
||||||
licenseType: Free
|
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||