Agenda is a 3D Visual Scripting System that is being developed for Inexor.
The word 'Agenda' is latin and stands for 'things that should be done'.
What should be done is not just to implement Agenda but also all the stuff that the editors will come up with!
In this article we will discuss which requirements it must fulfill and what features we expect of it. This does not yet include any technical discussions about how it really works because this is part of Agenda's Architecture.
TODO
TODO
TODO
As mentioned in the [[introduction article|3D Visual Scripting]], a set of nodes and relations is called a graph
The direction of relations with nodes is very important!
For the implementation we are probably going to use the boost graph library.
- Comment Nodes
- Event Nodes
- Timer Nodes
- Sleep Nodes
- Memory Nodes
- Geometric Area Nodes
- Function Nodes
- Operator Nodes
- If Nodes
- Switch Nodes
- While Loop Nodes
- A node can't be connected to itself
- A node can't have more than one outgoing code execution relation
Specific rules will be explained in the responsible node specification.
TODO
TODO
TODO
TODO
TODO
- Node Rendering
- Relation Rendering
- [[Bezier Curve]]
- Visual Debugging
(This could maybe more effectively manifest itself inside a Pad?)
In this article we will define which members (= class variables) and methods (= class functions) a base class for Visual Scripting Nodes should have.
TODO
TODO
vec position;
Because we're implementing a 3D Visual Scripting System, every node needs to have a position vector that describes its position in 3D space.
string comment;
The user should be abled to add a comment to every script node.
TODO
In this article we will define which members (=class variables) and methods a base class for memory nodes should have.
TODO
TODO
TODO
TODO
A comment node does nothing at all. The value of m_comment
will be rendered above the node. It has no imcoming or outgoing relations. Use comments whenever it is neccesary!
std::string m_comment;
none
none
void SetComment(std::string comment);
void ResetComment(void);
- Box Nodes
- Sphere Nodes
- Cylinder Nodes
- Cone Nodes
TODO: Advanced geometric areas? ( Polygon Nodes )
- Boolean Memory Nodes
- Integer Memory Nodes
- Float Memory Nodes
- String Memory Nodes
- Timestamp Memory Nodes
- Vector Memory Nodes
- Memory Arrays
TODO
A sleep node waits sleep_interval
miliseconds before code execution continues.
class CSleepNode : public CScriptNode;
TODO
TODO
unsigned int sleep_interval;
unsigned int sleep_start;
unsigned int sleep_end;
TODO
#define INEXOR_VSCRIPT_MIN_SLEEP_INTERVAL 10
#define INEXOR_VSCRIPT_MAX_SLEEP_INTERVAL 1000 * 60 * 60 * 24 // 1 day