public static void DrawIconOnColonist(Vector3 bodyPos, IconEntryPSI entryPSI, int entryCount) { if (WorldRendererUtility.WorldRenderedNow) { return; } Material material = PSIMaterials[entryPSI.Icon]; if (material == null) { Debug.LogError("Material = null."); return; } Vector3 posOffset = IconPosVectorsPSI[entryCount]; entryPSI.Color.a = entryPSI.Opacity; material.color = entryPSI.Color; Color guiColor = GUI.color; GUI.color = entryPSI.Color; Vector2 vectorAtBody; float worldScale = WorldScale; if (Settings.PSISettings.IconsScreenScale) { worldScale = 45f; vectorAtBody = bodyPos.MapToUIPosition(); vectorAtBody.x += posOffset.x * 45f; vectorAtBody.y -= posOffset.z * 45f; } else { vectorAtBody = (bodyPos + posOffset).MapToUIPosition(); } float num2 = worldScale * (Settings.PSISettings.IconSizeMult * 0.5f); // On Colonist Rect position = new Rect( vectorAtBody.x, vectorAtBody.y, num2 * Settings.PSISettings.IconSize, num2 * Settings.PSISettings.IconSize); position.x -= position.width * 0.5f; position.y -= position.height * 0.5f; GUI.DrawTexture(position, material.mainTexture, ScaleMode.ScaleToFit, true); GUI.color = guiColor; }
private static void DrawColonistIconsPSI([NotNull] Pawn pawn) { if (pawn.Dead || !pawn.Spawned || pawn.holdingOwner == null || pawn.Map == null) { return; } CompPSI pawnStats = pawn.GetComp <CompPSI>(); if (pawnStats == null) { return; } SettingsPSI psiSettings = Settings.PSISettings; float viewOpacity = psiSettings.IconOpacity; int iconNum = 0; Vector3 bodyLoc = pawn.DrawPos; // Target Point if (psiSettings.ShowTargetPoint && pawnStats.TargetPos != Vector3.zero) { if (psiSettings.UseColoredTarget) { Color skinColor = pawn.story.SkinColor; Color hairColor = pawn.story.hairColor; if (SkinMat == null) { return; } if (HairMat == null) { return; } PSIDrawer.DrawIcon_posOffset(pawnStats.TargetPos, Vector3.zero, SkinMat, skinColor, 1f); PSIDrawer.DrawIcon_posOffset(pawnStats.TargetPos, Vector3.zero, HairMat, hairColor, 1f); } else { if (TargetMat == null) { return; } PSIDrawer.DrawIcon_posOffset(pawnStats.TargetPos, Vector3.zero, TargetMat, ColorNeutralStatus, viewOpacity); } } // Drafted if (psiSettings.ShowDraft && pawn.Drafted) { if (pawnStats.IsPacifist) { PSIDrawer.DrawIconOnColonist(bodyLoc, ref iconNum, Icon.Pacific, ColYellow, Settings.ViewOpacityCrit); } else { PSIDrawer.DrawIconOnColonist(bodyLoc, ref iconNum, Icon.Draft, ColVermillion, Settings.ViewOpacityCrit); } } List <IconEntryPSI> drawIconEntries = pawnStats.PSIIconList; if (!drawIconEntries.NullOrEmpty()) { for (int index = 0; index < drawIconEntries.Count; index++) { IconEntryPSI iconEntryBar = drawIconEntries[index]; PSIDrawer.DrawIconOnColonist(bodyLoc, iconEntryBar, index + iconNum); } } }