␉␉␉␉␉List<EffectParameter> memList = new List<EffectParameter>();␊ |
␉␉␉␉␉unsafe␊ |
␉␉␉␉␉{␊ |
␉␉␉␉␉␉MojoShader.MOJOSHADER_symbolStructMember* mem;␊ |
␉␉␉␉␉␉MojoShader.MOJOSHADER_symbolStructMember* mem = (MojoShader.MOJOSHADER_symbolStructMember*) param.value.type.members;␊ |
␉␉␉␉␉␉IntPtr curOffset = IntPtr.Zero;␊ |
␉␉␉␉␉␉for (int j = 0; j < param.value.type.member_count; j += 1)␊ |
␉␉␉␉␉␉{␊ |
␉␉␉␉␉␉␉mem = (MojoShader.MOJOSHADER_symbolStructMember*) param.value.type.members;␊ |
␉␉␉␉␉␉␉memList.Add(new EffectParameter(␊ |
␉␉␉␉␉␉␉␉Marshal.PtrToStringAnsi(mem->name),␊ |
␉␉␉␉␉␉␉␉Marshal.PtrToStringAnsi(mem[j].name),␊ |
␉␉␉␉␉␉␉␉null,␊ |
␉␉␉␉␉␉␉␉(int) mem->info.rows,␊ |
␉␉␉␉␉␉␉␉(int) mem->info.columns,␊ |
␉␉␉␉␉␉␉␉(int) mem->info.elements,␊ |
␉␉␉␉␉␉␉␉(int) mem[j].info.rows,␊ |
␉␉␉␉␉␉␉␉(int) mem[j].info.columns,␊ |
␉␉␉␉␉␉␉␉(int) mem[j].info.elements,␊ |
␉␉␉␉␉␉␉␉XNAClass[(int) param.value.type.parameter_class],␊ |
␉␉␉␉␉␉␉␉XNAType[(int) param.value.type.parameter_type],␊ |
␉␉␉␉␉␉␉␉null, // FIXME: Nested structs! -flibit␊ |
␉␉␉␉␉␉␉␉null,␊ |
␉␉␉␉␉␉␉␉curOffset␊ |
␉␉␉␉␉␉␉));␊ |
␉␉␉␉␉␉␉uint memSize = mem->info.rows + mem->info.columns;␊ |
␉␉␉␉␉␉␉if (mem->info.elements > 0)␊ |
␉␉␉␉␉␉␉uint memSize = mem[j].info.rows + mem[j].info.columns;␊ |
␉␉␉␉␉␉␉if (mem[j].info.elements > 0)␊ |
␉␉␉␉␉␉␉{␊ |
␉␉␉␉␉␉␉␉memSize *= mem->info.elements;␊ |
␉␉␉␉␉␉␉␉memSize *= mem[j].info.elements;␊ |
␉␉␉␉␉␉␉}␊ |
␉␉␉␉␉␉␉curOffset += (int) memSize * 4;␊ |
␉␉␉␉␉␉}␊ |