Exemple #1
0
 public override void Push(IntPtr L, T data)
 {
     if (newRef == -1)
     {
         LunaNative.luna_pushstruct(L, metaRef, (IntPtr)Unsafe.AsPointer(ref data), buffer.Addr, buffer.Count);
     }
     else
     {
         LunaNative.luna_packstruct(L, newRef, (IntPtr)Unsafe.AsPointer(ref data), buffer.Addr, buffer.Count);
     }
 }
Exemple #2
0
        void _Push(IntPtr L, object data)
        {
            byte *ptr = stackalloc byte[buffer.size];

            Marshal.StructureToPtr(data, (IntPtr)ptr, false);
            if (newRef == -1)
            {
                LunaNative.luna_pushstruct(L, metaRef, (IntPtr)ptr, buffer.Addr, buffer.Count);
            }
            else
            {
                LunaNative.luna_packstruct(L, newRef, (IntPtr)ptr, buffer.Addr, buffer.Count);
            }
        }
Exemple #3
0
        public override void Push(IntPtr L, T data)
        {
            byte *ptr = stackalloc byte[buffer.size];

            buffer.Init(ptr);
            state = State.Writing;
            BuildStruct(ref data);

            if (newRef == -1)
            {
                LunaNative.luna_pushstruct(L, metaRef, (IntPtr)ptr, buffer.Addr, buffer.Count);
            }
            else
            {
                LunaNative.luna_packstruct(L, newRef, (IntPtr)ptr, buffer.Addr, buffer.Count);
            }
        }