实现bake的自动化,但是autoorient的重建还是需要一些优化
Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Dreamteck.Splines;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
@@ -61,11 +62,30 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public override void Refresh()
|
||||
{
|
||||
SetEnableZWrite();
|
||||
SetEnableEmission();
|
||||
SetEmissionIntensity();
|
||||
// 使用 MaterialPropertyBlock 替代直接操作 material
|
||||
var block = new MaterialPropertyBlock();
|
||||
meshRenderer.GetPropertyBlock(block);
|
||||
|
||||
// ZWrite
|
||||
block.SetFloat("_ZWrite", zWrite ? 1f : 0f);
|
||||
|
||||
// Emission
|
||||
if (enableEmission)
|
||||
{
|
||||
meshRenderer.material.EnableKeyword("_EMISSION_ON");
|
||||
block.SetColor("_EmissionColor", Color.white * Mathf.Pow(2, emissionIntensity));
|
||||
}
|
||||
else
|
||||
{
|
||||
meshRenderer.material.DisableKeyword("_EMISSION_ON");
|
||||
block.SetColor("_EmissionColor", Color.black);
|
||||
}
|
||||
|
||||
// UV(仍然直接设置到 meshGenerator)
|
||||
SetUV();
|
||||
|
||||
meshRenderer.SetPropertyBlock(block);
|
||||
|
||||
if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable trackTimeSubmoduleMovable)
|
||||
{
|
||||
meshGenerator.clipFrom = trackTimeSubmoduleMovable.tailPercent;
|
||||
@@ -97,7 +117,7 @@ namespace Ichni.RhythmGame
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Track Renderer " + submoduleName[submoduleNameIndex]);
|
||||
var container = inspector.GenerateContainer("Track Renderer " + submoduleName[submoduleNameIndex] + (meshGenerator.baked ? " (Baked)" : ""));
|
||||
var zWriteSettings = container.GenerateSubcontainer(3);
|
||||
|
||||
var zWriteToggle =
|
||||
@@ -149,6 +169,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
protected void SetEnableEmission()
|
||||
{
|
||||
// 仅保留关键字控制,具体颜色由 Refresh 的 property block 控制
|
||||
if (enableEmission)
|
||||
{
|
||||
meshRenderer.material.EnableKeyword("_EMISSION_ON");
|
||||
@@ -161,12 +182,32 @@ namespace Ichni.RhythmGame
|
||||
|
||||
protected void SetEnableZWrite()
|
||||
{
|
||||
meshRenderer.material.SetInt("_ZWrite", zWrite ? 1 : 0);
|
||||
var block = new MaterialPropertyBlock();
|
||||
meshRenderer.GetPropertyBlock(block);
|
||||
|
||||
// ZWrite
|
||||
block.SetFloat("_ZWrite", zWrite ? 1f : 0f);
|
||||
meshRenderer.SetPropertyBlock(block);
|
||||
}
|
||||
|
||||
protected void SetEmissionIntensity()
|
||||
{
|
||||
meshRenderer.material.SetColor("_EmissionColor", Color.white * Mathf.Pow(2, emissionIntensity));
|
||||
var block = new MaterialPropertyBlock();
|
||||
meshRenderer.GetPropertyBlock(block);
|
||||
|
||||
|
||||
// Emission
|
||||
if (enableEmission)
|
||||
{
|
||||
meshRenderer.material.EnableKeyword("_EMISSION_ON");
|
||||
block.SetColor("_EmissionColor", Color.white * Mathf.Pow(2, emissionIntensity));
|
||||
}
|
||||
else
|
||||
{
|
||||
meshRenderer.material.DisableKeyword("_EMISSION_ON");
|
||||
block.SetColor("_EmissionColor", Color.black);
|
||||
}
|
||||
meshRenderer.SetPropertyBlock(block);
|
||||
}
|
||||
|
||||
protected void SetUV()
|
||||
|
||||
Reference in New Issue
Block a user