mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2025-12-16 14:11:19 +07:00
fix filter scale for export with custom graphic scale
This commit is contained in:
Binary file not shown.
@@ -158,12 +158,7 @@ ft.array_foldr = function (arr, func, acc) {
|
||||
|
||||
ft.array_clone = function (arr) {
|
||||
ft.type_assert(arr, Array);
|
||||
var new_arr = [];
|
||||
for (var index = 0; index < arr.length; ++index) {
|
||||
var value = arr[index];
|
||||
new_arr.push(value);
|
||||
}
|
||||
return new_arr;
|
||||
return arr.concat();
|
||||
};
|
||||
|
||||
ft.array_filter = function (arr, filter) {
|
||||
@@ -179,6 +174,19 @@ ft.array_filter = function (arr, filter) {
|
||||
return new_arr;
|
||||
};
|
||||
|
||||
ft.array_merge = function (arrA, arrB) {
|
||||
ft.type_assert(arrA, Array);
|
||||
ft.type_assert(arrB, Array);
|
||||
return arrA.concat(ft.array_filter(arrB, function (value) {
|
||||
return !ft.array_contains(arrA, value);
|
||||
}));
|
||||
};
|
||||
|
||||
ft.array_contains = function (arr, elem) {
|
||||
ft.type_assert(arr, Array);
|
||||
return arr.indexOf(elem) >= 0;
|
||||
};
|
||||
|
||||
ft.array_foreach = function (arr, func, filter) {
|
||||
ft.type_assert(arr, Array);
|
||||
ft.type_assert(func, Function);
|
||||
@@ -191,7 +199,7 @@ ft.array_foreach = function (arr, func, filter) {
|
||||
}
|
||||
};
|
||||
|
||||
ft.array_group_by = function(arr, func) {
|
||||
ft.array_group_by = function (arr, func) {
|
||||
return ft.array_foldl(arr, function (value, acc) {
|
||||
if (acc.length > 0 && func(acc.peek().peek()) === func(value)) {
|
||||
acc.peek().push(value);
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
(function() {
|
||||
var wrapper_item_name = ft.gen_unique_name();
|
||||
var wrapper_item = doc.convertToSymbol("graphic", wrapper_item_name , "top left");
|
||||
fttim.recursive_scale_filters(doc, wrapper_item.timeline, final_scale);
|
||||
fttim.recursive_scale_filters(doc, wrapper_item, final_scale);
|
||||
|
||||
var elem = doc.selection[0];
|
||||
elem.setTransformationPoint({x: 0, y: 0});
|
||||
@@ -150,6 +150,8 @@
|
||||
|
||||
elem.setTransformationPoint({x: (elem_x - elem.x), y: (elem_y - elem.y)});
|
||||
doc.scaleSelection(1.0 / final_scale, 1.0 / final_scale);
|
||||
|
||||
fttim.recursive_scale_filters(doc, wrapper_item, 1.0 / final_scale);
|
||||
})();
|
||||
}
|
||||
};
|
||||
@@ -648,23 +650,51 @@
|
||||
var frame_height = Math.max(0, bounds.bottom - bounds.top);
|
||||
return Math.round(frame_width) * Math.round(frame_height);
|
||||
};
|
||||
|
||||
fttim.scale_elem_filters = function (elem, scale) {
|
||||
if (fttim.is_symbol_instance(elem)) {
|
||||
var elem_filters = elem.filters;
|
||||
if (elem_filters && elem_filters !== undefined) {
|
||||
ft.array_foreach(elem_filters, function (elem_filter, filter_index) {
|
||||
elem_filter.blurX *= scale;
|
||||
elem_filter.blurY *= scale;
|
||||
});
|
||||
elem.filters = elem_filters;
|
||||
}
|
||||
}
|
||||
if (fttim.is_group_shape_element(elem)) {
|
||||
ft.array_foreach(elem.members, function(member) {
|
||||
fttim.scale_elem_filters(member, scale);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
fttim.recursive_scale_filters = function (doc, timeline, scale) {
|
||||
fttim.recursive_scale_filters = function (doc, item, scale, optional_scaled_items) {
|
||||
ft.type_assert(doc, Document);
|
||||
ft.type_assert(timeline, Timeline);
|
||||
ft.array_foreach(timeline.layers, function (layer) {
|
||||
ft.type_assert(item, LibraryItem);
|
||||
ft.type_assert(scale, 'number');
|
||||
ft.type_assert_if_defined(optional_scaled_items, Array);
|
||||
|
||||
var scaled_items = optional_scaled_items || [];
|
||||
if (ft.array_contains(scaled_items, item)) {
|
||||
return;
|
||||
} else {
|
||||
scaled_items.push(item);
|
||||
}
|
||||
|
||||
ft.array_foreach(item.timeline.layers, function (layer) {
|
||||
ft.array_foreach(layer.frames, function (frame, frame_index) {
|
||||
ft.array_foreach(frame.elements, function (elem) {
|
||||
var elem_filters = elem.filters;
|
||||
if (elem_filters && elem_filters !== undefined) {
|
||||
ft.array_foreach(elem_filters, function (elem_filter, filter_index) {
|
||||
elem_filter.blurX *= scale;
|
||||
elem_filter.blurY *= scale;
|
||||
});
|
||||
elem.filters = elem_filters;
|
||||
fttim.scale_elem_filters(elem, scale);
|
||||
if (fttim.is_group_shape_element(elem)) {
|
||||
ft.array_foreach(elem.members, function(member) {
|
||||
fttim.recursive_scale_filters(doc, member.libraryItem, scale, scaled_items);
|
||||
}, fttim.is_symbol_instance);
|
||||
}
|
||||
fttim.recursive_scale_filters(doc, elem.libraryItem.timeline, scale);
|
||||
}, fttim.is_symbol_instance);
|
||||
if (fttim.is_symbol_instance(elem)) {
|
||||
fttim.recursive_scale_filters(doc, elem.libraryItem, scale, scaled_items);
|
||||
}
|
||||
});
|
||||
}, fttim.is_keyframe);
|
||||
}, fttim.is_not_guide_layer);
|
||||
};
|
||||
|
||||
@@ -93,7 +93,7 @@ http://ru.esotericsoftware.com/forum/Submeshes-render-in-random-order-with-ortho
|
||||
**** DONE Шейпы в классических твинах (да, это ошибка, но флеш её пропускает) не растеризуются
|
||||
**** DONE При множественном импорте ошибка в импорте по поводу удаление из-под носа ассета воспроизводится 100%
|
||||
**** DONE Некорректно кончающиеся твинны плохо дружат с оптимизацией и растеризацией
|
||||
**** TODO Скейл фильтров не заходит в группы
|
||||
**** DONE Скейл фильтров не заходит в группы
|
||||
**** TODO Использовать textureRectOffset для спрайта (пакер атласов кропит спрайты!)
|
||||
** DONE Версия 1.3.7
|
||||
*** Баги
|
||||
|
||||
Reference in New Issue
Block a user