public static void LoadObjectGroups(AssetInfo info, Map map, int tileWidth, int tileHeight, EventLayout eventLayout, List <TriggerInfo> triggers, List <MapNpc> npcs, List <MapEventZone> zones, List <AutomapInfo> markers, List <byte> markerTiles) { ushort ResolveEntryPoint(string name) { var(isChain, id) = ScriptConstants.ParseEntryPoint(name); return(isChain ? eventLayout.Chains[id] : id); } var mapObjects = map.ObjectGroups.SelectMany(x => x.Objects); var pathParser = NpcPathBuilder.BuildParser(mapObjects, tileWidth, tileHeight); foreach (var objectGroup in map.ObjectGroups) { foreach (var obj in objectGroup.Objects) { if (TypeName.Trigger.Equals(obj.Type, StringComparison.OrdinalIgnoreCase)) { triggers.Add(TriggerMapping.ParseTrigger(obj, tileWidth, tileHeight, ResolveEntryPoint)); } if (TypeName.Npc.Equals(obj.Type, StringComparison.OrdinalIgnoreCase)) { npcs.Add(NpcMapping.ParseNpc(obj, tileWidth, tileHeight, ResolveEntryPoint, pathParser)); } if (TypeName.Marker.Equals(obj.Type, StringComparison.OrdinalIgnoreCase)) { var(marker, tile) = AutomapMapping.ParseMarker(obj, tileWidth, tileHeight); markers.Add(marker); markerTiles.Add(tile); } } } TriggerMapping.LoadZones(zones, info.AssetId, triggers, map); }