public static Mind Read(EndianBinaryReader reader, Pointer offset) { Mind m = new Mind(offset); m.off_AI_model = Pointer.Read(reader); m.off_intelligence_normal = Pointer.Read(reader); m.off_intelligence_reflex = Pointer.Read(reader); m.off_dsgMem = Pointer.Read(reader); m.off_name = Pointer.Read(reader); if (m.off_AI_model != null) { m.AI_model = AIModel.FromOffset(m.offset); if (m.AI_model == null) { Pointer.Goto(ref reader, m.off_AI_model); m.AI_model = AIModel.Read(reader, m.off_AI_model); } } if (MapLoader.Loader.mode == MapLoader.Mode.Rayman2PC && m.off_dsgMem != null) { Pointer.Goto(ref reader, m.off_dsgMem); m.dsgMem = DsgMem.Read(reader, m.off_dsgMem); } return(m); }
public static AIModel FromOffsetOrRead(Pointer offset, Reader reader) { if (offset == null) { return(null); } AIModel ai = FromOffset(offset); if (ai == null) { Pointer.DoAt(ref reader, offset, () => { ai = AIModel.Read(reader, offset); MapLoader.Loader.aiModels.Add(ai); }); } return(ai); }