Example #1
0
        private void updateWireframeBox(Data.ModelContainer.ObjectChange change)
        {
            var ent = (WireframeBox)change.ModelObject;

            if (change.Change == ModelChange.Added)
            {
                var el = TW.Graphics.AcquireRenderer().CreateLinesElement();

                ent.set(el);

                change.Change = ModelChange.Modified; // also modified :P
            }
            if (change.Change == ModelChange.Modified)
            {
                var el = ent.get <DeferredLinesElement>();
                el.Lines.ClearAllLines();

                if (ent.Visible)
                {
                    el.Lines.AddAABB(new BoundingBox(MathHelper.One * -0.5f, MathHelper.One * 0.5f), ent.WorldMatrix, ent.Color);
                }
            }
            if (change.Change == ModelChange.Removed)
            {
                ent.get <DeferredLinesElement>().Delete();
                ent.set <DeferredLinesElement>(null);
            }
        }
        private void updateEntity(Data.ModelContainer.ObjectChange change)
        {
            var ent = (Entity)change.ModelObject;

            if (change.Change == ModelChange.Added)
            {
                if (ent.get <EntityRenderData>() != null)
                {
                    throw new InvalidOperationException("Invalid change, entity is already in the renderer");
                }

                var renderData = new EntityRenderData(ent, TW.Graphics.AcquireRenderer());
                ent.set <EntityRenderData>(renderData);

                renderData.UpdateRenderData();
            }
            if (change.Change == ModelChange.Modified || change.Change == ModelChange.Added)
            {
                if (ent.get <EntityRenderData>() == null)
                {
                    throw new InvalidOperationException("Invalid change, entity is not in the renderer");
                }
                ent.get <EntityRenderData>().UpdateRenderData();
            }
            if (change.Change == ModelChange.Removed)
            {
                if (ent.get <EntityRenderData>() == null)
                {
                    throw new InvalidOperationException("Invalid change, entity is not in the renderer");
                }
                ent.get <EntityRenderData>().RemoveRenderData();
                ent.set <EntityRenderData>(null);
            }
        }