Question by
lukas2005 · Dec 07, 2017 at 07:09 AM ·
networkingplayerserializationsynchronization
How to serialize a List of ContentPacks (from Morph3D) in Photon Unity Networking?
Hello i am making a multiplayer game with custom character creation screen. Morph3D's Assets really helped me out with that. now i just have a issue to be able to synchronize the look of the player over the network i need to serialize the ContentPack and Morph objects (with the morph ones its easy bcuz i just have to send over the localName and value parameters which are a string and a float). This is my script so far:
using MORPH3D;
using MORPH3D.COSTUMING;
using MORPH3D.FOUNDATIONS;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAppearance : Photon.MonoBehaviour {
public Character ch;
private bool update = true;
private M3DCharacterManager character;
// Use this for initialization
void Start () {
character = GetComponentInChildren<M3DCharacterManager>();
}
// Update is called once per frame
void Update () {
if (update && ch != null) {
update = false;
character.RemoveAllContentPacks();
foreach (ContentPack cp in ch.clothes) {
character.AddContentPack(cp);
character.AddContentPackToModel(cp);
}
foreach (Morph m in ch.blendshapes)
{
character.SetBlendshapeValue(m.localName, m.value);
}
}
}
public void UpdateAppearance() {
update = true;
}
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) {
if (stream.isWriting)
{
stream.SendNext(update);
if (update) {
stream.SendNext(ch.gender);
stream.SendNext(ch.clothes.ToArray().Length);
foreach (ContentPack cp in ch.clothes) {
// Here send
}
stream.SendNext(ch.blendshapes);
}
}
else
{
update = (bool)stream.ReceiveNext();
if (ch == null) ch = ScriptableObject.CreateInstance<Character>();
if (update) {
ch.gender = (Gender)stream.ReceiveNext();
ch.clothes = new List<ContentPack>((int)stream.ReceiveNext());
foreach (ContentPack cp in ch.clothes)
{
// Here receive
}
ch.blendshapes = (Morph[])stream.ReceiveNext();
}
}
}
}
if anyone wants to look at my folder structure and/or other classes: https://github.com/lukas2005/VRHackspace/
Comment