本文整理汇总了C++中MapEntity::set_layer方法的典型用法代码示例。如果您正苦于以下问题:C++ MapEntity::set_layer方法的具体用法?C++ MapEntity::set_layer怎么用?C++ MapEntity::set_layer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MapEntity
的用法示例。
在下文中一共展示了MapEntity::set_layer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: set_entity_layer
/**
* \brief Changes the layer of an entity.
*
* Only some specific entities should change their layer.
*
* \param entity an entity
* \param layer the new layer
*/
void MapEntities::set_entity_layer(MapEntity& entity, Layer layer) {
Layer old_layer = entity.get_layer();
if (layer != old_layer) {
// update the obstacle list
if (entity.can_be_obstacle() && !entity.has_layer_independent_collisions()) {
obstacle_entities[old_layer].remove(&entity);
obstacle_entities[layer].push_back(&entity);
}
// update the ground observers list
if (entity.is_ground_observer()) {
ground_observers[old_layer].remove(&entity);
ground_observers[layer].push_back(&entity);
}
// update the ground modifiers list
if (entity.is_ground_modifier()) {
ground_modifiers[old_layer].remove(&entity);
ground_modifiers[layer].push_back(&entity);
}
// update the sprites list
if (entity.is_drawn_in_y_order()) {
entities_drawn_y_order[old_layer].remove(&entity);
entities_drawn_y_order[layer].push_back(&entity);
}
else if (entity.can_be_drawn()) {
entities_drawn_first[old_layer].remove(&entity);
entities_drawn_first[layer].push_back(&entity);
}
// update the entity after the lists because this function might be called again
entity.set_layer(layer);
}
}