56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
using FishNet.Connection;
|
|
using FishNet.Object;
|
|
using UnityEngine;
|
|
|
|
namespace _PROJECT.Components.Drawing
|
|
{
|
|
public class NetworkDrawingManager : NetworkBehaviour
|
|
{
|
|
private TextureDrawing _textureDrawing;
|
|
|
|
public override void OnStartServer()
|
|
{
|
|
base.OnStartServer();
|
|
_textureDrawing = GetComponent<TextureDrawing>();
|
|
}
|
|
|
|
[ServerRpc(RequireOwnership = false)]
|
|
public void RequestDrawOnTextureRPC(Vector2 textureCoord, Color drawColor, int brushSize, Vector3 angle)
|
|
{
|
|
DrawOnTextureRPC(textureCoord, drawColor, brushSize, angle);
|
|
}
|
|
|
|
public override void OnStartClient()
|
|
{
|
|
base.OnStartClient();
|
|
_textureDrawing = GetComponent<TextureDrawing>();
|
|
}
|
|
|
|
[ServerRpc(RequireOwnership = false)]
|
|
public void RequestCurrentTextureRPC(NetworkConnection conn = null)
|
|
{
|
|
if (_textureDrawing == null)
|
|
return;
|
|
|
|
SendCurrentTextureRPC(conn, _textureDrawing.initialDrawingTexture);
|
|
}
|
|
|
|
[TargetRpc]
|
|
private void SendCurrentTextureRPC(NetworkConnection conn, Texture2D currentTexture)
|
|
{
|
|
if (_textureDrawing == null)
|
|
return;
|
|
|
|
_textureDrawing.SetTempTexture(currentTexture);
|
|
}
|
|
|
|
[ObserversRpc]
|
|
private void DrawOnTextureRPC(Vector2 textureCoord, Color drawColor, int brushSize, Vector3 angle)
|
|
{
|
|
if (_textureDrawing == null)
|
|
return;
|
|
|
|
_textureDrawing.DrawOnTexture(textureCoord, drawColor, brushSize, angle);
|
|
}
|
|
}
|
|
} |