bevy
bevy copied to clipboard
Add a method to get a component `Ptr` to `ThinColumn`
What problem does this solve or what need does it fill?
After #12929 we can no longer get Ptr by component ID from the column.
Previously my code to get ticks a component looked like this:
let column = table.get_column(component_id).unwrap_unchecked();
let component = column.get_data_unchecked(entity.table_row());
let ticks = column.get_ticks_unchecked(entity.table_row());
After 0.15 it looks like this:
let component: Ptr<'w> = table
.get_component(component_id, entity.table_row())
.unwrap_unchecked();
let ticks = table
.get_ticks_unchecked(component_id, entity.table_row())
.unwrap_unchecked();
The problem is that new code makes a lookup for a row twice (for component and ticks).
I can get ticks like this:
let column = table.get_column(component_id).unwrap();
let added = column
.get_added_ticks_slice(table.entity_count())
.get_unchecked(entity.table_row().as_usize())
.read();
let changed = column
.get_changed_ticks_slice(table.entity_count())
.get_unchecked(entity.table_row().as_usize())
.read();
let ticks = ComponentTicks { added, changed };
But for component only get_data_slice is exposed which expects T, while I need Ptr.
What solution would you like?
Provide a getter to obtain Ptr.
What alternative(s) have you considered?
A helper method that returns both, component Ptr and ticks.