示例#1
0
    public static GameObject GenObject(this SkyLayer layer, FezUnitySky parent, int index, float offsetScale = 1f)
    {
        float maxSize    = Mathf.Max(FezUnityLevel.Current.Level.Size.x, FezUnityLevel.Current.Level.Size.y, FezUnityLevel.Current.Level.Size.z);
        float sizeFactor = Mathf.Max(1f, maxSize / 32f);
        float offset     = sizeFactor * (index * 32f + FezManager.Instance.SkySpace) * offsetScale;

        GameObject obj = new GameObject(layer.Name);

        obj.transform.parent        = parent.transform;
        obj.transform.localPosition = new Vector3(
            FezUnityLevel.Current.Level.Size.x / 2f,
            FezUnityLevel.Current.Level.Size.y / 2f + offset / 2f,
            FezUnityLevel.Current.Level.Size.z / 2f
            );
        obj.transform.localScale = new Vector3(
            maxSize + offset,
            maxSize + offset,
            maxSize + offset
            );

        FezUnitySkyLayer fezHolder = obj.AddComponent <FezUnitySkyLayer>();

        fezHolder.Fill(parent, layer, index);
        obj.isStatic = true;

        // Fix Unity / Trixel Engine Z direction conflict
        obj.FezZ();

        return(obj);
    }
示例#2
0
    public void Fill()
    {
        if (!IsInstance)
        {
            return;
        }

        Layers = new GameObject[Sky.Layers.Count];
        int   indexOffset  = 0;
        bool  isOuterSpace = Name == "OUTERSPACE";
        float offsetScale  = FezHelper.IsSkyClouded(Name) ? 2f : 1f;

        for (int i = 0; i < Layers.Length; i++)
        {
            SkyLayer layer = Sky.Layers[i];

            if (!isOuterSpace && layer.Name.StartsWith("OUTERSPACE"))
            {
                // TODO handle space layer separately
                //indexOffset++;
                //continue;
            }

            GameObject layerObj = layer.GenObject(this, Layers.Length - (i - indexOffset), offsetScale);
            layerObj.transform.parent = transform;
            Layers[i] = layerObj;
        }

        if (!skyInstantiated)
        {
            skyInstantiated       = true;
            RenderSettings.skybox = Instantiate(RenderSettings.skybox);
        }
    }
示例#3
0
        private void button_LayerDown_Click(object sender, EventArgs e)
        {
            int iIndex = SelectedLayerIndex;

            if (iIndex < 0 || iIndex >= SkyConfig.Layers.Count - 1)
            {
                return;
            }
            SkyLayer layer = SkyConfig.Layers[iIndex];

            SkyConfig.Layers.RemoveAt(iIndex);
            SkyConfig.Layers.InsertAt(iIndex + 1, layer);
            FillLayerList(iIndex + 1);
            SkyConfig.Update();
        }