Example #1
0
        public static Val PopRelease(this FixedStack <Val> stack)
        {
            var val = stack.Pop();

            val.RefMod(RefOp.DEC | RefOp.USR_DEC);
            return(val);
        }
Example #2
0
 public void Tick(VM.Frame frm, ref int ip, FixedStack <VM.FrameContext> frames, ref BHS status)
 {
     if (first_time)
     {
         status     = BHS.RUNNING;
         time_left  = (float)frm.stack.PopRelease().num;
         first_time = false;
     }
     else
     {
         time_left -= Time.dt;
         if (time_left > 0)
         {
             status = BHS.RUNNING;
         }
     }
 }
Example #3
0
        public static void Assign(this FixedStack <Val> s, VM vm, int idx, Val val)
        {
            var curr = s[idx];

            if (curr != null)
            {
                for (int i = 0; i < curr._refs; ++i)
                {
                    val.RefMod(RefOp.USR_INC);
                    curr.RefMod(RefOp.USR_DEC);
                }
                curr.ValueCopyFrom(val);
            }
            else
            {
                curr = Val.New(vm);
                curr.ValueCopyFrom(val);
                curr.RefMod(RefOp.USR_INC);
                s[idx] = curr;
            }
        }
Example #4
0
 public void Cleanup(VM.Frame frm, ref int ip, FixedStack <VM.FrameContext> frames)
 {
     first_time = true;
 }
Example #5
0
 public static void PushRetain(this FixedStack <Val> stack, Val val)
 {
     val.RefMod(RefOp.INC | RefOp.USR_INC);
     stack.Push(val);
 }