improve game rendering setup (#342)

fix alpha channel overriding issues with transparent objects in game scene
This commit is contained in:
minenice55
2023-03-12 18:20:22 -04:00
committed by GitHub
parent 29d8c3c40d
commit 0724ce9510
11 changed files with 533 additions and 56 deletions

View File

@ -14,6 +14,8 @@ namespace HeavenStudio.Editor
public class GameSettings : TabsContent
{
public static bool InPreview;
static Color ambiColour;
static bool needUpdateAmbi;
[SerializeField] Toggle editorOverlaysToggle;
[SerializeField] Toggle perfectChallengeToggle;
[SerializeField] Toggle sectionMedalsToggle;
@ -21,6 +23,11 @@ namespace HeavenStudio.Editor
[SerializeField] Toggle letterboxBgEnable;
[SerializeField] Toggle letterboxFxEnable;
[SerializeField] Image LytEditBg;
[SerializeField] Image LytEditBgAmbi;
[SerializeField] GameObject LytEditBgAmbiGO;
[Header("Layout Settings - Header")]
[SerializeField] TMP_Text ElementNameText;
@ -47,6 +54,14 @@ namespace HeavenStudio.Editor
const string fFormat = "0.000";
bool initLyt = false;
public static void UpdatePreviewAmbient(Color col)
{
ambiColour = col;
needUpdateAmbi = true;
}
// Start is called before the first frame update
void Start()
{
@ -56,7 +71,11 @@ namespace HeavenStudio.Editor
// Update is called once per frame
void Update()
{
if (InPreview && needUpdateAmbi)
{
LytEditBgAmbi.color = ambiColour;
needUpdateAmbi = false;
}
}
void CreateDefaultLayout()
@ -99,12 +118,14 @@ namespace HeavenStudio.Editor
{
PersistentDataManager.gameSettings.letterboxBgEnable = letterboxBgEnable.isOn;
StaticCamera.instance.ToggleLetterboxBg(PersistentDataManager.gameSettings.letterboxBgEnable);
LytEditBg.color = PersistentDataManager.gameSettings.letterboxBgEnable ? Color.white : Color.black;
}
public void OnLetterboxFxToggleChanged()
{
PersistentDataManager.gameSettings.letterboxFxEnable = letterboxFxEnable.isOn;
StaticCamera.instance.ToggleLetterboxGlow(PersistentDataManager.gameSettings.letterboxFxEnable);
LytEditBgAmbiGO.SetActive(PersistentDataManager.gameSettings.letterboxFxEnable);
}
public override void OnOpenTab()
@ -133,6 +154,7 @@ namespace HeavenStudio.Editor
UpdateLayoutSettings();
InPreview = true;
initLyt = true;
}
public override void OnCloseTab()
@ -143,6 +165,7 @@ namespace HeavenStudio.Editor
}
lytElements.Clear();
InPreview = false;
initLyt = false;
}
void UpdateLayoutSettings()
@ -194,6 +217,7 @@ namespace HeavenStudio.Editor
public void OnElementToggled()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
element.enable = ElementToggle.isOn;
element.PositionElement();
@ -201,6 +225,7 @@ namespace HeavenStudio.Editor
public void OnXPosInputChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
XPosSlider.value = float.Parse(XPosInput.text);
element.position.x = XPosSlider.value;
@ -209,6 +234,7 @@ namespace HeavenStudio.Editor
public void OnXPosSliderChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
XPosInput.text = XPosSlider.value.ToString(fFormat);
element.position.x = XPosSlider.value;
@ -217,6 +243,7 @@ namespace HeavenStudio.Editor
public void OnYPosInputChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
YPosSlider.value = float.Parse(YPosInput.text);
element.position.y = YPosSlider.value;
@ -225,6 +252,7 @@ namespace HeavenStudio.Editor
public void OnYPosSliderChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
YPosInput.text = YPosSlider.value.ToString(fFormat);
element.position.y = YPosSlider.value;
@ -233,6 +261,7 @@ namespace HeavenStudio.Editor
public void OnRotationInputChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
RotationSlider.value = float.Parse(RotationInput.text);
element.rotation = RotationSlider.value;
@ -241,6 +270,7 @@ namespace HeavenStudio.Editor
public void OnRotationSliderChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
RotationInput.text = RotationSlider.value.ToString(fFormat);
element.rotation = RotationSlider.value;
@ -249,6 +279,7 @@ namespace HeavenStudio.Editor
public void OnScaleInputChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
ScaleSlider.value = float.Parse(ScaleInput.text);
element.scale = ScaleSlider.value;
@ -257,6 +288,7 @@ namespace HeavenStudio.Editor
public void OnScaleSliderChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx];
ScaleInput.text = ScaleSlider.value.ToString(fFormat);
element.scale = ScaleSlider.value;
@ -265,6 +297,7 @@ namespace HeavenStudio.Editor
public void OnTimingDispTypeDropdownChanged()
{
if (!initLyt) return;
var element = lytElements[currentElementIdx] as OverlaysManager.TimingDisplayComponent;
if (element == null) return;
element.tdType = (OverlaysManager.TimingDisplayComponent.TimingDisplayType)TimingDispTypeDropdown.value;