using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; public partial class RenderModule { private readonly UniQuake uq; private readonly List aliasModels = new List(); public RenderModule(UniQuake uniQuake) { uq = uniQuake; BuildCallbacks(); } public override void Destroy() { base.Destroy(); foreach (var aliasModel in aliasModels) { // aliasModel.Dispose(); // TODO: reactivate when done testing in editor } aliasModels.Clear(); } private float xPos = -8f; private int UploadAliasModel(string name, QAliasHeader header, QTriVertex[][] poseVertices, QTriangle[] triangles, QSTVert[] stVertices) { Debug.Log($"Alias model '{name}' with {header.numVerts} vertices, {header.numTriangles} triangles, {header.numFrames} frame(s)"); string modelName = System.IO.Path.GetFileNameWithoutExtension(name); AliasModel aliasModel = new AliasModel(modelName); aliasModel.ImportMeshData(header, poseVertices, triangles, stVertices); aliasModels.Add(aliasModel); var go = new GameObject(modelName); go.transform.SetPositionAndRotation(new Vector3(xPos, 0, 0), Quaternion.Euler(-90, 90, 0)); aliasModel.Animate(0, out Mesh mesh, out float blendWeight); if (header.numFrames > 1) { var mr = go.AddComponent(); mr.material = new Material(Shader.Find("Universal Render Pipeline/Simple Lit")); mr.sharedMesh = mesh; mr.shadowCastingMode = ShadowCastingMode.Off; mr.receiveShadows = false; mr.lightProbeUsage = LightProbeUsage.Off; mr.reflectionProbeUsage = ReflectionProbeUsage.Off; var animator = go.AddComponent(); animator.aliasModel = aliasModel; } else { var mf = go.AddComponent(); mf.sharedMesh = mesh; var mr = go.AddComponent(); mr.material = new Material(Shader.Find("Universal Render Pipeline/Simple Lit")); mr.shadowCastingMode = ShadowCastingMode.Off; mr.receiveShadows = false; mr.lightProbeUsage = LightProbeUsage.Off; mr.reflectionProbeUsage = ReflectionProbeUsage.Off; } xPos += 0.5f; return 1; } private int UploadBrushModel(QModel model) { if (model.type != QModelType.Brush) return -1; Debug.Log($"Brush model '{model.name}' with {model.numLeafs} leafs, {model.numVertices} vertices, {model.numSurfaces} surfaces"); return 1; } }