public static void SetVehicleTex(VehicleDef selectedDef) { if (selectedDef is null) { selectedVehicleTex = null; return; } var bodyGraphicData = selectedDef.graphicData; var graphicData = new GraphicDataRGB(); graphicData.CopyFrom(bodyGraphicData); graphicInt = graphicData.Graphic as Graphic_Vehicle; selectedVehicleTex = graphicInt.TexAt(Rot8.North); }
static VehicleTex() { StringBuilder tasks = new StringBuilder(); foreach (VehicleDef vehicleDef in DefDatabase <VehicleDef> .AllDefs) { tasks.Clear(); tasks.AppendLine($"Generating TextureCache for {vehicleDef.defName}"); try { tasks.Append("Creating icon..."); string iconFilePath = vehicleDef.properties.iconTexPath; if (iconFilePath.NullOrEmpty()) { switch (vehicleDef.vehicleType) { case VehicleType.Land: iconFilePath = DefaultVehicleIconTexPath; break; case VehicleType.Sea: iconFilePath = DefaultBoatIconTexPath; break; case VehicleType.Air: iconFilePath = DefaultShuttleIconTexPath; break; } } tasks.AppendLine("Icon created"); tasks.AppendLine("Creating BodyGraphicData and cached graphics..."); if (vehicleDef.graphicData is GraphicDataRGB graphicDataRGB) { Texture2D tex; var graphicData = new GraphicDataRGB(); graphicData.CopyFrom(graphicDataRGB); Graphic_Vehicle graphic = graphicData.Graphic as Graphic_Vehicle; tasks.AppendLine("Setting TextureCache..."); SetTextureCache(vehicleDef, graphicData); tasks.AppendLine("Finalized TextureCache"); if (cachedTextureFilepaths.ContainsKey(iconFilePath)) { tex = cachedTextureFilepaths[iconFilePath]; } else { tex = ContentFinder <Texture2D> .Get(iconFilePath); cachedTextureFilepaths.Add(iconFilePath, tex); } tasks.AppendLine("Finalizing caching"); CachedGraphics.Add(vehicleDef, graphic); CachedTextureIcons.Add(vehicleDef, tex); } else { SmashLog.Error($"Unable to create GraphicData of type <type>{vehicleDef.graphicData?.GetType().ToStringSafe() ?? "Null"} for {vehicleDef.defName}.\n{tasks}"); } } catch (Exception ex) { Log.Error($"Exception thrown while trying to generate cached textures. Exception=\"{ex.Message}\"\n-----------------Tasks-----------------\n{tasks}"); } } }