- Home /
Using Morph3D Content Packs with Unity Networking
I'm trying to use Morph3D and content packs for my characters in a multiplayer game. I'm not sure if this is a morph 3d support question or unity networking question.
I have a Morph 3D character prefab that gets instantiated and parented to the player spawned prefab, this works fine, all connected clients are synchronized. To add content packs I issue a [Command] from the script attached to the player prefab, from this [Command] I issue a [ClientRpc] to add the content pack on clients.
Here is the problem: Clients that connect only see the other players content packs that have connected after themselves...all previously connected clients are seen without their content pack. So Client A will see everything synchronized properly but Client B will not see Client A's content pack but will see Client C,D,E etc. Does that make sense? I'm having a hard time wrapping my head around what is happening here. Every client see's their own self with the content pack and I haven't found any runtime errors. Below I pasted the relevant code:
// this is a network behavior attached to the player prefab that network manager spawns:
void Start() { if (!isLocalPlayer) { return; }
CmdAddM3DContentPack();
}
[Command]
void CmdAddM3DContentPack() {
// Instantiate on server:
var M3DPantsPrefab = Resources.Load("BaseModels/M3DMale/ContentPacks/G2MEWPants/G2MEWPants") as GameObject;
var M3DPantsObject = (GameObject)Instantiate(M3DPantsPrefab, transform.position, Quaternion.identity);
NetworkServer.SpawnWithClientAuthority(M3DPantsObject, connectionToClient);
// add on server:
foreach (Transform t in transform) { if (t.name == "Model") { // looks for the child object with the Morph 3D character manager comp.
var charManagerM3D = t.GetComponent<M3DCharacterManager>();
ContentPack cPack = new ContentPack(M3DPantsObject);
charManagerM3D.AddContentPack(cPack);
}}
// add on clients:
RpcAddM3DContentPackOnClients(M3DPantsObject);
}
[ClientRpc]
void RpcAddM3DContentPackOnClients(GameObject contentPack) {
foreach (Transform t in transform) { if (t.name == "Model") {
var charManagerM3D = t.GetComponent<M3DCharacterManager>();
ContentPack cPack = new ContentPack(contentPack);
charManagerM3D.AddContentPack(cPack);
}}
}
Can anyone help me understand why this is happening?
Your answer
Follow this Question
Related Questions
Unity networking tutorial? 6 Answers
Animation & sound over network 1 Answer
Syncing terrain over Network 0 Answers
How do I add gravity to my object, and how do I fix my network problem? 1 Answer
Problems/Errors With Photon Conversion.. [ScreenShot] 0 Answers