mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2025-12-14 20:21:27 +07:00
Fix Unity 5.6 submesh sorting bug
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
* Fix shape groups in tweens problems
|
||||
* Fix locked elements problem
|
||||
* Fix optimizator bitmap trim problems
|
||||
* Fix Unity 5.6 submesh sorting bug
|
||||
* Add shape tween warning
|
||||
* Remove excess "if" instruction from shaders
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
using UnityEditor;
|
||||
|
||||
using System.IO;
|
||||
@@ -40,6 +41,9 @@ namespace FTEditor.Editors {
|
||||
var clip_go = new GameObject(clip.name);
|
||||
clip_go.AddComponent<MeshFilter>();
|
||||
clip_go.AddComponent<MeshRenderer>();
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
clip_go.AddComponent<SortingGroup>();
|
||||
#endif
|
||||
clip_go.AddComponent<SwfClip>().clip = clip;
|
||||
clip_go.AddComponent<SwfClipController>();
|
||||
return clip_go;
|
||||
|
||||
@@ -27,6 +27,17 @@ namespace FTRuntime.Internal {
|
||||
//
|
||||
//
|
||||
|
||||
public static T GetOrCreateComponent<T>(GameObject obj) where T : Component {
|
||||
var comp = obj.GetComponent<T>();
|
||||
return comp != null
|
||||
? comp
|
||||
: obj.AddComponent<T>();
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
public static void FillGeneratedMesh(Mesh mesh, SwfClipAsset.MeshData mesh_data) {
|
||||
if ( mesh_data.SubMeshes.Length > 0 ) {
|
||||
mesh.subMeshCount = mesh_data.SubMeshes.Length;
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
using FTRuntime.Internal;
|
||||
|
||||
namespace FTRuntime {
|
||||
[ExecuteInEditMode, DisallowMultipleComponent]
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer), typeof(SortingGroup))]
|
||||
#else
|
||||
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
|
||||
#endif
|
||||
public class SwfClip : MonoBehaviour {
|
||||
|
||||
MeshFilter _meshFilter = null;
|
||||
MeshRenderer _meshRenderer = null;
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
SortingGroup _sortingGroup = null;
|
||||
#endif
|
||||
|
||||
bool _dirtyMesh = true;
|
||||
SwfClipAsset.Sequence _curSequence = null;
|
||||
@@ -274,8 +282,11 @@ namespace FTRuntime {
|
||||
}
|
||||
|
||||
void ClearCache() {
|
||||
_meshFilter = GetComponent<MeshFilter>();
|
||||
_meshRenderer = GetComponent<MeshRenderer>();
|
||||
_meshFilter = SwfUtils.GetOrCreateComponent<MeshFilter>(gameObject);
|
||||
_meshRenderer = SwfUtils.GetOrCreateComponent<MeshRenderer>(gameObject);
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
_sortingGroup = SwfUtils.GetOrCreateComponent<SortingGroup>(gameObject);
|
||||
#endif
|
||||
_dirtyMesh = true;
|
||||
_curSequence = null;
|
||||
_curPropBlock = null;
|
||||
@@ -336,6 +347,12 @@ namespace FTRuntime {
|
||||
_meshRenderer.sortingOrder = sortingOrder;
|
||||
_meshRenderer.sortingLayerName = sortingLayer;
|
||||
}
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
if ( _sortingGroup ) {
|
||||
_sortingGroup.sortingOrder = sortingOrder;
|
||||
_sortingGroup.sortingLayerName = sortingLayer;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void UpdatePropBlock() {
|
||||
|
||||
@@ -61,14 +61,16 @@ dipyalov: фишка в том, что swf обновился, но и собр
|
||||
**** DONE Элемент может быть залокан (element.locked)
|
||||
**** DONE Возможно не стоит преобразовывать группы в символы
|
||||
Таки стоит, но с рекурсивным выносом в отдельные символы и последующей их обработкой
|
||||
**** TODO В ошибках конвертации писать, что нужно прогнать через скрипт экспорта
|
||||
**** DONE В ошибках конвертации писать, что нужно прогнать через скрипт экспорта
|
||||
А еще лучше как-то метить прогнанную анимацию и нет
|
||||
*** Баги
|
||||
**** TODO При больших (>= 4000 пикселей) выделениях не работает convertSelectionToBitmap
|
||||
**** TODO Не работает конвертация в batchmod'е
|
||||
**** DONE В ошибках конвертации не пишется путь до swf
|
||||
**** DONE Не растеризуются группы в твинах
|
||||
**** TODO Unity может переставлять сабмеши на одинаковой глубине (проблема с масками)
|
||||
**** DONE Unity может переставлять сабмеши на одинаковой глубине (проблема с масками)
|
||||
https://fogbugz.unity3d.com/default.asp?910858_0diqjnj67814hj3i
|
||||
http://ru.esotericsoftware.com/forum/Submeshes-render-in-random-order-with-orthographic-camera-8528
|
||||
**** TODO При автоплее с пустым клипом контроллер накапливает _tickTimer
|
||||
**** TODO Возможно проблемы с DX9
|
||||
UNITY_UV_STARTS_AT_TOP
|
||||
|
||||
Reference in New Issue
Block a user