наверно как-то так...
Код:
void WaitForTrain(Asset SCN_dir, Train train1, string ObjectName, string SoundName)
{
Message msg;
Sniff(train1, "Trigger", "Stopped", true);
PostMessage(me, "TimerTick", "", 0.1);
wait()
{
on "Trigger", "Stopped", msg:
{
if (msg.src != Router.GetGameObject(ObjectName)
or msg.dst != train1)
{
continue;
}
break;
}
on "TimerTick", "":
{
if (train1.IsStopped())
World.Play2DSound(SCN_dir, SoundName);
PostMessage(me, "TimerTick", "", Math.Rand(5.0, 10.0));
continue;
}
}
msg = null;
Sniff(train1, "Trigger", "Stopped", false);
}
правда не совсем уверен что заработает (wait() может потребовать наличие потока (т.е. не void WaitForTrain а thread void WaitForTrain), а потоки бы обрабатывались не последовательно, а параллельно - следуещее событие прицепки не ждало бы предыдущего)