Example #1
0
        public void Read(out System.String data)
        {
            System.Diagnostics.Debug.Assert(Reading);
            if (CoreObject.Pointer == IntPtr.Zero)
            {
                data = "";
                return;
            }

            unsafe
            {
                IntPtr strPtr = XndSDK.XNDAttrib_ReadStringA(CoreObject);
                data = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(strPtr);
                XndSDK.XNDAttrib_FreeStringA(strPtr);
            }
        }
Example #2
0
        public bool Read(out EngineNS.RName rname)
        {
            System.Diagnostics.Debug.Assert(Reading);
            rname = EngineNS.RName.EmptyName;
            if (CoreObject.Pointer == IntPtr.Zero)
            {
                return(false);
            }

            byte ver = 0;

            Read(out ver);
            unsafe
            {
                switch (ver)
                {
                case 0:
                {
                    IntPtr strPtr = XndSDK.XNDAttrib_ReadStringA(CoreObject);
                    var    name   = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(strPtr);
                    XndSDK.XNDAttrib_FreeStringA(strPtr);
                    byte type;
                    Read(out type);
                    rname = EngineNS.RName.GetRName(name, (RName.enRNameType)type);
                }
                break;

                case 1:
                {
                    var se = EngineNS.IO.Serializer.TypeDescGenerator.Instance.GetSerializer(typeof(EngineNS.RName));
                    rname = (EngineNS.RName)se.ReadValue(this);
                }
                break;
                }
            }
            return(true);
        }