Skip to content

Commit c3fbe41

Browse files
committed
Wire up view-only mode to freepaint tool. Rename "toggle" methods to "set"
1 parent b87e1ea commit c3fbe41

7 files changed

+37
-15
lines changed

Diff for: Assets/Editor/MultiplayerManagerEditor.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public override void OnInspectorGUI()
154154
if (GUILayout.Button(viewButtonLabel))
155155
{
156156
bool newViewState = !currentViewState;
157-
multiplayerManager.ToggleUserViewOnlyMode(newViewState, playerId);
157+
multiplayerManager.SetUserViewOnlyMode(newViewState, playerId);
158158
viewOnlyStates[playerId] = newViewState;
159159
EditorUtility.SetDirty(target);
160160
}

Diff for: Assets/Scripts/GUI/MultiplayerRoomOptionsPopUpWindow.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public void OnMultiplayerRoomOptionsPopUpWindowButtonPressed(MultiplayerRoomOpti
187187
MultiplayerManager.m_Instance.RoomOwnershipTransferToUser(button.playerId);
188188
break;
189189
case SketchControlsScript.GlobalCommands.MultiplayerToggleUserViewEditMode:
190-
MultiplayerManager.m_Instance.ToggleUserViewOnlyMode(button.GetToggleState(), button.playerId);
190+
MultiplayerManager.m_Instance.SetUserViewOnlyMode(button.GetToggleState(), button.playerId);
191191
break;
192192
case SketchControlsScript.GlobalCommands.MultiplayerKickPlayerOut:
193193
MultiplayerManager.m_Instance.KickPlayerOut(button.playerId);
@@ -211,7 +211,7 @@ public void OnMultiplayerRoomOptionsPopUpWindowButtonPressed(MultiplayerRoomOpti
211211
case SketchControlsScript.GlobalCommands.MultiplayerToggleAllUserViewEditMode:
212212
foreach (var remotePlayer in m_RemotePlayers.List)
213213
{
214-
MultiplayerManager.m_Instance.ToggleUserViewOnlyMode(button.GetToggleState(), remotePlayer.PlayerId);
214+
MultiplayerManager.m_Instance.SetUserViewOnlyMode(button.GetToggleState(), remotePlayer.PlayerId);
215215
PlayerListItemPrefab playerComponent = GetGameobjectWithPlayerId(remotePlayer.PlayerId);
216216
if (playerComponent) playerComponent.SetViewOnlyToggleState(button.GetToggleState());
217217
}

Diff for: Assets/Scripts/Multiplayer/MultiplayerInterfaces.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public interface IDataConnectionHandler : IConnectionHandler
4646
Task<bool> RedoCommand(BaseCommand command);
4747
Task<bool> RpcSyncToSharedAnchor(string uuid);
4848
Task<bool> RpcTransferRoomOwnership(int playerId);
49-
Task<bool> RpcToggleUserViewOnlyMode(bool value, int playerId);
49+
Task<bool> RpcSetUserViewOnlyMode(bool value, int playerId);
5050
Task<bool> RpcKickPlayerOut(int playerId);
5151
bool RpcMutePlayer(bool mute, int playerId);
5252

Diff for: Assets/Scripts/Multiplayer/MultiplayerManager.cs

+14-2
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,18 @@ private bool isUserRoomOwner
106106
}
107107
}
108108

109+
private bool _isViewOnly;
110+
public bool IsViewOnly
111+
{
112+
get
113+
{
114+
// Room owners are never in view-only mode
115+
if (isUserRoomOwner) return false;
116+
return _isViewOnly;
117+
}
118+
set => _isViewOnly = value;
119+
}
120+
109121
void Awake()
110122
{
111123
m_Instance = this;
@@ -325,10 +337,10 @@ public void MutePlayerForAll(bool mute, int playerId)
325337
m_Manager.RpcMutePlayer(mute, playerId);
326338
}
327339

328-
public void ToggleUserViewOnlyMode(bool value, int playerId)
340+
public void SetUserViewOnlyMode(bool value, int playerId)
329341
{
330342
if (!isUserRoomOwner) return;
331-
m_Manager.RpcToggleUserViewOnlyMode(value, playerId);
343+
m_Manager.RpcSetUserViewOnlyMode(value, playerId);
332344
}
333345

334346
public void KickPlayerOut(int playerId)

Diff for: Assets/Scripts/Multiplayer/Photon/PhotonManager.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -366,11 +366,11 @@ public async Task<bool> RpcTransferRoomOwnership(int playerId)
366366
return true;
367367
}
368368

369-
public async Task<bool> RpcToggleUserViewOnlyMode(bool value,int playerId)
369+
public async Task<bool> RpcSetUserViewOnlyMode(bool value,int playerId)
370370
{
371371
PlayerRef targetPlayer = PlayerRef.FromEncoded(playerId);
372372
PhotonRPCBatcher.EnqueueRPC(() =>
373-
{ PhotonRPC.RPC_ToggleUserViewOnlyMode(m_Runner,value, targetPlayer); });
373+
{ PhotonRPC.RPC_SetUserViewOnlyMode(m_Runner,value, targetPlayer); });
374374
return true;
375375
}
376376

Diff for: Assets/Scripts/Multiplayer/Photon/PhotonRPC.cs

+4-5
Original file line numberDiff line numberDiff line change
@@ -409,10 +409,9 @@ private static void TransferRoomOwnership()
409409
MultiplayerManager.m_Instance.RoomOwnershipReceived();
410410
}
411411

412-
private static void ToggleDrawing(bool isEnabled)
412+
private static void SetViewOnly(bool isEnabled)
413413
{
414-
PointerManager.m_Instance.EnableLine(isEnabled);
415-
PointerManager.m_Instance.EnablePointerStrokeGeneration(isEnabled);
414+
MultiplayerManager.m_Instance.IsViewOnly = isEnabled;
416415
}
417416

418417
#region RPCS
@@ -583,9 +582,9 @@ public static void RPC_TransferRoomOwnership(NetworkRunner runner, [RpcTarget] P
583582
}
584583

585584
[Rpc(InvokeLocal = false)]
586-
public static void RPC_ToggleUserViewOnlyMode(NetworkRunner runner, bool value, [RpcTarget] PlayerRef targetPlayer)
585+
public static void RPC_SetUserViewOnlyMode(NetworkRunner runner, bool value, [RpcTarget] PlayerRef targetPlayer)
587586
{
588-
ToggleDrawing(value);
587+
SetViewOnly(value);
589588
}
590589

591590
[Rpc(InvokeLocal = false)]

Diff for: Assets/Scripts/Tools/FreePaintTool.cs

+13-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15+
using OpenBrush.Multiplayer;
1516
using UnityEngine;
1617

1718
namespace TiltBrush
@@ -121,8 +122,18 @@ override public void UpdateTool()
121122

122123
m_PaintingActive = !m_EatInput && !m_ToolHidden && (m_brushTrigger || (m_PaintingActive && !m_RevolverActive && m_LazyInputActive && m_BimanualTape && m_wandTrigger));
123124

124-
// Allow API command to override painting mode
125-
m_PaintingActive = m_PaintingActive || ApiManager.Instance.ForcePaintingOn;
125+
// Allow Multiplayer to override painting mode
126+
if (MultiplayerManager.m_Instance.IsViewOnly)
127+
{
128+
m_PaintingActive = false;
129+
}
130+
else
131+
{
132+
// Allow API command to override painting mode
133+
// (ignored if multiplayer is in view-only mode)
134+
m_PaintingActive = m_PaintingActive || ApiManager.Instance.ForcePaintingOn;
135+
}
136+
126137

127138
if (m_BimanualTape)
128139
{

0 commit comments

Comments
 (0)