public override void Init(GraphicRequestRGB req, bool cacheResults = true) { if (cacheResults is true) { masks = new Texture2D[MatCount]; maskMatPatterns = new Dictionary <PatternDef, Pair <string, Material[]> >(); } data = req.graphicData; path = req.path; color = req.color; colorTwo = req.colorTwo; colorThree = req.colorThree; tiles = req.tiles; drawSize = req.drawSize; var files = ContentFinder <Texture2D> .GetAllInFolder(req.path); List <Texture2D> list = (from x in files where !x.name.EndsWith(MaskSuffix) orderby x.name select x).ToList(); List <Texture2D> listM = (from x in files where x.name.EndsWith(MaskSuffix) orderby x.name select x).ToList(); if (list.NullOrEmpty()) { Log.Error("Collection cannot init: No textures found at path " + req.path); graphicPaths = new string[] { BaseContent.BadGraphic.path }; return; } graphicPaths = new string[list.Count]; subGraphics = new Graphic_Cannon[list.Count]; subTextures = list.ToArray(); if (list.Count != listM.Count && !listM.NullOrEmpty()) { Log.Error($"{VehicleHarmony.LogLabel} Could not apply masks for animation classes at path {req.path}. " + $"Mask and texture count do not match up." + $"\nMainTextures: {list.Count} Masks: {listM.Count}"); graphicPaths = new string[] { BaseContent.BadGraphic.path }; return; } for (int i = 0; i < list.Count; i++) { string fullPath = string.Concat(req.path, '/', list[i].name); graphicPaths[i] = fullPath; subGraphics[i] = GraphicDatabaseRGB.Get <Graphic_Cannon>(fullPath, req.shader, req.drawSize, req.color, req.colorTwo, req.colorThree, req.tiles, req.displacement.x, req.displacement.y, DataRGB, req.shaderParameters) as Graphic_Cannon; } }
public Graphic SubGraphicCycle(int index, Shader newShader, Color colorOne, Color colorTwo, Color colorThree, float tiles = 1, float displacementX = 0, float displacementY = 0) { if (index > (graphicPaths.Length - 1)) { Log.Warning($"Graphic Retrieval for Graphic_CannonAnimate indexed past maximum length of {graphicPaths.Length}. Self correcting."); while (index > (graphicPaths.Length - 1)) { index -= (graphicPaths.Length - 1); } } return(GraphicDatabaseRGB.Get <Graphic_Cannon>(graphicPaths[index], newShader, drawSize, colorOne, colorTwo, colorThree, tiles, displacementX, displacementY, DataRGB)); }
public virtual void Init() { if (graphicClass is null) { cachedRGBGraphic = null; return; } ShaderTypeDef cutout = shaderType; if (cutout == null) { cutout = RGBShaderTypeDefOf.CutoutComplexRGB; } Shader shader = cutout.Shader; cachedRGBGraphic = GraphicDatabaseRGB.Get(graphicClass, texPath, shader, drawSize, color, colorTwo, colorThree, tiles, displacement.x, displacement.y, this, shaderParameters); AccessTools.Field(typeof(GraphicData), "cachedGraphic").SetValue(this, cachedRGBGraphic); }
public override Graphic_RGB GetColoredVersion(Shader shader, Color colorOne, Color colorTwo, Color colorThree, float tiles = 1, float displacementX = 0, float displacementY = 0) { return(GraphicDatabaseRGB.Get <Graphic_CannonAnimate>(path, shader, drawSize, colorOne, colorTwo, colorThree, tiles, displacementX, displacementY, DataRGB)); }