public unsafe AnimDataFrame CalculateCurrentGraphic(ushort graphic) { IntPtr address = _file?.StartAddress ?? IntPtr.Zero; if (address != IntPtr.Zero) { IntPtr addr = address + (graphic * 68 + 4 * ((graphic >> 3) + 1)); if (addr.ToInt64() < address.ToInt64() + _file.Length) { ref AnimDataFrame a = ref Unsafe.AsRef <AnimDataFrame>((void *)addr); return(a); } }
public static AnimDataFrame CalculateCurrentGraphic(ushort graphic) { IntPtr address = _file.StartAddress; if (address != IntPtr.Zero) { int addr = graphic * 68 + 4 * ((graphic >> 3) + 1); AnimDataFrame pad = Marshal.PtrToStructure <AnimDataFrame>(address + addr); //if (pad.FrameCount == 0) //{ // pad.FrameCount = 1; // pad.FrameData[0] = 0; //} //if (pad.FrameInterval == 0) // pad.FrameInterval = 1; return(pad); } return(default);