// Method to marshal from native to managed struct internal unsafe void __MarshalFrom(ref __Native @ref) { this.EffectFilename = (@ref.EffectFilename == IntPtr.Zero) ? null : Marshal.PtrToStringAnsi(@ref.EffectFilename); var defaultsNative = new EffectDefault.__Native[@ref.DefaultCount]; Utilities.Read(@ref.DefaultPointer, defaultsNative, 0, defaultsNative.Length); Defaults = new EffectDefault[defaultsNative.Length]; for (int i = 0; i < Defaults.Length; i++) { Defaults[i] = new EffectDefault(); Defaults[i].__MarshalFrom(ref defaultsNative[i]); } }