protected override void build()
    {
        GameObject dataholder = GameObject.Find("DataHolder");

        data = dataholder.GetComponent <MinaretData> ().getDataStruct();
        placePart <BasePartM> ("base", foundation.center);
        placePart <ShaftPartM>("shaft", foundation.center);
        for (int i = 0; i < data.ringNumber; i++)
        {
            placePart <RingPartM>("ring", foundation.center + Vector3.up * (data.shaftHeight - i * (((data.shaftHeight / 2f) / data.ringNumber))));
        }
        placePart <GalleryPart>("gallery", foundation.center + Vector3.up * data.shaftHeight);
        placePart <TopPartM>("top", foundation.center + Vector3.up * (data.shaftHeight + data.galleryHeight));
    }
    private void generateDataStruct()
    {
        dataStruct               = new MinaretDataStruct();
        dataStruct.baseWidth     = 7;
        dataStruct.baseHeight    = 3;
        dataStruct.shaftHeight   = Randomiser.intBetween(25, 40);
        dataStruct.shaftWidth    = 5;
        dataStruct.ringNumber    = Randomiser.intBetween(1, 3);
        dataStruct.ringWidth     = 6;
        dataStruct.ringHeight    = 1.5f;
        dataStruct.galleryWidth  = 4;
        dataStruct.galleryHeight = 3.5f;
        dataStruct.topWidth      = dataStruct.galleryWidth;
        dataStruct.topHeight     = dataStruct.galleryWidth;
        dataStruct.decorHeight   = 1;
        dataStruct.decorWidth    = 1;

        GameObject[] basePrefabs = GenericUtils.loadAllPrefabs("prefabs/minaret/base_M");
        dataStruct.basePrefab = basePrefabs [Random.Range(0, basePrefabs.Length)];
        GameObject[] shaftPrefabs = GenericUtils.loadAllPrefabs("prefabs/minaret/shaft_M");
        dataStruct.shaftPrefab = shaftPrefabs [Random.Range(0, shaftPrefabs.Length)];
        GameObject[] ringPrefabs = GenericUtils.loadAllPrefabs("prefabs/minaret/ring_M");
        dataStruct.ringPrefab = ringPrefabs [Random.Range(0, ringPrefabs.Length)];
        GameObject[] galleryPrefabs = GenericUtils.loadAllPrefabs("prefabs/minaret/gallery_M");
        dataStruct.galleryPrefab = galleryPrefabs [Random.Range(0, galleryPrefabs.Length)];
        GameObject[] topPrefabs = GenericUtils.loadAllPrefabs("prefabs/minaret/top_M");
        dataStruct.topPrefab = topPrefabs [Random.Range(0, topPrefabs.Length)];
        GameObject[] decorPrefabs = GenericUtils.loadAllPrefabs("prefabs/minaret/decoration_M");
        dataStruct.decorPrefab   = decorPrefabs [Random.Range(0, decorPrefabs.Length)];
        dataStruct.decorSequence = generateDecorSequence();

        ArchData ad = gameObject.GetComponent <ArchData> ();

        dataStruct.columnBase    = ad.getColumnBase();
        dataStruct.columnShaft   = ad.getColumnShaft();
        dataStruct.columnCapital = ad.getColumnCapital();
        dataStruct.arch          = ad.getSimpleArch();
    }
 protected void initData()
 {
     data = GameObject.Find("DataHolder").GetComponent <MinaretData> ().getDataStruct();
 }