public override bool Tick()
{
if (EverHadOwners && Owners.Count == 0)
{
KillVocals();
Dead = true;
return false;
}
if (VolumeSet)
{
for (int i = 0; i < Notes.Count; i++)
{
var inst = Notes[i].instance;
inst.Pan = Pan;
inst.Volume = Volume;
}
}
VolumeSet = false;
if (SimpleMode)
{
if (PlaySimple)
{
NoteOn();
PlaySimple = false;
}
if (NoteActive(LastNote)) return true;
else
{
Dead = true;
return false;
}
}
else
{
try {
while (true)
{
var opcode = Src.Data[PC++];
if (opcode > HITInterpreter.Instructions.Length) opcode = 0;
var result = HITInterpreter.Instructions[opcode](this);
if (result == HITResult.HALT) return true;
else if (result == HITResult.KILL)
{
Dead = true;
return false;
}
}
} catch (Exception)
{
return false;
}
}
}