diff --git a/Assets/Scripts/Game/Entity.cs b/Assets/Scripts/Game/Entity.cs index df28657..9b27ff5 100644 --- a/Assets/Scripts/Game/Entity.cs +++ b/Assets/Scripts/Game/Entity.cs @@ -129,15 +129,21 @@ public class Entity private void AssignMeshRenderer() { + Material material; if (aliasModel.IsAnimated) { visualStyle.SetupAliasModelRenderer(skinnedMeshRenderer); + material = skinnedMeshRenderer.material; skinnedMeshRenderer.enabled = true; } else { visualStyle.SetupAliasModelRenderer(meshRenderer); + material = meshRenderer.material; meshRenderer.enabled = true; } + + var textures = aliasModel.Textures; + visualStyle.SetAliasModelTextures(material, textures.MainTexture, textures.FullBrightTexture); } } diff --git a/Assets/Scripts/Modules/RenderModule.cs b/Assets/Scripts/Modules/RenderModule.cs index 6f0837f..ac6bf8e 100644 --- a/Assets/Scripts/Modules/RenderModule.cs +++ b/Assets/Scripts/Modules/RenderModule.cs @@ -24,11 +24,10 @@ public partial class RenderModule uq.GameAssets.AddAliasModel(aliasModel); // DEBUG kept for reference for the moment, how to address skins & texture frames, and full-bright textures - var material = new Material(Shader.Find("Universal Render Pipeline/Simple Lit")); uint texNum = glTextures[0][0].texNum; if (uq.GameAssets.TryGetTexture(texNum, out var texture)) { - material.mainTexture = texture; + aliasModel.Textures.MainTexture = texture; } if (fbTextures != null && fbTextures[0] != null && fbTextures[0][0] != null) @@ -36,9 +35,7 @@ public partial class RenderModule var fbTexNum = fbTextures[0][0].texNum; if (uq.GameAssets.TryGetTexture(fbTexNum, out var fbTexture)) { - material.EnableKeyword("_EMISSION"); - material.SetTexture("_EmissionMap", fbTexture); - material.SetColor("_EmissionColor", Color.white); + aliasModel.Textures.FullBrightTexture = fbTexture; } } diff --git a/Assets/Scripts/Support/AliasModel.cs b/Assets/Scripts/Support/AliasModel.cs index 88fd3c5..1cbe976 100644 --- a/Assets/Scripts/Support/AliasModel.cs +++ b/Assets/Scripts/Support/AliasModel.cs @@ -15,6 +15,7 @@ public class AliasModel public string Name => name; public bool IsAnimated => header.numPoses > 1; public bool AutoAnimate => frameType == QAliasFrameType.Group; + public TextureSet Textures { get; } = new TextureSet(); public AliasModel(string name, QAliasHeader header, QAliasFrameType frameType) { diff --git a/Assets/Scripts/Support/TextureSet.cs b/Assets/Scripts/Support/TextureSet.cs new file mode 100644 index 0000000..fbdf58e --- /dev/null +++ b/Assets/Scripts/Support/TextureSet.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TextureSet +{ + public Texture2D MainTexture { get; set; } + + public Texture2D FullBrightTexture { get; set; } + + // TODO: organize into skins, frames/groups +} diff --git a/Assets/Scripts/Support/TextureSet.cs.meta b/Assets/Scripts/Support/TextureSet.cs.meta new file mode 100644 index 0000000..804b4da --- /dev/null +++ b/Assets/Scripts/Support/TextureSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e2b44caf480c45459e09af660b9e378 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: