diff --git a/.idea/.idea.BoneSync/.idea/.gitignore b/.idea/.idea.BoneSync/.idea/.gitignore
new file mode 100644
index 0000000..481acc1
--- /dev/null
+++ b/.idea/.idea.BoneSync/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/contentModel.xml
+/.idea.BoneSync.iml
+/projectSettingsUpdater.xml
+/modules.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.BoneSync/.idea/encodings.xml b/.idea/.idea.BoneSync/.idea/encodings.xml
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ b/.idea/.idea.BoneSync/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.BoneSync/.idea/indexLayout.xml b/.idea/.idea.BoneSync/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.BoneSync/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.BoneSync/.idea/vcs.xml b/.idea/.idea.BoneSync/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/.idea.BoneSync/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BoneSync/Data/ByteEncoder.cs b/BoneSync/Data/ByteEncoder.cs
index 799a09e..9b8a602 100644
--- a/BoneSync/Data/ByteEncoder.cs
+++ b/BoneSync/Data/ByteEncoder.cs
@@ -209,14 +209,21 @@ namespace BoneSync.Data
{
WriteVector3(value.position);
WriteQuaternion(value.rotation);
- WriteVector3(value.scale);
+ WriteBool(value.scale.HasValue);
+ if (value.scale.HasValue)
+ WriteVector3(value.scale.Value);
}
public SimpleSyncTransform ReadSimpleTransform()
{
Vector3 position = ReadVector3();
Quaternion rotation = ReadQuaternion();
- Vector3 scale = ReadVector3();
+ bool hasScale = ReadBool();
+ Vector3? scale = null;
+ if (hasScale)
+ {
+ scale = ReadVector3();
+ }
return new SimpleSyncTransform()
{
position = position,
diff --git a/BoneSync/Data/Structs.cs b/BoneSync/Data/Structs.cs
index 239c45d..63242e0 100644
--- a/BoneSync/Data/Structs.cs
+++ b/BoneSync/Data/Structs.cs
@@ -10,23 +10,23 @@ namespace BoneSync.Data
public static class SimpleTransformExtensions
{
- public static void ApplySimpleTransform(this UnityEngine.Transform transform, SimpleSyncTransform simpleTransform)
+ public static void ApplySimpleTransform(this Transform transform, SimpleSyncTransform simpleTransform)
{
transform.position = simpleTransform.position;
transform.rotation = simpleTransform.rotation;
- transform.localScale = simpleTransform.scale;
+ if (simpleTransform.scale.HasValue) transform.localScale = simpleTransform.scale.Value;
}
}
public struct SimpleSyncTransform
{
public Vector3 position;
public Quaternion rotation;
- public Vector3 scale;
- public SimpleSyncTransform(UnityEngine.Transform transform)
+ public Vector3? scale;
+ public SimpleSyncTransform(Transform transform, bool withScale = true)
{
position = transform.position;
rotation = transform.rotation;
- scale = transform.localScale;
+ scale = withScale ? transform.localScale : (Vector3?)null;
}
}
}
diff --git a/BoneSync/Networking/LobbyManager/SteamLobbyManager.cs b/BoneSync/Networking/LobbyManager/SteamLobbyManager.cs
index 280cac2..a33694f 100644
--- a/BoneSync/Networking/LobbyManager/SteamLobbyManager.cs
+++ b/BoneSync/Networking/LobbyManager/SteamLobbyManager.cs
@@ -70,10 +70,16 @@ namespace BoneSync.Networking.LobbyManager
get;
private set;
}
+
+ private SteamId[] _steamIds;
public SteamId[] steamIds
{
- get;
- private set;
+ get => _steamIds;
+ private set
+ {
+ _steamIds = value;
+ _peersCache = _steamIds.Select(x => x.Value).ToArray();
+ }
}
public override bool IsConnected()
@@ -81,7 +87,8 @@ namespace BoneSync.Networking.LobbyManager
return _lobbyInstance.Id.IsValid;
}
- public override ulong[] GetPeers() => steamIds.Select(x => x.Value).ToArray();
+ private ulong[] _peersCache = new ulong[0];
+ public override ulong[] GetPeers() => _peersCache;
public override ulong GetLocalId() => SteamClient.SteamId.Value;
public override ulong GetHostId() => _lobbyInstance.Owner.Id.Value;
public override ulong GetLobbyId() => _lobbyInstance.Id.Value;
@@ -90,6 +97,8 @@ namespace BoneSync.Networking.LobbyManager
{
LobbyMembers = _lobbyInstance.Members.ToArray();
steamIds = LobbyMembers.Select(x => x.Id).ToArray();
+
+
if (_lobbyInstance.Id.IsValid)
{
diff --git a/BoneSync/Networking/NetworkMessage.cs b/BoneSync/Networking/NetworkMessage.cs
index ba12d3a..0864e80 100644
--- a/BoneSync/Networking/NetworkMessage.cs
+++ b/BoneSync/Networking/NetworkMessage.cs
@@ -46,10 +46,7 @@ namespace BoneSync.Networking
public class AlwaysExecuteAttribute : Attribute
{
- public AlwaysExecuteAttribute()
- {
-
- }
+ public AlwaysExecuteAttribute() {}
}
public abstract class NetworkMessage
diff --git a/BoneSync/Player/PlayerRig.cs b/BoneSync/Player/PlayerRig.cs
index b95d216..add4306 100644
--- a/BoneSync/Player/PlayerRig.cs
+++ b/BoneSync/Player/PlayerRig.cs
@@ -157,9 +157,9 @@ namespace BoneSync.Player
PlayerSyncInfo playerSyncInfo = new PlayerSyncInfo()
{
rootPos = localRigSkeletonRoot.position,
- headPos = new SimpleSyncTransform(localRigHeadTransform),
- leftHandPos = new SimpleSyncTransform(localRigLeftHandTransform),
- rightHandPos = new SimpleSyncTransform(localRigRightHandTransform),
+ headPos = new SimpleSyncTransform(localRigHeadTransform, false),
+ leftHandPos = new SimpleSyncTransform(localRigLeftHandTransform, false),
+ rightHandPos = new SimpleSyncTransform(localRigRightHandTransform, false),
//leftHandFingerCurl = new SimpleFingerCurl(PlayerScripts.playerLeftHand.fingerCurl),
//rightHandFingerCurl = new SimpleFingerCurl(PlayerScripts.playerRightHand.fingerCurl)
poseIndexLeft = SkeletonHandPatches.poseIndexLeft,
diff --git a/BoneSync/Sync/Components/SyncableBase.cs b/BoneSync/Sync/Components/SyncableBase.cs
index eba89ed..e53c0f6 100644
--- a/BoneSync/Sync/Components/SyncableBase.cs
+++ b/BoneSync/Sync/Components/SyncableBase.cs
@@ -289,6 +289,7 @@ namespace BoneSync.Sync.Components
{
AlignPlug alignPlug = plugs[i];
if (alignPlug.GetSocket()) return true;
+ if (alignPlug._isExitTransition || alignPlug._isEnterTransition) return true; // if plug is in transition, consider it plugged
}
return false;
}
diff --git a/BoneSync/Sync/Components/SyncablePhysics.cs b/BoneSync/Sync/Components/SyncablePhysics.cs
index f5d8ab8..e7169a7 100644
--- a/BoneSync/Sync/Components/SyncablePhysics.cs
+++ b/BoneSync/Sync/Components/SyncablePhysics.cs
@@ -157,11 +157,15 @@ namespace BoneSync.Sync.Components
Rigidbody rb = rigidbodies[i];
rb.angularVelocity = objectSyncTransform.angularVelocity;
rb.velocity = objectSyncTransform.velocity;
+
//rb.MovePosition(objectSyncTransform.transform.position);
//rb.MoveRotation(objectSyncTransform.transform.rotation);
rb.position = objectSyncTransform.transform.position;
rb.rotation = objectSyncTransform.transform.rotation;
- _transforms[i].localScale = objectSyncTransform.transform.scale;
+ if (objectSyncTransform.transform.scale.HasValue)
+ {
+ _transforms[i].localScale = objectSyncTransform.transform.scale.Value;
+ }
//_transforms[i].ApplySimpleTransform(objectSyncTransform.transform);
}
}
diff --git a/BoneSync/Sync/ObjectSync.cs b/BoneSync/Sync/ObjectSync.cs
index 6c6b95b..1242649 100644
--- a/BoneSync/Sync/ObjectSync.cs
+++ b/BoneSync/Sync/ObjectSync.cs
@@ -57,7 +57,7 @@ namespace BoneSync.Sync
spawnInfo = new SpawnPoolableInfo()
{
spawnableTitle = spawnableTitle,
- spawnLocation = new SimpleSyncTransform(syncable.poolee.transform),
+ spawnLocation = new SimpleSyncTransform(syncable.poolee.transform, false),
},
};
}