Quantcast
Channel: Photon Unity Networking (PUN) — Photon Engine
Viewing all articles
Browse latest Browse all 8947

Players after join romm dont see builds

$
0
0
hello all,

Weel clone builds dont create for player after join another room if others players have build, but after connect is good , problem is if anoher join dont go see was build ;( but if are connect is good

Script PhotonPlayerHandlers

public class PhotonPlayerHandlers : Photon.MonoBehaviour
{
#region Private Fields

private PhotonHandlers Handlers;

#endregion Private Fields

#region Private Methods

private void Awake()
{
Handlers = FindObjectOfType<PhotonHandlers>();
}

private void Start()
{
if (!photonView.isMine)
{
if (PhotonNetwork.isMasterClient)
{
if (Handlers != null)
{
photonView.RPC("RequestSyncPlacement", PhotonTargets.AllBuffered);
}
}

return;
}

SimpleCampfire.OnInterracted += OnInterracted;
EbsEvents.OnBuildPrefabPlaced += OnPrefabPlaced;
EbsEvents.OnBuildPrefabDestroyed += OnPrefabDestroyed;
}

private void OnInterracted(EbsPrefab prefab)
{
if (prefab == null)
{
return;
}
}

private void OnPrefabPlaced(EbsPrefab originPrefab, EbsPrefab placedPrefab)
{
if (!photonView.isMine)
{
return;
}

if (placedPrefab == null)
{
return;
}

placedPrefab.EntityInstanceId = placedPrefab.GetInstanceID();

if (Handlers != null)
{
photonView.RPC("RequestNewPlacement", PhotonTargets.OthersBuffered, placedPrefab.Id, placedPrefab.GetInstanceID(), placedPrefab.transform.position, placedPrefab.transform.rotation, false);
}
}

private void OnPrefabDestroyed(EbsPrefab prefab)
{
if (!photonView.isMine)
{
return;
}

if (prefab == null)
{
return;
}

if (Handlers != null)
{
photonView.RPC("RequestNewDestruction", PhotonTargets.OthersBuffered, prefab.EntityInstanceId);
}
}

#endregion Private Methods

#region Public Methods

#region Rpcs

[PunRPC]
public void RequestSyncPlacement(PhotonMessageInfo info)
{
foreach (EntityData PrefabData in Handlers.NetworkEntities)
{
if (PrefabData != null)
{
if (PhotonNetwork.isMasterClient)
{
return;
}

EbsPrefab PrefabTemp = EbsManager.Instance.GetPrefab(PrefabData.Id);

PrefabTemp.EntityInstanceId = PrefabData.InstanceId;

Instantiate(PrefabTemp.gameObject, PrefabData.Position, PrefabData.Rotation);
}
}
}

[PunRPC]
public void RequestNewPlacement(int prefabId, int instanceId, Vector3 position, Quaternion rotation, bool sync, PhotonMessageInfo info)
{
Handlers.AddNetworkEntity(new EntityData(prefabId, instanceId, position, rotation));

EbsPrefab PrefabTemp = EbsManager.Instance.GetPrefab(prefabId);

PrefabTemp.EntityInstanceId = instanceId;

Instantiate(PrefabTemp.gameObject, position, rotation);
}

[PunRPC]
public void RequestNewDestruction(int instanceId, PhotonMessageInfo info)
{
Handlers.RemoveNetworkEntity(instanceId);

foreach (EbsPrefab prefab in FindObjectsOfType<EbsPrefab>())
{
if (prefab != null)
{
if (prefab.EntityInstanceId == instanceId)
{
Destroy(prefab.gameObject);
}
}
}
}

#endregion

#endregion Public Methods
}




- SCRIPT PhotonHandlers


public class PhotonHandlers : Photon.MonoBehaviour
{
public List<EntityData> NetworkEntities = new List<EntityData>();

public void AddNetworkEntity(EntityData data)
{
if (!PhotonNetwork.isMasterClient)
{
return;
}

if (data == null)
{
return;
}

NetworkEntities.Add(new EntityData(data.Id, data.InstanceId, data.Position, data.Rotation));
}

public void RemoveNetworkEntity(int instanceId)
{
if (!PhotonNetwork.isMasterClient)
{
return;
}

foreach (var Entity in NetworkEntities)
{
if (Entity != null)
{
if (Entity.InstanceId == instanceId)
{
NetworkEntities.Remove(Entity);

break;
}
}
}
}

}


tobias Please help me

Viewing all articles
Browse latest Browse all 8947

Trending Articles