I’m experimenting with streaming terrain in the Photon multiplayer version of the Bootcamp demo and trying to base it on the local player’s position but I’m stumped trying to figure out how to access it.
Part of my problem is figuring out how to get access to the game instance from outside. Game.cs owns PlayerLocal.cs. _usePhoton is something else I looked at. In any case, I’m finding the code quite confusing, and I’m not really sure the cleanest way to do that.
I am also implementing everything in C#.
I finally figured it out so I’ll post my own answer. Perhaps someone else has a more elegant way to solve this.
First in usePhoton.cs I implemented this function:
public PlayerLocal getLocalPlayer()
if (this.GameInstance == null || this.GameInstance.State != ClientState.Joined)
Then in my new code to get the position:
usePhoton photon = GameObject.Find("_GameManager/UsePhoton").GetComponent<usePhoton>();
PlayerLocal localPlayer = photon ? photon.getLocalPlayer() : null;
if( localPlayer )
Vector3 localPos = localPlayer.transform.position;
This is just the simplest code – I had to poll until I found the local player as it takes several frames for it to initialize. Once set up, I cached the fact that I created my stuff. But I still need the player’s position to stream terrain as I move around. It does the trick but feels sloppy, but at least I’m okay for now.