本文整理汇总了C++中logic_step::queue_deletion_of方法的典型用法代码示例。如果您正苦于以下问题:C++ logic_step::queue_deletion_of方法的具体用法?C++ logic_step::queue_deletion_of怎么用?C++ logic_step::queue_deletion_of使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类logic_step
的用法示例。
在下文中一共展示了logic_step::queue_deletion_of方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: advance_cascade_explosions
void demolitions_system::advance_cascade_explosions(const logic_step step) {
auto& cosm = step.get_cosmos();
const auto& clk = cosm.get_clock();
cosm.for_each_having<components::cascade_explosion>(
[&](const auto it) {
const auto& cascade_def = it.template get<invariants::cascade_explosion>();
auto& cascade = it.template get<components::cascade_explosion>();
auto& when_next = cascade.when_next_explosion;
if (clk.now >= when_next) {
auto rng = cosm.get_nontemporal_rng_for(it);
{
const auto next_explosion_in_ms = rng.randval(cascade_def.explosion_interval_ms);
when_next = clk.now;
when_next.step += next_explosion_in_ms / clk.dt.in_milliseconds();
}
{
const auto angle_displacement = rng.randval_h(cascade_def.max_explosion_angle_displacement);
const auto& body = it.template get<components::rigid_body>();
auto vel = body.get_velocity();
vel.rotate(angle_displacement, vec2());
body.set_velocity(vel);
}
auto expl_in = cascade_def.explosion;
expl_in *= rng.randval_vm(1.f, cascade_def.explosion_scale_variation);
expl_in.instantiate(
step,
it.get_logic_transform(),
damage_cause(it)
);
--cascade.explosions_left;
if (0 == cascade.explosions_left) {
step.queue_deletion_of(it, "Cascade explosions exhausted");
}
}
}
);
}