UUpdate Tutorials
This commit is contained in:
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
*/build*
|
||||
*/*.blend?
|
||||
*/Sources/Main.hx
|
||||
*/Sources/arm/node/*
|
||||
*/khafile.js
|
||||
_themes.json
|
||||
node_update_failure.*
|
||||
10
README.md
Normal file
10
README.md
Normal file
@ -0,0 +1,10 @@
|
||||
# Lnxnkx Tutorials
|
||||
|
||||
Tutorials to accompany Lnxnkx SDK.
|
||||
|
||||
Note:
|
||||
- Download the package from [releases](https://github.com/lnxnkx3d/lnxnkx_tutorials/releases).
|
||||
- Only use the latest revision of this repository if you are using [lnxnkx-git](https://github.com/lnxnkx3d/lnxnkx/wiki/gitversion).
|
||||
|
||||
Check out the [manual](https://github.com/lnxnkx3d/lnxnkx/wiki).
|
||||
|
||||
30
_tanks_networking/Sources/lnx/FireTrait.hx
Normal file
30
_tanks_networking/Sources/lnx/FireTrait.hx
Normal file
@ -0,0 +1,30 @@
|
||||
package lnx;
|
||||
|
||||
import kha.netsync.Entity;
|
||||
import kha.netsync.Sync;
|
||||
import iron.object.Object;
|
||||
|
||||
class FireTrait extends iron.Trait implements Entity implements Sync {
|
||||
public function new() {
|
||||
super();
|
||||
}
|
||||
|
||||
@synced("all")
|
||||
public function fire() {
|
||||
iron.Scene.active.spawnObject("Bullet", null, function(o:Object) {
|
||||
o.visible = true;
|
||||
object.transform.buildMatrix();
|
||||
o.transform.loc.setFrom(object.transform.world.getLoc());
|
||||
o.transform.buildMatrix();
|
||||
|
||||
var rigidBody = o.getTrait(leenkx.trait.physics.RigidBody);
|
||||
if (rigidBody != null) rigidBody.syncTransform();
|
||||
|
||||
var vec = object.transform.look();
|
||||
vec.mult(7);
|
||||
rigidBody.applyImpulse(vec);
|
||||
|
||||
iron.system.Tween.timer(2, o.remove);
|
||||
});
|
||||
}
|
||||
}
|
||||
29
_tanks_networking/Sources/lnx/Player1Controls.hx
Normal file
29
_tanks_networking/Sources/lnx/Player1Controls.hx
Normal file
@ -0,0 +1,29 @@
|
||||
package lnx;
|
||||
|
||||
class Player1Controls extends iron.Trait {
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
var tank = object.getTrait(TankTrait);
|
||||
|
||||
if (keyboard.down("left")) {
|
||||
tank.turnLeft();
|
||||
}
|
||||
|
||||
if (keyboard.down("right")) {
|
||||
tank.turnRight();
|
||||
}
|
||||
|
||||
if (keyboard.down("up")) {
|
||||
tank.forward();
|
||||
}
|
||||
|
||||
if (keyboard.down("down")) {
|
||||
tank.backward();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
15
_tanks_networking/Sources/lnx/Player1Fire.hx
Normal file
15
_tanks_networking/Sources/lnx/Player1Fire.hx
Normal file
@ -0,0 +1,15 @@
|
||||
package lnx;
|
||||
|
||||
class Player1Fire extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
|
||||
if (keyboard.started("m")) {
|
||||
object.getTrait(FireTrait).fire();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
28
_tanks_networking/Sources/lnx/Player2Controls.hx
Normal file
28
_tanks_networking/Sources/lnx/Player2Controls.hx
Normal file
@ -0,0 +1,28 @@
|
||||
package lnx;
|
||||
|
||||
class Player2Controls extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
var tank = object.getTrait(TankTrait);
|
||||
|
||||
if (keyboard.down("a")) {
|
||||
tank.turnLeft();
|
||||
}
|
||||
|
||||
if (keyboard.down("d")) {
|
||||
tank.turnRight();
|
||||
}
|
||||
|
||||
if (keyboard.down("w")) {
|
||||
tank.forward();
|
||||
}
|
||||
|
||||
if (keyboard.down("s")) {
|
||||
tank.backward();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
15
_tanks_networking/Sources/lnx/Player2Fire.hx
Normal file
15
_tanks_networking/Sources/lnx/Player2Fire.hx
Normal file
@ -0,0 +1,15 @@
|
||||
package lnx;
|
||||
|
||||
class Player2Fire extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
|
||||
if (keyboard.started("f")) {
|
||||
object.getTrait(FireTrait).fire();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
33
_tanks_networking/Sources/lnx/SessionTrait.hx
Normal file
33
_tanks_networking/Sources/lnx/SessionTrait.hx
Normal file
@ -0,0 +1,33 @@
|
||||
package lnx;
|
||||
|
||||
class SessionTrait extends iron.Trait {
|
||||
|
||||
public static var session:kha.netsync.Session = null;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
session = new kha.netsync.Session(2, "localhost", 6789);
|
||||
session.waitForStart(startSession, onSessionRefused, onSessionError, onSessionClosed, resetSession);
|
||||
}
|
||||
|
||||
function startSession() {
|
||||
|
||||
}
|
||||
|
||||
function onSessionRefused() {
|
||||
|
||||
}
|
||||
|
||||
function onSessionError() {
|
||||
|
||||
}
|
||||
|
||||
function onSessionClosed() {
|
||||
|
||||
}
|
||||
|
||||
function resetSession() {
|
||||
|
||||
}
|
||||
}
|
||||
66
_tanks_networking/Sources/lnx/TankTrait.hx
Normal file
66
_tanks_networking/Sources/lnx/TankTrait.hx
Normal file
@ -0,0 +1,66 @@
|
||||
package lnx;
|
||||
|
||||
import kha.netsync.Entity;
|
||||
import kha.netsync.Sync;
|
||||
|
||||
class TankTrait extends iron.Trait implements Entity implements Sync {
|
||||
|
||||
static var q = new iron.math.Quat();
|
||||
var transform:iron.object.Transform;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnInit(function() {
|
||||
transform = object.transform;
|
||||
});
|
||||
|
||||
notifyOnUpdate(register);
|
||||
}
|
||||
|
||||
function register() {
|
||||
if (SessionTrait.session != null) {
|
||||
SessionTrait.session.addEntity(this);
|
||||
removeUpdate(register);
|
||||
}
|
||||
}
|
||||
|
||||
@synced("all")
|
||||
public function turnLeft() {
|
||||
q.fromEuler(0, 0, 0.03);
|
||||
transform.rot.mult(q);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
@synced("all")
|
||||
public function turnRight() {
|
||||
q.fromEuler(0, 0, -0.03);
|
||||
transform.rot.mult(q);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
@synced("all")
|
||||
public function forward() {
|
||||
var vec = transform.look();
|
||||
vec.mult(0.05);
|
||||
transform.loc.add(vec);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
@synced("all")
|
||||
public function backward() {
|
||||
var vec = transform.look();
|
||||
vec.mult(-0.05);
|
||||
transform.loc.add(vec);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
function syncRigidBody() {
|
||||
var rigidBody = object.getTrait(leenkx.trait.physics.RigidBody);
|
||||
if (rigidBody != null) rigidBody.syncTransform();
|
||||
}
|
||||
}
|
||||
BIN
_tanks_networking/tanks_networking.blend
Normal file
BIN
_tanks_networking/tanks_networking.blend
Normal file
Binary file not shown.
0
playground/Bundled/canvas/MyCanvas.files
Normal file
0
playground/Bundled/canvas/MyCanvas.files
Normal file
1
playground/Bundled/canvas/MyCanvas.json
Normal file
1
playground/Bundled/canvas/MyCanvas.json
Normal file
@ -0,0 +1 @@
|
||||
{"name":"untitled","x":0,"y":0,"width":960,"height":540,"elements":[{"id":0,"type":0,"name":"Text","event":"","x":3,"y":3,"width":753,"height":34,"text":"Leenkx Playground (press F to spawn box)","asset":"","color":-1,"anchor":0,"children":[],"visible":true,"rotation":0,"color_text":-1}],"assets":[],"visible":true,"theme":"Default Light"}
|
||||
1
playground/README.md
Normal file
1
playground/README.md
Normal file
@ -0,0 +1 @@
|
||||
https://github.com/lnxnkx3d/lnxnkx/wiki/playground
|
||||
32
playground/Sources/lnx/SpawnBox.hx
Normal file
32
playground/Sources/lnx/SpawnBox.hx
Normal file
@ -0,0 +1,32 @@
|
||||
package lnx;
|
||||
|
||||
import iron.object.Object;
|
||||
import iron.system.Input;
|
||||
import iron.Scene;
|
||||
import leenkx.trait.physics.RigidBody;
|
||||
|
||||
class SpawnBox extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
// We want to get notified every frame
|
||||
notifyOnUpdate(update);
|
||||
}
|
||||
|
||||
function update() {
|
||||
// f key was pressed
|
||||
if (Input.getKeyboard().started("f")) {
|
||||
// Spawn Box object
|
||||
Scene.active.spawnObject("Box", null, boxSpawned);
|
||||
}
|
||||
}
|
||||
|
||||
// Box just got spawned
|
||||
function boxSpawned(o:Object) {
|
||||
// Translate cube to the location of empty object
|
||||
var traitOwner = object;
|
||||
o.transform.loc.setFrom(traitOwner.transform.loc);
|
||||
// Box object has a rigid body trait
|
||||
// Notify physics system to take new location into effect!
|
||||
o.getTrait(RigidBody).syncTransform();
|
||||
}
|
||||
}
|
||||
64
playground/Sources/lnx/node/MoveCylinder.hx
Normal file
64
playground/Sources/lnx/node/MoveCylinder.hx
Normal file
@ -0,0 +1,64 @@
|
||||
package lnx.node;
|
||||
|
||||
@:access(leenkx.logicnode.LogicNode)@:keep class MoveCylinder extends leenkx.logicnode.LogicTree {
|
||||
|
||||
var functionNodes:Map<String, leenkx.logicnode.FunctionNode>;
|
||||
|
||||
var functionOutputNodes:Map<String, leenkx.logicnode.FunctionOutputNode>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
this.functionNodes = new Map();
|
||||
this.functionOutputNodes = new Map();
|
||||
notifyOnAdd(add);
|
||||
}
|
||||
|
||||
override public function add() {
|
||||
var _GetObjectLocation_001 = new leenkx.logicnode.GetLocationNode(this);
|
||||
_GetObjectLocation_001.preallocInputs(2);
|
||||
_GetObjectLocation_001.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _GetObjectLocation_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, false), _GetObjectLocation_001, 0, 1);
|
||||
var _SeparateXYZ = new leenkx.logicnode.SeparateVectorNode(this);
|
||||
_SeparateXYZ.preallocInputs(1);
|
||||
_SeparateXYZ.preallocOutputs(3);
|
||||
leenkx.logicnode.LogicNode.addLink(_GetObjectLocation_001, _SeparateXYZ, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_SeparateXYZ, new leenkx.logicnode.FloatNode(this, 0.0), 0, 0);
|
||||
var _SetObjectLocation_001 = new leenkx.logicnode.SetLocationNode(this);
|
||||
_SetObjectLocation_001.preallocInputs(4);
|
||||
_SetObjectLocation_001.preallocOutputs(1);
|
||||
var _OnUpdate = new leenkx.logicnode.OnUpdateNode(this);
|
||||
_OnUpdate.property0 = "Update";
|
||||
_OnUpdate.preallocInputs(0);
|
||||
_OnUpdate.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(_OnUpdate, _SetObjectLocation_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SetObjectLocation_001, 0, 1);
|
||||
var _Vector = new leenkx.logicnode.VectorNode(this);
|
||||
_Vector.preallocInputs(3);
|
||||
_Vector.preallocOutputs(1);
|
||||
var _Math = new leenkx.logicnode.MathNode(this);
|
||||
_Math.property0 = "Multiply";
|
||||
_Math.property1 = false;
|
||||
_Math.preallocInputs(2);
|
||||
_Math.preallocOutputs(1);
|
||||
var _Math_001 = new leenkx.logicnode.MathNode(this);
|
||||
_Math_001.property0 = "Sine";
|
||||
_Math_001.property1 = false;
|
||||
_Math_001.preallocInputs(1);
|
||||
_Math_001.preallocOutputs(1);
|
||||
var _GetApplicationTime = new leenkx.logicnode.TimeNode(this);
|
||||
_GetApplicationTime.preallocInputs(0);
|
||||
_GetApplicationTime.preallocOutputs(3);
|
||||
leenkx.logicnode.LogicNode.addLink(_GetApplicationTime, new leenkx.logicnode.FloatNode(this, 0.0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_GetApplicationTime, new leenkx.logicnode.FloatNode(this, 0.0), 2, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_GetApplicationTime, _Math_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Math_001, _Math, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 4.0), _Math, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Math, _Vector, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_SeparateXYZ, _Vector, 1, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_SeparateXYZ, _Vector, 2, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Vector, _SetObjectLocation_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, false), _SetObjectLocation_001, 0, 3);
|
||||
leenkx.logicnode.LogicNode.addLink(_SetObjectLocation_001, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
}
|
||||
}
|
||||
BIN
playground/playground.blend
Normal file
BIN
playground/playground.blend
Normal file
Binary file not shown.
4
tanks_nodes/README.md
Normal file
4
tanks_nodes/README.md
Normal file
@ -0,0 +1,4 @@
|
||||
- Player1: `Up Left Down Right`, `Space`
|
||||
- Player2: `W A S D`, `F`
|
||||
|
||||
https://github.com/lnxnkx3d/lnxnkx/wiki/tanks
|
||||
73
tanks_nodes/Sources/lnx/node/FireTree.hx
Normal file
73
tanks_nodes/Sources/lnx/node/FireTree.hx
Normal file
@ -0,0 +1,73 @@
|
||||
package lnx.node;
|
||||
|
||||
@:access(leenkx.logicnode.LogicNode)@:keep class FireTree extends leenkx.logicnode.LogicTree {
|
||||
|
||||
var functionNodes:Map<String, leenkx.logicnode.FunctionNode>;
|
||||
|
||||
var functionOutputNodes:Map<String, leenkx.logicnode.FunctionOutputNode>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
this.functionNodes = new Map();
|
||||
this.functionOutputNodes = new Map();
|
||||
notifyOnAdd(add);
|
||||
}
|
||||
|
||||
override public function add() {
|
||||
var _ApplyImpulse_001 = new leenkx.logicnode.ApplyImpulseNode(this);
|
||||
_ApplyImpulse_001.preallocInputs(4);
|
||||
_ApplyImpulse_001.preallocOutputs(1);
|
||||
var _SpawnObject_001 = new leenkx.logicnode.SpawnObjectNode(this);
|
||||
_SpawnObject_001.preallocInputs(4);
|
||||
_SpawnObject_001.preallocOutputs(2);
|
||||
var _OnEvent = new leenkx.logicnode.OnEventNode(this);
|
||||
_OnEvent.property1 = "init";
|
||||
_OnEvent.preallocInputs(1);
|
||||
_OnEvent.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "fire"), _OnEvent, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_OnEvent, _SpawnObject_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, "Bullet"), _SpawnObject_001, 0, 1);
|
||||
var _GetObjectTransform = new leenkx.logicnode.GetTransformNode(this);
|
||||
_GetObjectTransform.preallocInputs(2);
|
||||
_GetObjectTransform.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _GetObjectTransform, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, false), _GetObjectTransform, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_GetObjectTransform, _SpawnObject_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, true), _SpawnObject_001, 0, 3);
|
||||
leenkx.logicnode.LogicNode.addLink(_SpawnObject_001, _ApplyImpulse_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_SpawnObject_001, _ApplyImpulse_001, 1, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.VectorNode(this, 0.0,7.0,0.0), _ApplyImpulse_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, true), _ApplyImpulse_001, 0, 3);
|
||||
var _ArrayShift_001 = new leenkx.logicnode.ArrayShiftNode(this);
|
||||
_ArrayShift_001.preallocInputs(1);
|
||||
_ArrayShift_001.preallocOutputs(1);
|
||||
var _ArrayObject_001 = new leenkx.logicnode.ArrayObjectNode(this);
|
||||
_ArrayObject_001.preallocInputs(0);
|
||||
_ArrayObject_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_ArrayObject_001, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_ArrayObject_001, _ArrayShift_001, 0, 0);
|
||||
var _Sleep = new leenkx.logicnode.SleepNode(this);
|
||||
_Sleep.preallocInputs(2);
|
||||
_Sleep.preallocOutputs(1);
|
||||
var _ArrayAdd_001 = new leenkx.logicnode.ArrayAddNode(this);
|
||||
_ArrayAdd_001.preallocInputs(6);
|
||||
_ArrayAdd_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_ApplyImpulse_001, _ArrayAdd_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_ArrayObject_001, _ArrayAdd_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, false), _ArrayAdd_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, true), _ArrayAdd_001, 0, 3);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, false), _ArrayAdd_001, 0, 4);
|
||||
leenkx.logicnode.LogicNode.addLink(_SpawnObject_001, _ArrayAdd_001, 1, 5);
|
||||
leenkx.logicnode.LogicNode.addLink(_ArrayAdd_001, new leenkx.logicnode.NullNode(this), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_ArrayAdd_001, _Sleep, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 2.0), _Sleep, 0, 1);
|
||||
var _RemoveObject_001 = new leenkx.logicnode.RemoveObjectNode(this);
|
||||
_RemoveObject_001.preallocInputs(4);
|
||||
_RemoveObject_001.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Sleep, _RemoveObject_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_ArrayShift_001, _RemoveObject_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, true), _RemoveObject_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, true), _RemoveObject_001, 0, 3);
|
||||
leenkx.logicnode.LogicNode.addLink(_RemoveObject_001, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
}
|
||||
}
|
||||
150
tanks_nodes/Sources/lnx/node/Player1Controls.hx
Normal file
150
tanks_nodes/Sources/lnx/node/Player1Controls.hx
Normal file
@ -0,0 +1,150 @@
|
||||
package lnx.node;
|
||||
|
||||
@:access(leenkx.logicnode.LogicNode)@:keep class Player1Controls extends leenkx.logicnode.LogicTree {
|
||||
|
||||
var functionNodes:Map<String, leenkx.logicnode.FunctionNode>;
|
||||
|
||||
var functionOutputNodes:Map<String, leenkx.logicnode.FunctionOutputNode>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
this.functionNodes = new Map();
|
||||
this.functionOutputNodes = new Map();
|
||||
notifyOnAdd(add);
|
||||
}
|
||||
|
||||
override public function add() {
|
||||
var _Gamepad_003 = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad_003.property0 = "down";
|
||||
_Gamepad_003.property1 = "left";
|
||||
_Gamepad_003.preallocInputs(1);
|
||||
_Gamepad_003.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 0), _Gamepad_003, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_003, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _SendEventtoObject_004 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_004.preallocInputs(3);
|
||||
_SendEventtoObject_004.preallocOutputs(1);
|
||||
var _Merge_008 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_008.property0 = "once_per_input";
|
||||
_Merge_008.preallocInputs(2);
|
||||
_Merge_008.preallocOutputs(2);
|
||||
var _Keyboard_002 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_002.property0 = "down";
|
||||
_Keyboard_002.property1 = "right";
|
||||
_Keyboard_002.preallocInputs(0);
|
||||
_Keyboard_002.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_002, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_002, _Merge_008, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_003, _Merge_008, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_008, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_008, _SendEventtoObject_004, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "turn_right"), _SendEventtoObject_004, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_004, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_004, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _Gamepad_001 = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad_001.property0 = "down";
|
||||
_Gamepad_001.property1 = "up";
|
||||
_Gamepad_001.preallocInputs(1);
|
||||
_Gamepad_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 0), _Gamepad_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_001, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _Gamepad_004 = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad_004.property0 = "down";
|
||||
_Gamepad_004.property1 = "right";
|
||||
_Gamepad_004.preallocInputs(1);
|
||||
_Gamepad_004.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 0), _Gamepad_004, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_004, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _SendEventtoObject_002 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_002.preallocInputs(3);
|
||||
_SendEventtoObject_002.preallocOutputs(1);
|
||||
var _Merge_002 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_002.property0 = "once_per_input";
|
||||
_Merge_002.preallocInputs(2);
|
||||
_Merge_002.preallocOutputs(2);
|
||||
var _Keyboard_004 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_004.property0 = "down";
|
||||
_Keyboard_004.property1 = "up";
|
||||
_Keyboard_004.preallocInputs(0);
|
||||
_Keyboard_004.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_004, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_004, _Merge_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_004, _Merge_002, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_002, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_002, _SendEventtoObject_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "turn_left"), _SendEventtoObject_002, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_002, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_002, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _SendEventtoObject = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject.preallocInputs(3);
|
||||
_SendEventtoObject.preallocOutputs(1);
|
||||
var _Merge_003 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_003.property0 = "once_per_input";
|
||||
_Merge_003.preallocInputs(2);
|
||||
_Merge_003.preallocOutputs(2);
|
||||
var _Keyboard_001 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_001.property0 = "down";
|
||||
_Keyboard_001.property1 = "left";
|
||||
_Keyboard_001.preallocInputs(0);
|
||||
_Keyboard_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, _Merge_003, 0, 0);
|
||||
var _Gamepad_002 = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad_002.property0 = "down";
|
||||
_Gamepad_002.property1 = "down";
|
||||
_Gamepad_002.preallocInputs(1);
|
||||
_Gamepad_002.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 0), _Gamepad_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_002, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_002, _Merge_003, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_003, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_003, _SendEventtoObject, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "backward"), _SendEventtoObject, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _SendEventtoObject_001 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_001.preallocInputs(3);
|
||||
_SendEventtoObject_001.preallocOutputs(1);
|
||||
var _Merge_001 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_001.property0 = "once_per_input";
|
||||
_Merge_001.preallocInputs(2);
|
||||
_Merge_001.preallocOutputs(2);
|
||||
var _Keyboard = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard.property0 = "down";
|
||||
_Keyboard.property1 = "back";
|
||||
_Keyboard.preallocInputs(0);
|
||||
_Keyboard.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard, _Merge_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_001, _Merge_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_001, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_001, _SendEventtoObject_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "forward"), _SendEventtoObject_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_001, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _Merge = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge.property0 = "once_per_input";
|
||||
_Merge.preallocInputs(0);
|
||||
_Merge.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
var _Merge_005 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_005.property0 = "once_per_input";
|
||||
_Merge_005.preallocInputs(0);
|
||||
_Merge_005.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_005, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_005, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
var _Merge_006 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_006.property0 = "once_per_input";
|
||||
_Merge_006.preallocInputs(0);
|
||||
_Merge_006.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_006, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_006, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
var _Merge_007 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_007.property0 = "once_per_input";
|
||||
_Merge_007.preallocInputs(0);
|
||||
_Merge_007.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_007, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_007, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
}
|
||||
}
|
||||
51
tanks_nodes/Sources/lnx/node/Player1Fire.hx
Normal file
51
tanks_nodes/Sources/lnx/node/Player1Fire.hx
Normal file
@ -0,0 +1,51 @@
|
||||
package lnx.node;
|
||||
|
||||
@:access(leenkx.logicnode.LogicNode)@:keep class Player1Fire extends leenkx.logicnode.LogicTree {
|
||||
|
||||
var functionNodes:Map<String, leenkx.logicnode.FunctionNode>;
|
||||
|
||||
var functionOutputNodes:Map<String, leenkx.logicnode.FunctionOutputNode>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
this.functionNodes = new Map();
|
||||
this.functionOutputNodes = new Map();
|
||||
notifyOnAdd(add);
|
||||
}
|
||||
|
||||
override public function add() {
|
||||
var _Gamepad = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad.property0 = "started";
|
||||
_Gamepad.property1 = "cross";
|
||||
_Gamepad.preallocInputs(1);
|
||||
_Gamepad.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 0), _Gamepad, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _SendEventtoObject_001 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_001.preallocInputs(3);
|
||||
_SendEventtoObject_001.preallocOutputs(1);
|
||||
var _Merge_002 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_002.property0 = "once_per_input";
|
||||
_Merge_002.preallocInputs(2);
|
||||
_Merge_002.preallocOutputs(2);
|
||||
var _Keyboard_001 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_001.property0 = "started";
|
||||
_Keyboard_001.property1 = "space";
|
||||
_Keyboard_001.preallocInputs(0);
|
||||
_Keyboard_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, _Merge_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad, _Merge_002, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_002, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_002, _SendEventtoObject_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "fire"), _SendEventtoObject_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_001, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _Merge = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge.property0 = "once_per_input";
|
||||
_Merge.preallocInputs(0);
|
||||
_Merge.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
}
|
||||
}
|
||||
150
tanks_nodes/Sources/lnx/node/Player2Controls.hx
Normal file
150
tanks_nodes/Sources/lnx/node/Player2Controls.hx
Normal file
@ -0,0 +1,150 @@
|
||||
package lnx.node;
|
||||
|
||||
@:access(leenkx.logicnode.LogicNode)@:keep class Player2Controls extends leenkx.logicnode.LogicTree {
|
||||
|
||||
var functionNodes:Map<String, leenkx.logicnode.FunctionNode>;
|
||||
|
||||
var functionOutputNodes:Map<String, leenkx.logicnode.FunctionOutputNode>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
this.functionNodes = new Map();
|
||||
this.functionOutputNodes = new Map();
|
||||
notifyOnAdd(add);
|
||||
}
|
||||
|
||||
override public function add() {
|
||||
var _Gamepad = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad.property0 = "down";
|
||||
_Gamepad.property1 = "right";
|
||||
_Gamepad.preallocInputs(1);
|
||||
_Gamepad.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 1), _Gamepad, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _SendEventtoObject_004 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_004.preallocInputs(3);
|
||||
_SendEventtoObject_004.preallocOutputs(1);
|
||||
var _Merge_008 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_008.property0 = "once_per_input";
|
||||
_Merge_008.preallocInputs(2);
|
||||
_Merge_008.preallocOutputs(2);
|
||||
var _Keyboard_002 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_002.property0 = "down";
|
||||
_Keyboard_002.property1 = "a";
|
||||
_Keyboard_002.preallocInputs(0);
|
||||
_Keyboard_002.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_002, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_002, _Merge_008, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad, _Merge_008, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_008, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_008, _SendEventtoObject_004, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "turn_right"), _SendEventtoObject_004, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_004, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_004, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _Gamepad_004 = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad_004.property0 = "down";
|
||||
_Gamepad_004.property1 = "left";
|
||||
_Gamepad_004.preallocInputs(1);
|
||||
_Gamepad_004.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 1), _Gamepad_004, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_004, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _Gamepad_001 = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad_001.property0 = "down";
|
||||
_Gamepad_001.property1 = "up";
|
||||
_Gamepad_001.preallocInputs(1);
|
||||
_Gamepad_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 1), _Gamepad_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_001, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _SendEventtoObject_002 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_002.preallocInputs(3);
|
||||
_SendEventtoObject_002.preallocOutputs(1);
|
||||
var _Merge_002 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_002.property0 = "once_per_input";
|
||||
_Merge_002.preallocInputs(2);
|
||||
_Merge_002.preallocOutputs(2);
|
||||
var _Keyboard = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard.property0 = "down";
|
||||
_Keyboard.property1 = "d";
|
||||
_Keyboard.preallocInputs(0);
|
||||
_Keyboard.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard, _Merge_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_004, _Merge_002, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_002, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_002, _SendEventtoObject_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "turn_left"), _SendEventtoObject_002, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_002, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_002, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _Gamepad_002 = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad_002.property0 = "down";
|
||||
_Gamepad_002.property1 = "down";
|
||||
_Gamepad_002.preallocInputs(1);
|
||||
_Gamepad_002.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 1), _Gamepad_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_002, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
var _SendEventtoObject = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject.preallocInputs(3);
|
||||
_SendEventtoObject.preallocOutputs(1);
|
||||
var _Merge_003 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_003.property0 = "once_per_input";
|
||||
_Merge_003.preallocInputs(2);
|
||||
_Merge_003.preallocOutputs(2);
|
||||
var _Keyboard_001 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_001.property0 = "down";
|
||||
_Keyboard_001.property1 = "w";
|
||||
_Keyboard_001.preallocInputs(0);
|
||||
_Keyboard_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, _Merge_003, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_001, _Merge_003, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_003, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_003, _SendEventtoObject, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "forward"), _SendEventtoObject, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _SendEventtoObject_001 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_001.preallocInputs(3);
|
||||
_SendEventtoObject_001.preallocOutputs(1);
|
||||
var _Merge_001 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_001.property0 = "once_per_input";
|
||||
_Merge_001.preallocInputs(2);
|
||||
_Merge_001.preallocOutputs(2);
|
||||
var _Keyboard_003 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_003.property0 = "down";
|
||||
_Keyboard_003.property1 = "s";
|
||||
_Keyboard_003.preallocInputs(0);
|
||||
_Keyboard_003.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_003, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_003, _Merge_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad_002, _Merge_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_001, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_001, _SendEventtoObject_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "backward"), _SendEventtoObject_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_001, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _Merge = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge.property0 = "once_per_input";
|
||||
_Merge.preallocInputs(0);
|
||||
_Merge.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
var _Merge_005 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_005.property0 = "once_per_input";
|
||||
_Merge_005.preallocInputs(0);
|
||||
_Merge_005.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_005, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_005, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
var _Merge_006 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_006.property0 = "once_per_input";
|
||||
_Merge_006.preallocInputs(0);
|
||||
_Merge_006.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_006, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_006, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
var _Merge_007 = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge_007.property0 = "once_per_input";
|
||||
_Merge_007.preallocInputs(0);
|
||||
_Merge_007.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_007, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge_007, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
}
|
||||
}
|
||||
45
tanks_nodes/Sources/lnx/node/Player2Fire.hx
Normal file
45
tanks_nodes/Sources/lnx/node/Player2Fire.hx
Normal file
@ -0,0 +1,45 @@
|
||||
package lnx.node;
|
||||
|
||||
@:access(leenkx.logicnode.LogicNode)@:keep class Player2Fire extends leenkx.logicnode.LogicTree {
|
||||
|
||||
var functionNodes:Map<String, leenkx.logicnode.FunctionNode>;
|
||||
|
||||
var functionOutputNodes:Map<String, leenkx.logicnode.FunctionOutputNode>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
this.functionNodes = new Map();
|
||||
this.functionOutputNodes = new Map();
|
||||
notifyOnAdd(add);
|
||||
}
|
||||
|
||||
override public function add() {
|
||||
var _SendEventtoObject_001 = new leenkx.logicnode.SendEventNode(this);
|
||||
_SendEventtoObject_001.preallocInputs(3);
|
||||
_SendEventtoObject_001.preallocOutputs(1);
|
||||
var _Merge = new leenkx.logicnode.MergeNode(this);
|
||||
_Merge.property0 = "once_per_input";
|
||||
_Merge.preallocInputs(2);
|
||||
_Merge.preallocOutputs(2);
|
||||
var _Keyboard_001 = new leenkx.logicnode.MergedKeyboardNode(this);
|
||||
_Keyboard_001.property0 = "started";
|
||||
_Keyboard_001.property1 = "f";
|
||||
_Keyboard_001.preallocInputs(0);
|
||||
_Keyboard_001.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Keyboard_001, _Merge, 0, 0);
|
||||
var _Gamepad = new leenkx.logicnode.MergedGamepadNode(this);
|
||||
_Gamepad.property0 = "started";
|
||||
_Gamepad.property1 = "circle";
|
||||
_Gamepad.preallocInputs(1);
|
||||
_Gamepad.preallocOutputs(2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.IntegerNode(this, 1), _Gamepad, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad, new leenkx.logicnode.BooleanNode(this, false), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Gamepad, _Merge, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, new leenkx.logicnode.IntegerNode(this, 0), 1, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_Merge, _SendEventtoObject_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "fire"), _SendEventtoObject_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _SendEventtoObject_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_SendEventtoObject_001, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
}
|
||||
}
|
||||
98
tanks_nodes/Sources/lnx/node/TankTree.hx
Normal file
98
tanks_nodes/Sources/lnx/node/TankTree.hx
Normal file
@ -0,0 +1,98 @@
|
||||
package lnx.node;
|
||||
|
||||
@:access(leenkx.logicnode.LogicNode)@:keep class TankTree extends leenkx.logicnode.LogicTree {
|
||||
|
||||
var functionNodes:Map<String, leenkx.logicnode.FunctionNode>;
|
||||
|
||||
var functionOutputNodes:Map<String, leenkx.logicnode.FunctionOutputNode>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
this.functionNodes = new Map();
|
||||
this.functionOutputNodes = new Map();
|
||||
notifyOnAdd(add);
|
||||
}
|
||||
|
||||
override public function add() {
|
||||
var _TranslateObject = new leenkx.logicnode.TranslateObjectNode(this);
|
||||
_TranslateObject.preallocInputs(4);
|
||||
_TranslateObject.preallocOutputs(1);
|
||||
var _OnEvent_001 = new leenkx.logicnode.OnEventNode(this);
|
||||
_OnEvent_001.property1 = "init";
|
||||
_OnEvent_001.preallocInputs(1);
|
||||
_OnEvent_001.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "backward"), _OnEvent_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_OnEvent_001, _TranslateObject, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _TranslateObject, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.VectorNode(this, 0.0,-0.05000000074505806,0.0), _TranslateObject, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, true), _TranslateObject, 0, 3);
|
||||
leenkx.logicnode.LogicNode.addLink(_TranslateObject, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _TranslateObject_002 = new leenkx.logicnode.TranslateObjectNode(this);
|
||||
_TranslateObject_002.preallocInputs(4);
|
||||
_TranslateObject_002.preallocOutputs(1);
|
||||
var _OnEvent_003 = new leenkx.logicnode.OnEventNode(this);
|
||||
_OnEvent_003.property1 = "init";
|
||||
_OnEvent_003.preallocInputs(1);
|
||||
_OnEvent_003.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "forward"), _OnEvent_003, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_OnEvent_003, _TranslateObject_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _TranslateObject_002, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.VectorNode(this, 0.0,0.05000000074505806,0.0), _TranslateObject_002, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.BooleanNode(this, true), _TranslateObject_002, 0, 3);
|
||||
leenkx.logicnode.LogicNode.addLink(_TranslateObject_002, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _Rotation_001 = new leenkx.logicnode.RotationNode(this);
|
||||
_Rotation_001.property0 = "EulerAngles";
|
||||
_Rotation_001.property1 = "Deg";
|
||||
_Rotation_001.property2 = "XYZ";
|
||||
_Rotation_001.preallocInputs(2);
|
||||
_Rotation_001.preallocOutputs(1);
|
||||
var _Vector_001 = new leenkx.logicnode.VectorNode(this);
|
||||
_Vector_001.preallocInputs(3);
|
||||
_Vector_001.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 0.0), _Vector_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 0.0), _Vector_001, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 0.029999999329447746), _Vector_001, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Vector_001, _Rotation_001, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 0.0), _Rotation_001, 0, 1);
|
||||
var _RotateObject = new leenkx.logicnode.RotateObjectNode(this);
|
||||
_RotateObject.property0 = "Local";
|
||||
_RotateObject.preallocInputs(3);
|
||||
_RotateObject.preallocOutputs(1);
|
||||
var _OnEvent = new leenkx.logicnode.OnEventNode(this);
|
||||
_OnEvent.property1 = "init";
|
||||
_OnEvent.preallocInputs(1);
|
||||
_OnEvent.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "turn_left"), _OnEvent, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_OnEvent, _RotateObject, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _RotateObject, 0, 1);
|
||||
var _Rotation = new leenkx.logicnode.RotationNode(this);
|
||||
_Rotation.property0 = "EulerAngles";
|
||||
_Rotation.property1 = "Deg";
|
||||
_Rotation.property2 = "XYZ";
|
||||
_Rotation.preallocInputs(2);
|
||||
_Rotation.preallocOutputs(1);
|
||||
var _Vector_002 = new leenkx.logicnode.VectorNode(this);
|
||||
_Vector_002.preallocInputs(3);
|
||||
_Vector_002.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 0.0), _Vector_002, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 0.0), _Vector_002, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, -0.029999999329447746), _Vector_002, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_Vector_002, _Rotation, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.FloatNode(this, 0.0), _Rotation, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Rotation, _RotateObject, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_RotateObject, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
var _RotateObject_003 = new leenkx.logicnode.RotateObjectNode(this);
|
||||
_RotateObject_003.property0 = "Local";
|
||||
_RotateObject_003.preallocInputs(3);
|
||||
_RotateObject_003.preallocOutputs(1);
|
||||
var _OnEvent_004 = new leenkx.logicnode.OnEventNode(this);
|
||||
_OnEvent_004.property1 = "init";
|
||||
_OnEvent_004.preallocInputs(1);
|
||||
_OnEvent_004.preallocOutputs(1);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.StringNode(this, "turn_right"), _OnEvent_004, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(_OnEvent_004, _RotateObject_003, 0, 0);
|
||||
leenkx.logicnode.LogicNode.addLink(new leenkx.logicnode.ObjectNode(this, ""), _RotateObject_003, 0, 1);
|
||||
leenkx.logicnode.LogicNode.addLink(_Rotation_001, _RotateObject_003, 0, 2);
|
||||
leenkx.logicnode.LogicNode.addLink(_RotateObject_003, new leenkx.logicnode.NullNode(this), 0, 0);
|
||||
}
|
||||
}
|
||||
BIN
tanks_nodes/tanks_nodes.blend
Normal file
BIN
tanks_nodes/tanks_nodes.blend
Normal file
Binary file not shown.
4
tanks_script/README.md
Normal file
4
tanks_script/README.md
Normal file
@ -0,0 +1,4 @@
|
||||
- Player1: `Up Left Down Right`, `Space`
|
||||
- Player2: `W A S D`, `F`
|
||||
|
||||
https://github.com/lnxnkx3d/lnxnkx/wiki/tanks
|
||||
28
tanks_script/Sources/lnx/FireTrait.hx
Normal file
28
tanks_script/Sources/lnx/FireTrait.hx
Normal file
@ -0,0 +1,28 @@
|
||||
package lnx;
|
||||
|
||||
import leenkx.trait.physics.RigidBody;
|
||||
import iron.object.Object;
|
||||
|
||||
class FireTrait extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
}
|
||||
|
||||
public function fire() {
|
||||
iron.Scene.active.spawnObject("Bullet", null, function(o:Object) {
|
||||
o.visible = true;
|
||||
object.transform.buildMatrix();
|
||||
o.transform.loc.setFrom(object.transform.world.getLoc());
|
||||
o.transform.buildMatrix();
|
||||
|
||||
var rigidBody = o.getTrait(RigidBody);
|
||||
if (rigidBody != null) rigidBody.syncTransform();
|
||||
|
||||
var vec = object.transform.look();
|
||||
vec.mult(7);
|
||||
rigidBody.applyImpulse(vec);
|
||||
|
||||
iron.system.Tween.timer(2, o.remove);
|
||||
});
|
||||
}
|
||||
}
|
||||
30
tanks_script/Sources/lnx/Player1Controls.hx
Normal file
30
tanks_script/Sources/lnx/Player1Controls.hx
Normal file
@ -0,0 +1,30 @@
|
||||
package lnx;
|
||||
|
||||
class Player1Controls extends iron.Trait {
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
var gamepad = iron.system.Input.getGamepad(0);
|
||||
var tank = object.getTrait(TankTrait);
|
||||
|
||||
if (keyboard.down("left") || gamepad.down("left") > 0.0) {
|
||||
tank.turnLeft();
|
||||
}
|
||||
|
||||
if (keyboard.down("right") || gamepad.down("right") > 0.0) {
|
||||
tank.turnRight();
|
||||
}
|
||||
|
||||
if (keyboard.down("up") || gamepad.down("up") > 0.0) {
|
||||
tank.forward();
|
||||
}
|
||||
|
||||
if (keyboard.down("down") || gamepad.down("down") > 0.0) {
|
||||
tank.backward();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
16
tanks_script/Sources/lnx/Player1Fire.hx
Normal file
16
tanks_script/Sources/lnx/Player1Fire.hx
Normal file
@ -0,0 +1,16 @@
|
||||
package lnx;
|
||||
|
||||
class Player1Fire extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
var gamepad = iron.system.Input.getGamepad(0);
|
||||
|
||||
if (keyboard.started("space") || gamepad.started("cross")) {
|
||||
object.getTrait(FireTrait).fire();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
29
tanks_script/Sources/lnx/Player2Controls.hx
Normal file
29
tanks_script/Sources/lnx/Player2Controls.hx
Normal file
@ -0,0 +1,29 @@
|
||||
package lnx;
|
||||
|
||||
class Player2Controls extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
var gamepad = iron.system.Input.getGamepad(1);
|
||||
var tank = object.getTrait(TankTrait);
|
||||
|
||||
if (keyboard.down("a") || gamepad.down("left") > 0.0) {
|
||||
tank.turnLeft();
|
||||
}
|
||||
|
||||
if (keyboard.down("d") || gamepad.down("right") > 0.0) {
|
||||
tank.turnRight();
|
||||
}
|
||||
|
||||
if (keyboard.down("w") || gamepad.down("up") > 0.0) {
|
||||
tank.forward();
|
||||
}
|
||||
|
||||
if (keyboard.down("s") || gamepad.down("down") > 0.0) {
|
||||
tank.backward();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
16
tanks_script/Sources/lnx/Player2Fire.hx
Normal file
16
tanks_script/Sources/lnx/Player2Fire.hx
Normal file
@ -0,0 +1,16 @@
|
||||
package lnx;
|
||||
|
||||
class Player2Fire extends iron.Trait {
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
var keyboard = iron.system.Input.getKeyboard();
|
||||
var gamepad = iron.system.Input.getGamepad(1);
|
||||
|
||||
if (keyboard.started("f") || gamepad.started("cross")) {
|
||||
object.getTrait(FireTrait).fire();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
52
tanks_script/Sources/lnx/TankTrait.hx
Normal file
52
tanks_script/Sources/lnx/TankTrait.hx
Normal file
@ -0,0 +1,52 @@
|
||||
package lnx;
|
||||
|
||||
import leenkx.trait.physics.RigidBody;
|
||||
|
||||
class TankTrait extends iron.Trait {
|
||||
|
||||
static var q = new iron.math.Quat();
|
||||
var transform:iron.object.Transform;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnInit(function() {
|
||||
transform = object.transform;
|
||||
});
|
||||
}
|
||||
|
||||
public function turnLeft() {
|
||||
q.fromEuler(0, 0, 0.03);
|
||||
transform.rot.mult(q);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
public function turnRight() {
|
||||
q.fromEuler(0, 0, -0.03);
|
||||
transform.rot.mult(q);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
public function forward() {
|
||||
var vec = transform.look();
|
||||
vec.mult(0.05);
|
||||
transform.loc.add(vec);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
public function backward() {
|
||||
var vec = transform.look();
|
||||
vec.mult(-0.05);
|
||||
transform.loc.add(vec);
|
||||
transform.buildMatrix();
|
||||
syncRigidBody();
|
||||
}
|
||||
|
||||
function syncRigidBody() {
|
||||
var rigidBody = object.getTrait(RigidBody);
|
||||
if (rigidBody != null) rigidBody.syncTransform();
|
||||
}
|
||||
}
|
||||
BIN
tanks_script/tanks_script.blend
Normal file
BIN
tanks_script/tanks_script.blend
Normal file
Binary file not shown.
Reference in New Issue
Block a user