Example #1
0
    public void UpdateModels()
    {
        updateModelsCalled = true;

        var meshCount = Meshes != null ? Meshes.Count : 0;

        for (var i = 0; i < meshCount; i++)
        {
            var mesh  = Meshes[i];
            var model = GetOrAddModel(i);

            model.SetMesh(mesh);
            model.SetMaterial(Material);
        }

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

                Models.RemoveAt(i);
            }
        }
    }
Example #2
0
    private SgtSkysphereModel GetOrAddModel(int index)
    {
        var model = default(SgtSkysphereModel);

        if (Models == null)
        {
            Models = new List <SgtSkysphereModel>();
        }

        if (index < Models.Count)
        {
            model = Models[index];

            if (model == null)
            {
                model = SgtSkysphereModel.Create(this);

                Models[index] = model;
            }
        }
        else
        {
            model = SgtSkysphereModel.Create(this);

            Models.Add(model);
        }

        return(model);
    }
    public static void Pool(SgtSkysphereModel model)
    {
        if (model != null)
        {
            model.Skysphere = null;

            SgtComponentPool<SgtSkysphereModel>.Add(model);
        }
    }
    public static void MarkForDestruction(SgtSkysphereModel model)
    {
        if (model != null)
        {
            model.Skysphere = null;

            model.gameObject.SetActive(true);
        }
    }
Example #5
0
    public static void Pool(SgtSkysphereModel model)
    {
        if (model != null)
        {
            model.Skysphere = null;

            SgtComponentPool <SgtSkysphereModel> .Add(model);
        }
    }
Example #6
0
    public static void MarkForDestruction(SgtSkysphereModel model)
    {
        if (model != null)
        {
            model.Skysphere = null;

            model.gameObject.SetActive(true);
        }
    }
Example #7
0
    protected virtual void OnDestroy()
    {
        SgtHelper.Destroy(material);

        for (var i = models.Count - 1; i >= 0; i--)
        {
            SgtSkysphereModel.MarkForDestruction(models[i]);
        }

        models.Clear();
    }
Example #8
0
    protected virtual void OnDestroy()
    {
        if (Models != null)
        {
            for (var i = Models.Count - 1; i >= 0; i--)
            {
                SgtSkysphereModel.MarkForDestruction(Models[i]);
            }
        }

        SgtHelper.Destroy(Material);
    }
Example #9
0
    private void UpdateModels()
    {
        models.RemoveAll(m => m == null);

        if (Meshes.Count != models.Count)
        {
            SgtHelper.ResizeArrayTo(ref models, Meshes.Count, i => SgtSkysphereModel.Create(this), m => SgtSkysphereModel.Pool(m));
        }

        for (var i = Meshes.Count - 1; i >= 0; i--)
        {
            models[i].ManualUpdate(Meshes[i], material);
        }
    }