private static void SetupLevelRenderer(Renderer renderer, ref LODLevel level) { renderer.shadowCastingMode = level.ShadowCastingMode; renderer.receiveShadows = level.ReceiveShadows; renderer.motionVectorGenerationMode = level.MotionVectorGenerationMode; renderer.lightProbeUsage = level.LightProbeUsage; renderer.reflectionProbeUsage = level.ReflectionProbeUsage; var skinnedMeshRenderer = renderer as SkinnedMeshRenderer; if (skinnedMeshRenderer != null) { skinnedMeshRenderer.quality = level.SkinQuality; skinnedMeshRenderer.skinnedMotionVectors = level.SkinnedMotionVectors; } }
private static MeshRenderer CreateLevelRenderer(string name, Transform parentTransform, Transform originalTransform, Mesh mesh, Material[] materials, ref LODLevel level) { var levelGameObject = new GameObject(name, typeof(MeshFilter), typeof(MeshRenderer)); var levelTransform = levelGameObject.transform; if (originalTransform != null) { ParentAndOffsetTransform(levelTransform, parentTransform, originalTransform); } else { ParentAndResetTransform(levelTransform, parentTransform); } var meshFilter = levelGameObject.GetComponent <MeshFilter>(); meshFilter.sharedMesh = mesh; var meshRenderer = levelGameObject.GetComponent <MeshRenderer>(); meshRenderer.sharedMaterials = materials; SetupLevelRenderer(meshRenderer, ref level); return(meshRenderer); }
private static SkinnedMeshRenderer CreateSkinnedLevelRenderer(string name, Transform parentTransform, Transform originalTransform, Mesh mesh, Material[] materials, Transform rootBone, Transform[] bones, ref LODLevel level) { var levelGameObject = new GameObject(name, typeof(SkinnedMeshRenderer)); var levelTransform = levelGameObject.transform; if (originalTransform != null) { ParentAndOffsetTransform(levelTransform, parentTransform, originalTransform); } else { ParentAndResetTransform(levelTransform, parentTransform); } var skinnedMeshRenderer = levelGameObject.GetComponent <SkinnedMeshRenderer>(); skinnedMeshRenderer.sharedMesh = mesh; skinnedMeshRenderer.sharedMaterials = materials; skinnedMeshRenderer.rootBone = rootBone; skinnedMeshRenderer.bones = bones; SetupLevelRenderer(skinnedMeshRenderer, ref level); return(skinnedMeshRenderer); }
private static Renderer CreateLevelRenderer(GameObject gameObject, int levelIndex, ref LODLevel level, Transform levelTransform, int rendererIndex, RendererInfo renderer, ref SimplificationOptions simplificationOptions, string saveAssetsPath) { var mesh = renderer.mesh; // Simplify the mesh if necessary if (level.Quality < 1f) { mesh = SimplifyMesh(mesh, level.Quality, simplificationOptions); #if UNITY_EDITOR SaveLODMeshAsset(mesh, gameObject.name, renderer.name, levelIndex, mesh.name, saveAssetsPath); #endif if (renderer.isNewMesh) { DestroyObject(renderer.mesh); } } if (renderer.isStatic) { string rendererName = string.Format("{0:000}_static_{1}", rendererIndex, renderer.name); return(CreateStaticLevelRenderer(rendererName, levelTransform, renderer.transform, mesh, renderer.materials, ref level)); } else { string rendererName = string.Format("{0:000}_skinned_{1}", rendererIndex, renderer.name); return(CreateSkinnedLevelRenderer(rendererName, levelTransform, renderer.transform, mesh, renderer.materials, renderer.rootBone, renderer.bones, ref level)); } }