public void Instantiate(GridSpace space) { if (space == null || space.Deploys == null) { return; } space.Blocks = new List <GameObject>(space.Deploys.Count); for (int i = 0; i < space.Deploys.Count; i++) { GridDeploy deploy = space.Deploys[i]; if (deploy == null) { continue; } Transform t = deploy.GO.transform; GameObject obj = Instantiate( deploy.GO, new Vector3(space.X + t.position.x + deploy.X, t.position.y + deploy.Y, space.Y + t.position.z + deploy.Z) , Quaternion.Euler(new Vector3(t.rotation.x + deploy.XRotation, t.rotation.y + deploy.YRotation, t.rotation.z + deploy.ZRotation))) as GameObject; if (deploy.Static) { obj.transform.parent = staticHolder.transform; } else { obj.transform.parent = dynamicHolder.transform; } obj.transform.localScale = new Vector3( deploy.XScale * obj.transform.localScale.x, deploy.YScale * obj.transform.localScale.y, deploy.ZScale * obj.transform.localScale.z); space.Blocks.Add(obj); } //fog of war Vector3 pos = new Vector3(space.X, 0f, space.Y); int height = 0; if (space.Type == GridType.Wall) { height = 0; } BigBoss.Gooey.RecreateFOW(pos, height); //combination, GC combineCounter++; garbageCollectorCounter++; if (garbageCollectorCounter > 300) { System.GC.Collect(); garbageCollectorCounter = 0; } if (combineCounter > 20) { combineCounter = 0; Combine(); } }
protected void Deploy(ThemeElementSpec spec) { if (spec.GenDeploy.Deployed) { return; } spec.GenDeploy.Deployed = true; spec.Reset(); spec.GenDeploy.Element.PreDeployTweaks(spec); GridDeploy deploy = new GridDeploy(spec.GenDeploy); spec.Space.Deploys.Add(deploy); if (spec.Additional.Count == 0) { return; } foreach (var d in spec.Additional.ToList()) { spec.DeployX = d.x; spec.DeployY = d.y; GridSpace space; if (!spec.Grid.TryGetValue(d, out space)) { space = new GridSpace(spec.Type, spec.DeployX, spec.DeployY) { Theme = spec.Theme }; space.Deploys = new List <GridDeploy>(); spec.Grid[d] = space; } spec.Space = space; foreach (GenDeploy d2 in d.val) { spec.GenDeploy = d2; Deploy(spec); } } }