UUpdate Tutorials

This commit is contained in:
2026-10-25 12:43:53 -07:00
commit cd94bb4ba8
32 changed files with 1077 additions and 0 deletions

7
.gitignore vendored Normal file
View 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
View 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).

View 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);
});
}
}

View 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();
}
});
}
}

View 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();
}
});
}
}

View 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();
}
});
}
}

View 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();
}
});
}
}

View 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() {
}
}

View 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();
}
}

Binary file not shown.

View File

View 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
View File

@ -0,0 +1 @@
https://github.com/lnxnkx3d/lnxnkx/wiki/playground

View 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();
}
}

View 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

Binary file not shown.

4
tanks_nodes/README.md Normal file
View File

@ -0,0 +1,4 @@
- Player1: `Up Left Down Right`, `Space`
- Player2: `W A S D`, `F`
https://github.com/lnxnkx3d/lnxnkx/wiki/tanks

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

Binary file not shown.

4
tanks_script/README.md Normal file
View File

@ -0,0 +1,4 @@
- Player1: `Up Left Down Right`, `Space`
- Player2: `W A S D`, `F`
https://github.com/lnxnkx3d/lnxnkx/wiki/tanks

View 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);
});
}
}

View 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();
}
});
}
}

View 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();
}
});
}
}

View 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();
}
});
}
}

View 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();
}
});
}
}

View 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();
}
}

Binary file not shown.