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); } }