Half-fix Lorax culler
This commit is contained in:
parent
91708afb68
commit
3cc381f6e1
@ -23,23 +23,37 @@ public class LoraxCuller : MonoBehaviour {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Update() {
|
private void Update() {
|
||||||
for (int LoraxIndex = 0; LoraxIndex < Loraces.Length; LoraxIndex++) {
|
Hashtable Refs = new Hashtable();
|
||||||
for (int ChunkIndex = 0; ChunkIndex < ChunkKeepAliveTransforms.Count; ChunkIndex++) {
|
|
||||||
GameObject OldChunk = EnabledChunks[LoraxIndex][ChunkIndex];
|
|
||||||
if (OldChunk != null) {
|
|
||||||
OldChunk.SetActive(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int LoraxIndex = 0; LoraxIndex < Loraces.Length; LoraxIndex++) {
|
for (int LoraxIndex = 0; LoraxIndex < Loraces.Length; LoraxIndex++) {
|
||||||
Lorax Lorax = Loraces[LoraxIndex];
|
Lorax Lorax = Loraces[LoraxIndex];
|
||||||
for (int ChunkIndex = 0; ChunkIndex < ChunkKeepAliveTransforms.Count; ChunkIndex++) {
|
for (int ChunkIndex = 0; ChunkIndex < ChunkKeepAliveTransforms.Count; ChunkIndex++) {
|
||||||
Vector3 KeepAlivePosition = ChunkKeepAliveTransforms[ChunkIndex].position;
|
Vector3 KeepAlivePosition = ChunkKeepAliveTransforms[ChunkIndex].position;
|
||||||
GameObject NewChunk = Lorax.GetChunkAt(KeepAlivePosition.x, KeepAlivePosition.z);
|
GameObject NewChunk = Lorax.GetChunkAt(KeepAlivePosition.x, KeepAlivePosition.z);
|
||||||
|
GameObject OldChunk = EnabledChunks[LoraxIndex][ChunkIndex];
|
||||||
NewChunk.SetActive(true);
|
NewChunk.SetActive(true);
|
||||||
|
|
||||||
|
if (Refs.ContainsKey(NewChunk)) {
|
||||||
|
Refs[NewChunk] = (int)Refs[NewChunk] + 1;
|
||||||
|
} else {
|
||||||
|
Refs[NewChunk] = 1;
|
||||||
|
}
|
||||||
|
if (NewChunk != OldChunk && OldChunk != null) {
|
||||||
|
// No longer pointing to OldChunk, remove ref
|
||||||
|
if (Refs.ContainsKey(OldChunk)) {
|
||||||
|
Refs[OldChunk] = (int)Refs[OldChunk] - 1;
|
||||||
|
} else {
|
||||||
|
Refs[OldChunk] = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EnabledChunks[LoraxIndex][ChunkIndex] = NewChunk;
|
EnabledChunks[LoraxIndex][ChunkIndex] = NewChunk;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (GameObject Key in Refs.Keys) {
|
||||||
|
if ((int)Refs[Key] < 0) {
|
||||||
|
Key.SetActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user