5 Commits
main ... main

Author SHA1 Message Date
84bab9bbc5 Batch mesh remove object 2026-10-28 01:29:21 -07:00
74997b1e23 P2P onLeft trigger onClose 2026-10-28 01:17:36 -07:00
6454d741d4 P2P fix raw dedup 2026-10-27 23:06:31 -07:00
7d63d60d99 Merge branch 'main' of https://dev.leenkx.com/Onek8/LNXSDK 2026-10-27 22:42:45 -07:00
9f37c2bd8b P2P wire peer event order 2026-10-27 22:42:26 -07:00
4 changed files with 13 additions and 12 deletions

View File

@ -57,10 +57,8 @@ class MeshBatch {
} }
public function removeMesh(m: MeshObject) { public function removeMesh(m: MeshObject) {
var shader = m.materials[0].shader; var b = m.materials.length > 0 ? buckets.get(m.materials[0].shader) : null;
var b = buckets.get(shader); if (b == null || !b.removeMesh(m)) nonBatched.remove(m);
if (b != null) b.removeMesh(m);
else nonBatched.remove(m);
} }
@:access(iron.RenderPath) @:access(iron.RenderPath)
@ -176,8 +174,8 @@ class Bucket {
meshes.push(m); meshes.push(m);
} }
public function removeMesh(m: MeshObject) { public function removeMesh(m: MeshObject): Bool {
meshes.remove(m); return meshes.remove(m);
} }
#if lnx_deinterleaved #if lnx_deinterleaved

View File

@ -94,6 +94,7 @@ class CreateLeenkxNode extends LogicNode {
lnxCn.onLeft = function(address) { lnxCn.onLeft = function(address) {
Leenkx.id.set(net_Url, address); Leenkx.id.set(net_Url, address);
sock.onleft(); sock.onleft();
sock.onclose();
}; };
lnxCn.onServer = function(address) { lnxCn.onServer = function(address) {
Leenkx.id.set(net_Url, address); Leenkx.id.set(net_Url, address);
@ -106,6 +107,7 @@ class CreateLeenkxNode extends LogicNode {
lnxCn.onTimeout = function(address) { lnxCn.onTimeout = function(address) {
Leenkx.id.set(net_Url, address); Leenkx.id.set(net_Url, address);
sock.ontimeout(); sock.ontimeout();
sock.onclose();
}; };
lnxCn.onWireLeft = function(wirecount, wire) { lnxCn.onWireLeft = function(wirecount, wire) {
Leenkx.data.set(net_Url, wirecount); Leenkx.data.set(net_Url, wirecount);

View File

@ -408,9 +408,10 @@ class LeenkxClient {
} }
function onMessageData(identifier:String, message:Bytes, ?senderPk:String):Void { function onMessageData(identifier:String, message:Bytes, ?senderPk:String):Void {
var hash = Crypto.hash(message).sub(0, 16).toHex(); var hash = (message.length > 0 && message.get(0) == 0x00)
? null : Crypto.hash(message).sub(0, 16).toHex();
var t = now(); var t = now();
if (!seen.exists(hash)) { if (hash == null || !seen.exists(hash)) {
if (message.length > 0 && (message.get(0) == 0x00 || message.get(0) == 0x01)) { if (message.length > 0 && (message.get(0) == 0x00 || message.get(0) == 0x01)) {
var isRelayed = message.get(0) == 0x01; var isRelayed = message.get(0) == 0x01;
var offset = 1; var offset = 1;
@ -434,7 +435,7 @@ class LeenkxClient {
var rawPayload = message.sub(offset, message.length - offset); var rawPayload = message.sub(offset, message.length - offset);
var payload = new leenkx.network.Buffer(); var payload = new leenkx.network.Buffer();
payload.writeBytes(rawPayload); payload.writeBytes(rawPayload);
seen.set(hash, t); if (isRelayed) seen.set(hash, t);
var senderAddr = msgSenderPk != null ? pkToAddress.get(msgSenderPk) : null; var senderAddr = msgSenderPk != null ? pkToAddress.get(msgSenderPk) : null;
if (senderAddr == null && msgSenderPk != null && msgSenderPk != "") { if (senderAddr == null && msgSenderPk != null && msgSenderPk != "") {
senderAddr = addressFromPk(msgSenderPk); senderAddr = addressFromPk(msgSenderPk);

View File

@ -116,9 +116,6 @@ class WireTransport implements ITransport {
if (onPeerHandshake != null && remotePk != "") { if (onPeerHandshake != null && remotePk != "") {
onPeerHandshake(remotePk, remoteEk); onPeerHandshake(remotePk, remoteEk);
} }
if (onPeerConnected != null) {
onPeerConnected(peerId, getPeerCount());
}
}; };
wire.onExtended = function(name:String, data:Bytes) { wire.onExtended = function(name:String, data:Bytes) {
if (name != EXT) return; if (name != EXT) return;
@ -132,6 +129,9 @@ class WireTransport implements ITransport {
if (onError != null) onError(msg); if (onError != null) onError(msg);
}; };
wire.start([EXT]); wire.start([EXT]);
if (onPeerConnected != null) {
onPeerConnected(peerId, getPeerCount());
}
} }
function onPeerLeft(peerId:String):Void { function onPeerLeft(peerId:String):Void {