Browse Source

minor fix: ensure all refs saved in __uid order

ncannasse 8 years ago
parent
commit
389c3e2d16
2 changed files with 7 additions and 4 deletions
  1. 4 3
      hxd/net/Macros.hx
  2. 3 1
      hxd/net/NetworkHost.hx

+ 4 - 3
hxd/net/Macros.hx

@@ -526,7 +526,7 @@ class Macros {
 				meta : noCompletion,
 				kind : FVar(macro : Int, macro @:privateAccess hxd.net.Serializer.allocUID()),
 			});
-	
+
 		var clName = StringTools.endsWith(cl.module,"."+cl.name) ? cl.module.split(".") : [cl.name];
 		fields.push({
 			name : "__clid",
@@ -1035,8 +1035,9 @@ class Macros {
 						ret : ftype.t,
 					}),
 				});
-			flushExpr.push(macro if( b & (1 << $v{ bitID } ) != 0 ) hxd.net.Macros.serializeValue(ctx, this.$fname));
-			syncExpr.push(macro if( __bits & (1 << $v { bitID } ) != 0 ) hxd.net.Macros.unserializeValue(ctx, this.$fname));
+			var fexpr = { expr : EField({ expr : EConst(CIdent("this")), pos : pos }, fname), pos : pos };
+			flushExpr.push(macro if( b & (1 << $v{ bitID } ) != 0 ) hxd.net.Macros.serializeValue(ctx, $fexpr));
+			syncExpr.push(macro if( __bits & (1 << $v { bitID } ) != 0 ) hxd.net.Macros.unserializeValue(ctx, $fexpr));
 
 			var prop = "networkProp" + fname.charAt(0).toUpperCase() + fname.substr(1);
 			fields.push({

+ 3 - 1
hxd/net/NetworkHost.hx

@@ -196,7 +196,9 @@ class NetworkHost {
 	public function saveState() {
 		var s = new hxd.net.Serializer();
 		s.beginSave();
-		for( r in ctx.refs )
+		var refs = [for( r in ctx.refs ) r];
+		refs.sort(sortByUID);
+		for( r in refs )
 			if( !s.refs.exists(r.__uid) )
 				s.addAnyRef(r);
 		s.addAnyRef(null);