private Texture2D GetTexture(GuestSpritesheetData guestSpritesheetData) { Texture2D texture = new Texture2D(512, 512, TextureFormat.RGBA32, true); Color[] spritesheetBasePixels = baseTexture.GetPixels(0, 0, 512, 512); texture.SetPixels(0, 0, 512, 512, spritesheetBasePixels); Color skinColor = guestSpritesheetData.skinColor; Color[] headPixels = baseHeadTexture.GetPixels(0, 0, 128, 128); Color[] headSkinMaskPixels = baseHeadMaskTexture.GetPixels(0, 0, 128, 128); TintColorArraysInsideMask(headPixels, skinColor, headSkinMaskPixels); Color[] handPixels = handTexture.GetPixels(0, 0, 64, 64); TintColorArray(handPixels, skinColor); texture.SetPixels(384, 448, 64, 64, handPixels); Color hairColor = guestSpritesheetData.hairColor; bool hasHair = guestSpritesheetData.hairIndex != -1; if (hasHair) { int hairIndex = guestSpritesheetData.hairIndex; Color[] hairPixels = hairTexture.GetPixels(128 * hairIndex, 0, 128, 128); TintColorArray(hairPixels, hairColor); MergeColorArrays(headPixels, hairPixels); } bool hasBeard = guestSpritesheetData.beardIndex != -1; if (hasBeard) { int beardIndex = guestSpritesheetData.beardIndex; Color[] beardPixels = beardTexture.GetPixels(128 * beardIndex, 0, 128, 128); TintColorArray(beardPixels, hairColor); MergeColorArrays(headPixels, beardPixels); } texture.SetPixels(0, 384, 128, 128, headPixels); int bodyIndex = guestSpritesheetData.bodyIndex; Color[] bodyPixels = bodyTextureWhite.GetPixels(128 * bodyIndex, 0, 128, 128); Color[] bodyMaskPixels = bodyTextureMask.GetPixels(128 * bodyIndex, 0, 128, 128); Color primaryColor = guestSpritesheetData.bodyPrimaryColor; Color primaryMaskColor = new Color(0, 1, 0); TintColorArraysInsideMask(bodyPixels, primaryColor, bodyMaskPixels, primaryMaskColor); Color secondaryColor = guestSpritesheetData.bodySecondaryColor; Color secondaryMaskColor = new Color(0, 0, 1); TintColorArraysInsideMask(bodyPixels, secondaryColor, bodyMaskPixels, secondaryMaskColor); texture.SetPixels(0, 256, 128, 128, bodyPixels); texture.Apply(); return(texture); }
private void Awake() { guestSpritesheetData = GuestSpritesheetData.GenerateRandom(); SetGuestSpritesheetData(guestSpritesheetData); CMDebug.ButtonUI(new Vector2(100, -170), "Randomize", () => { guestSpritesheetData = GuestSpritesheetData.GenerateRandom(); SetGuestSpritesheetData(guestSpritesheetData); }); CMDebug.ButtonUI(new Vector2(250, -170), "Save", () => { guestSpritesheetData.Save(); CMDebug.TextPopupMouse("Saved!"); }); CMDebug.ButtonUI(new Vector2(400, -170), "Load", () => { guestSpritesheetData = GuestSpritesheetData.Load_Static(); SetGuestSpritesheetData(guestSpritesheetData); CMDebug.TextPopupMouse("Loaded!"); }); }
private void SetGuestSpritesheetData(GuestSpritesheetData guestSpritesheetData) { Texture2D texture = GetTexture(guestSpritesheetData); guestMaterial.mainTexture = texture; }