123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using Unity.Netcode;
- using UnityEngine;
- namespace Rokid.MRC
- {
-
- public struct SpacePose : INetworkSerializable, IEquatable<SpacePose>
- {
- public ulong ClientId;
- public Vector3 Position;
- public Quaternion Rotaion;
- public ARCalibrationMode CalibrationMode;
- public SpacePose(ulong clientId, Vector3 pos, Quaternion rot, ARCalibrationMode calibrationMode)
- {
- ClientId = clientId;
- Position = pos;
- Rotaion = rot;
- CalibrationMode = calibrationMode;
- }
- public void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReaderWriter
- {
- serializer.SerializeValue(ref ClientId);
- serializer.SerializeValue(ref Position);
- serializer.SerializeValue(ref Rotaion);
- serializer.SerializeValue(ref CalibrationMode);
- }
- public bool Equals(SpacePose other)
- {
- return ClientId == other.ClientId &&
- Position.Equals(other.Position) &&
- Rotaion.Equals(other.Rotaion) &&
- CalibrationMode == other.CalibrationMode;
- }
- }
-
- public class SpaceCoordinateBehavior : NetworkBehaviorBase
- {
-
- public NetworkList<SpacePose> ClientSpacePoseList;
-
- public NetworkList<SpacePose> ServerSpacePoseList;
- private void Awake()
- {
- ClientSpacePoseList = new NetworkList<SpacePose>();
- ServerSpacePoseList = new NetworkList<SpacePose>();
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [ServerRpc(RequireOwnership = false)]
- public void ReqStartBuildServerRpc(ulong clientID, ARCalibrationMode calibrationMode)
- {
- ServerSpaceCoordController.Instance.ClientStartBuild(clientID, calibrationMode);
- }
-
- [ServerRpc(RequireOwnership = false)]
- public void ReqCancelBuildServerRpc(ulong clientID)
- {
- ServerSpaceCoordController.Instance.ClientCancelBuild();
- }
-
-
- [ServerRpc(RequireOwnership = false)]
- public void ChangeSpaceCoordServerRpc(ulong clientId, SpacePose spacePose)
- {
- ServerSpaceCoordController.Instance.ClientConfirmSpacePose(clientId, spacePose);
- }
-
- public void UpdateClientSpacePose(ulong clientId, SpacePose spacePose)
- {
-
- for(int i = 0;i < ClientSpacePoseList.Count;i++)
- {
- if(ClientSpacePoseList[i].ClientId == spacePose.ClientId)
- {
- ClientSpacePoseList[i] = spacePose;
- return;
- }
- }
-
- ClientSpacePoseList.Add(spacePose);
- }
-
- public void UpdateServerSpacePose(ulong clientId, SpacePose spacePose)
- {
- for(int i = 0;i < ServerSpacePoseList.Count;i++)
- {
- if(ServerSpacePoseList[i].ClientId == spacePose.ClientId)
- {
- ServerSpacePoseList[i] = spacePose;
- return;
- }
- }
- ServerSpacePoseList.Add(spacePose);
- }
- public SpacePose GetServerSpacePose(ulong clientId)
- {
- for(int i = 0;i < ServerSpacePoseList.Count;i++)
- {
- if(ServerSpacePoseList[i].ClientId == clientId)
- {
- return ServerSpacePoseList[i];
- }
- }
- return default(SpacePose);
- }
- }
- }
|