Example #1
0
    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();
        }
    }
Example #2
0
    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);
            }
        }
    }