diff --git a/SubdivisionData.cs b/SubdivisionData.cs index 56f1bbe..5dcbe4e 100644 --- a/SubdivisionData.cs +++ b/SubdivisionData.cs @@ -62,6 +62,8 @@ public class SubdivisionData //Only added to quads that could be subdivided ( { public PQ quad; public int subdivisionLevel; + public string cbNameLaterName; + public bool usesCbNameLater = false; public bool subdividable = false; public GameObject newQuad; public bool initialized = false; @@ -71,12 +73,17 @@ public class SubdivisionData //Only added to quads that could be subdivided ( public Material quadMaterial; public bool materialCreated = false; public AdvancedSubdivision subdivisionComponent; - public SubdivisionData(PQ quad, int subdivisionLevel, float subdivisionRadius, bool subdividable) + public SubdivisionData(PQ quad, int subdivisionLevel, float subdivisionRadius, bool subdividable, bool usesCbNameLater, string cbNameLaterName) { this.quad = quad; this.subdivisionLevel = subdivisionLevel; this.subdividable = subdividable; this.subdivisionSearchRadius = subdivisionRadius; + this.usesCbNameLater = usesCbNameLater; + if (this.usesCbNameLater) + { + this.cbNameLaterName = cbNameLaterName; + } quadMaterial = DetermineMaterial(); if (subdividable) @@ -166,7 +173,7 @@ public void Subdivide() } public Material DetermineMaterial() { - ParallaxBody body = ParallaxBodies.parallaxBodies[quad.sphereRoot.name]; + ParallaxBody body = ParallaxBodies.parallaxBodies[usesCbNameLater ? cbNameLaterName : quad.sphereRoot.name]; float lowStart = body._LowStart; float lowEnd = body._LowEnd; diff --git a/SubdivisionMod.cs b/SubdivisionMod.cs index 87cf816..915af02 100644 --- a/SubdivisionMod.cs +++ b/SubdivisionMod.cs @@ -38,9 +38,11 @@ public class PQSMod_Subdivide : PQSMod { public int subdivisionLevel = 1; public float subdivisionRadius = 100; + public string cbNameLaterName; + public bool usesCbNameLater = false; public override void OnQuadBuilt(PQ quad) { - SubdivisionQuadData.quadData.Add(quad, new SubdivisionData(quad, subdivisionLevel, subdivisionRadius, (quad.subdivision == quad.sphereRoot.maxLevel) && (GameSettings.TERRAIN_SHADER_QUALITY == 3))); + SubdivisionQuadData.quadData.Add(quad, new SubdivisionData(quad, subdivisionLevel, subdivisionRadius, (quad.subdivision == quad.sphereRoot.maxLevel) && (GameSettings.TERRAIN_SHADER_QUALITY == 3), usesCbNameLater, cbNameLaterName)); } public override void OnQuadDestroy(PQ quad) { @@ -72,5 +74,15 @@ public NumericParser order get { return Mod.order; } set { Mod.order = int.MaxValue - 2; } } + [ParserTarget("cbNameLaterName", Optional = true)] + public string cbNameLaterName + { + get { return Mod.cbNameLaterName; } + set + { + Mod.cbNameLaterName = value; + Mod.usesCbNameLater = true; + } + } } }