public void BuildTimeline() { keyValues = settings.keyframes.values; _SliderSettings = settings.keyframes.sliderSettings; listademesh = new List<Mesh>(); for (int j = 0; j < settings.meshList.id.Length; j++) { for (int i = 0; i < morphTargets.Count; i++) { if (morphTargets[i].name == settings.meshList.description[j]) { //morphTargets[i].hideFlags = HideFlags.DontSave; listademesh.Add(morphTargets[i]); } } } timeline = new Timeline[keyValues.Length + 1]; v3_listademesh = new vertexTarget[listademesh.Count]; Vector3[] v3_BaseMesh = neutralMesh.vertices; for (int j = 0; j < listademesh.Count; j++) { v3_listademesh[j] = new vertexTarget(); v3_listademesh[j].target = new Vector3[neutralMesh.vertexCount]; v3_listademesh[j].target = listademesh[j].vertices; for (int h = 0; h < neutralMesh.vertexCount; h++) { v3_listademesh[j].target[h] -= v3_BaseMesh[h]; } } for (int i = 0; i < keyValues.Length; i++) { Vector3[] v3_temp = new Vector3[neutralMesh.vertexCount]; v3_temp = neutralMesh.vertices; float[] slider = _SliderSettings[i]; for (int j = 0; j < listademesh.Count; j++) { for (int h = 0; h < neutralMesh.vertexCount; h++) { v3_temp[h] += v3_listademesh[j].target[h] * ((float)slider[j] / 100); } } timeline[i] = new Timeline(keyValues[i], v3_temp); } timeline[keyValues.Length] = new Timeline(settings.animationTime, neutralMesh.vertices); if (neutralMesh_temp == null) { neutralMesh_temp = Instantiate(neutralMesh) as Mesh; } neutralMesh_temp.vertices = neutralMesh.vertices; if (mainObject.GetComponent<MeshFilter>()) { MeshFilter filter = mainObject.GetComponent<MeshFilter>(); filter.sharedMesh.vertices = neutralMesh.vertices; if (filter.sharedMesh != null) { filter.sharedMesh = neutralMesh_temp; } filter.sharedMesh.name = "Tagarela"; basemesh = filter.sharedMesh as Mesh; //basemesh.hideFlags = HideFlags.DontSave; } else if (mainObject.GetComponent<SkinnedMeshRenderer>()) { SkinnedMeshRenderer filter = mainObject.GetComponent<SkinnedMeshRenderer>(); filter.sharedMesh.vertices = neutralMesh.vertices; if (filter.sharedMesh != null) { filter.sharedMesh = neutralMesh_temp; } filter.sharedMesh.name = "Tagarela"; basemesh = filter.sharedMesh as Mesh; //basemesh.hideFlags = HideFlags.DontSave; } }
public void BuildTimeline() { keyValues = settings.keyframes.values; _SliderSettings = settings.keyframes.sliderSettings; listademesh = new List <Mesh>(); for (int j = 0; j < settings.meshList.id.Length; j++) { for (int i = 0; i < morphTargets.Count; i++) { if (morphTargets[i].name == settings.meshList.description[j]) { //morphTargets[i].hideFlags = HideFlags.DontSave; listademesh.Add(morphTargets[i]); } } } timeline = new Timeline[keyValues.Length + 1]; v3_listademesh = new vertexTarget[listademesh.Count]; Vector3[] v3_BaseMesh = neutralMesh.vertices; for (int j = 0; j < listademesh.Count; j++) { v3_listademesh[j] = new vertexTarget(); v3_listademesh[j].target = new Vector3[neutralMesh.vertexCount]; v3_listademesh[j].target = listademesh[j].vertices; for (int h = 0; h < neutralMesh.vertexCount; h++) { v3_listademesh[j].target[h] -= v3_BaseMesh[h]; } } for (int i = 0; i < keyValues.Length; i++) { Vector3[] v3_temp = new Vector3[neutralMesh.vertexCount]; v3_temp = neutralMesh.vertices; float[] slider = _SliderSettings[i]; for (int j = 0; j < listademesh.Count; j++) { for (int h = 0; h < neutralMesh.vertexCount; h++) { v3_temp[h] += v3_listademesh[j].target[h] * ((float)slider[j] / 100); } } timeline[i] = new Timeline(keyValues[i], v3_temp); } timeline[keyValues.Length] = new Timeline(settings.animationTime, neutralMesh.vertices); if (neutralMesh_temp == null) { neutralMesh_temp = Instantiate(neutralMesh) as Mesh; } neutralMesh_temp.vertices = neutralMesh.vertices; if (mainObject.GetComponent <MeshFilter>()) { MeshFilter filter = mainObject.GetComponent <MeshFilter>(); filter.sharedMesh.vertices = neutralMesh.vertices; if (filter.sharedMesh != null) { filter.sharedMesh = neutralMesh_temp; } filter.sharedMesh.name = "Tagarela"; basemesh = filter.sharedMesh as Mesh; //basemesh.hideFlags = HideFlags.DontSave; } else if (mainObject.GetComponent <SkinnedMeshRenderer>()) { SkinnedMeshRenderer filter = mainObject.GetComponent <SkinnedMeshRenderer>(); filter.sharedMesh.vertices = neutralMesh.vertices; if (filter.sharedMesh != null) { filter.sharedMesh = neutralMesh_temp; } filter.sharedMesh.name = "Tagarela"; basemesh = filter.sharedMesh as Mesh; //basemesh.hideFlags = HideFlags.DontSave; } }