Example #1
0
    private SgtAtmosphereOuter GetOrAddOuter(int index)
    {
        var outer = default(SgtAtmosphereOuter);

        if (Outers == null)
        {
            Outers = new List <SgtAtmosphereOuter>();
        }

        if (index < Outers.Count)
        {
            outer = Outers[index];

            if (outer == null)
            {
                outer = SgtAtmosphereOuter.Create(this);

                Outers[index] = outer;
            }
        }
        else
        {
            outer = SgtAtmosphereOuter.Create(this);

            Outers.Add(outer);
        }

        return(outer);
    }
Example #2
0
    public void UpdateOuters()
    {
        updateOutersCalled = true;

        var meshCount  = OuterMeshes != null ? OuterMeshes.Count : 0;
        var outerScale = SgtHelper.Divide(OuterRadius, OuterMeshRadius);

        for (var i = 0; i < meshCount; i++)
        {
            var outerMesh = OuterMeshes[i];
            var outer     = GetOrAddOuter(i);

            outer.SetMesh(outerMesh);
            outer.SetMaterial(OuterMaterial);
            outer.SetScale(outerScale);
        }

        // Remove any excess
        if (Outers != null)
        {
            for (var i = Outers.Count - 1; i >= meshCount; i--)
            {
                var outer = Outers[i];

                if (outer != null)
                {
                    SgtAtmosphereOuter.Pool(outer);
                }

                Outers.RemoveAt(i);
            }
        }
    }
Example #3
0
    public static void MarkForDestruction(SgtAtmosphereOuter outer)
    {
        if (outer != null)
        {
            outer.Atmosphere = null;

            outer.gameObject.SetActive(true);
        }
    }
Example #4
0
    public static void Pool(SgtAtmosphereOuter outer)
    {
        if (outer != null)
        {
            outer.Atmosphere = null;

            SgtComponentPool <SgtAtmosphereOuter> .Add(outer);
        }
    }
Example #5
0
    protected virtual void OnDestroy()
    {
        if (Outers != null)
        {
            for (var i = Outers.Count - 1; i >= 0; i--)
            {
                SgtAtmosphereOuter.MarkForDestruction(Outers[i]);
            }
        }

        SgtHelper.Destroy(OuterMaterial);
        SgtHelper.Destroy(InnerMaterial);
    }