protected override void GenerateUV(Mesh mesh, UVGenerationMode mode) { switch (mode) { case UVGenerationMode.PerTriangleEditorOnly: #if UNITY_EDITOR mesh.SetUVs(0, Unwrapping.GeneratePerTriangleUV(mesh)); #endif break; //case UVGenerationMode.Spherical: // TODO //break; } }
public override void LockMesh ( bool autoRigging, bool async, Mesh mesh = null, UVGenerationMode uvGeneration = UVGenerationMode.None ) { m_lockMeshIntermediateState = LockMeshIntermediateStateEnum.PreLock; #if UNITY_EDITOR Undo.RecordObject(this, "Lock Mesh (" + name + ")"); #endif base.LockMesh(autoRigging, async, mesh, uvGeneration); #if UNITY_EDITOR Undo.FlushUndoRecordObjects(); #endif switch (MeshGenerationRenderableMeshMode) { case RenderableMeshMode.None: break; case RenderableMeshMode.Procedural: MarkNeedsCompute(); break; case RenderableMeshMode.MeshRenderer: AddLockedStandardMesh(gameObject, autoRigging, async, mesh, uvGeneration); if (!async) { DisposeLocalResources(); } break; } m_lockMeshIntermediateState = LockMeshIntermediateStateEnum.PostLock; }
public override Mesh AddLockedStandardMesh ( GameObject go, bool autoRigging, bool async, Mesh mesh = null, UVGenerationMode uvGeneration = UVGenerationMode.None ) { #if UNITY_EDITOR Undo.RecordObject(this, name); #endif var transformStack = new Stack <Transform>(); transformStack.Push(transform); while (transformStack.Count > 0) { var t = transformStack.Pop(); if (t == null) { continue; } #if UNITY_EDITOR Undo.RecordObject(t, t.name); #endif for (int i = 0; i < t.childCount; ++i) { transformStack.Push(t.GetChild(i)); } } m_doRigging = autoRigging; Transform [] aBone; mesh = GenerateMesh(GeneratedMeshType.Standard, go.transform, out aBone, async, mesh, uvGeneration); m_doRigging = false; Material material = ResourcesUtil.DefaultLockedMeshMaterial; if (autoRigging) { var meshRenderer = AddComponentHelper <SkinnedMeshRenderer>(go); meshRenderer.sharedMesh = mesh; meshRenderer.sharedMaterial = material; meshRenderer.bones = aBone; meshRenderer.rootBone = go.transform; } else { var meshFilter = AddComponentHelper <MeshFilter>(go); var meshRenderer = AddComponentHelper <MeshRenderer>(go); meshFilter.sharedMesh = mesh; meshRenderer.sharedMaterial = material; } #if UNITY_EDITOR EditorApplication.QueuePlayerLoopUpdate(); #endif return(mesh); }