mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2025-12-16 22:19:31 +07:00
Compare commits
22 Commits
versions/1
...
versions/1
| Author | SHA1 | Date | |
|---|---|---|---|
| df364244b4 | |||
| 5012b53ac1 | |||
| b7e026e8ff | |||
| 4df50242cc | |||
| 3f4fc9f8aa | |||
| 1976d315c4 | |||
| 1abb0878b9 | |||
| 294c6bba91 | |||
| df9d7ccd43 | |||
| 8981016d57 | |||
| bc8ea51463 | |||
| ce4c644ef2 | |||
| dc77088885 | |||
| ae5cc6de9f | |||
| a351e7352d | |||
| c607777454 | |||
| ce269317fc | |||
| 7e95d6b49a | |||
| f098bfc9bc | |||
| bee56e75a9 | |||
| 7ba00a7e9a | |||
| 545eacdaf8 |
0
.projectile
Normal file
0
.projectile
Normal file
@@ -1,7 +1,7 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 0e3bddf96333643c8a12fd862ebc9ec7
|
guid: 2d8762b6bff92457aa59aaf03193018c
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
timeCreated: 1480709542
|
timeCreated: 1487860932
|
||||||
licenseType: Free
|
licenseType: Free
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
userData:
|
userData:
|
||||||
BIN
Assets/DevTests/Animations/AlphaTests/Elefun/open.fla
Normal file
BIN
Assets/DevTests/Animations/AlphaTests/Elefun/open.fla
Normal file
Binary file not shown.
@@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: ffe731bf74d034b948a5ec392ba8e284
|
guid: d481c08b811dc41eda079968a32efbb9
|
||||||
timeCreated: 1476541234
|
timeCreated: 1487860937
|
||||||
licenseType: Free
|
licenseType: Free
|
||||||
TextScriptImporter:
|
DefaultImporter:
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
BIN
Assets/DevTests/Animations/AlphaTests/Tortuga/hero_pirate.fla
Normal file
BIN
Assets/DevTests/Animations/AlphaTests/Tortuga/hero_pirate.fla
Normal file
Binary file not shown.
@@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: dfa1591b561424bf6a952fcb68bebbc0
|
guid: 55c438c941e894f25bb2b0527ee72f7c
|
||||||
timeCreated: 1472651507
|
timeCreated: 1486989506
|
||||||
licenseType: Free
|
licenseType: Free
|
||||||
TextScriptImporter:
|
DefaultImporter:
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
71
Assets/FlashTools/Docs/CHANGELOG.md
Normal file
71
Assets/FlashTools/Docs/CHANGELOG.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
###### Version 1.3.7
|
||||||
|
* Fix multiple import
|
||||||
|
* Fix single frame optimization
|
||||||
|
|
||||||
|
###### Version 1.3.6
|
||||||
|
* Fix for scale very small vector items
|
||||||
|
* Big vector item optimization
|
||||||
|
* More yield instructions and extensions
|
||||||
|
|
||||||
|
###### Version 1.3.5
|
||||||
|
* Fix sprite import problem
|
||||||
|
|
||||||
|
###### Version 1.3.4
|
||||||
|
* Fix CS6 export problem
|
||||||
|
* Fix unity postprocessor problems
|
||||||
|
|
||||||
|
###### Version 1.3.3
|
||||||
|
* Fix undefined unusedItems in CS6
|
||||||
|
|
||||||
|
###### Version 1.3.2
|
||||||
|
* Fix bug custom scale export with small items optimization
|
||||||
|
|
||||||
|
###### Version 1.3.1
|
||||||
|
* Fix some Unity 5.5 deprecated functions
|
||||||
|
|
||||||
|
###### Version 1.3.0
|
||||||
|
* ETC separated alpha support
|
||||||
|
* Export animations with custom scale (for retina)
|
||||||
|
* New small vector scaled items optimization
|
||||||
|
|
||||||
|
###### Version 1.2.0
|
||||||
|
* Add Yield instructions for wait in coroutines(SwfWaitPlayStopped, SwfWaitRewindPlaying, SwfWaitStopPlaying)
|
||||||
|
* Add unscaled delta time support(for separate animations, groups of animations or for all)
|
||||||
|
* Fix guide type flash layers
|
||||||
|
* Some fixes for reconvert asset problem
|
||||||
|
|
||||||
|
###### Version 1.1.1
|
||||||
|
* Add conversion error by shape tween in CS6
|
||||||
|
* Fix life after death (problem about destroying with big lag by frame event)
|
||||||
|
|
||||||
|
###### Version 1.1.0
|
||||||
|
* Sequence separator is anchor frame label (not common frame label)
|
||||||
|
* SwfClip access to frame labels (currentLabelCount, GetCurrentFrameLabel)
|
||||||
|
* SwfClip events (OnChangeClipEvent, OnChangeSequenceEvent, OnChangeCurrentFrameEvent)
|
||||||
|
|
||||||
|
###### Version 1.0.0
|
||||||
|
* Initial asset store version
|
||||||
|
* Sources to dll
|
||||||
|
* Palette bitmaps support
|
||||||
|
|
||||||
|
###### Version 0.5.0
|
||||||
|
* Flash optimizer twicks
|
||||||
|
* Blending modes (except Alpha and Erase)
|
||||||
|
|
||||||
|
###### Version 0.4.0
|
||||||
|
* Clip groups
|
||||||
|
* Fix move assets bug
|
||||||
|
* Tint color for clips
|
||||||
|
* Animation API improvements
|
||||||
|
|
||||||
|
###### Version 0.3.0
|
||||||
|
* Preview for animation assets and clips
|
||||||
|
* Animation API improvements
|
||||||
|
* Memory optimizations
|
||||||
|
|
||||||
|
###### Version 0.2.0
|
||||||
|
* Export optimizations
|
||||||
|
* Export clips with export names
|
||||||
|
|
||||||
|
###### Version 0.1.0
|
||||||
|
* Initial alpha version
|
||||||
8
Assets/FlashTools/Docs/CHANGELOG.md.meta
Normal file
8
Assets/FlashTools/Docs/CHANGELOG.md.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 309e798efeb2741c6853f2402363a067
|
||||||
|
timeCreated: 1487174180
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
-------------------
|
|
||||||
-- Version 1.3.2 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Fix bug custom scale export with small items optimization
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 1.3.1 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Fix some Unity 5.5 deprecated functions
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 1.3.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
ETC separated alpha support
|
|
||||||
Export animations with custom scale (for retina)
|
|
||||||
New small vector scaled items optimization
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 1.2.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Add Yield instructions for wait in coroutines(SwfWaitPlayStopped, SwfWaitRewindPlaying, SwfWaitStopPlaying)
|
|
||||||
Add unscaled delta time support(for separate animations, groups of animations or for all)
|
|
||||||
Fix guide type flash layers
|
|
||||||
Some fixes for reconvert asset problem
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 1.1.1 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Add conversion error by shape tween in CS6
|
|
||||||
Fix life after death (problem about destroying with big lag by frame event)
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 1.1.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Sequence separator is anchor frame label (not common frame label)
|
|
||||||
SwfClip access to frame labels (currentLabelCount, GetCurrentFrameLabel)
|
|
||||||
SwfClip events (OnChangeClipEvent, OnChangeSequenceEvent, OnChangeCurrentFrameEvent)
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 1.0.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Initial asset store version
|
|
||||||
Sources to dll
|
|
||||||
Palette bitmaps support
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 0.5.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Flash optimizer twicks
|
|
||||||
Blending modes (except Alpha and Erase)
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 0.4.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Clip groups
|
|
||||||
Fix move assets bug
|
|
||||||
Tint color for clips
|
|
||||||
Animation API improvements
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 0.3.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Preview for animation assets and clips
|
|
||||||
Animation API improvements
|
|
||||||
Memory optimizations
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 0.2.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Export optimizations
|
|
||||||
Export clips with export names
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
-- Version 0.1.0 --
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Initial alpha version
|
|
||||||
33
Assets/FlashTools/Docs/README.md
Normal file
33
Assets/FlashTools/Docs/README.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
##### Flash Animation Toolset
|
||||||
|
|
||||||
|
Convert your flash animation for Unity easy!
|
||||||
|
|
||||||
|
* [Usage video](http://www.youtube.com/watch?v=uE_XRWZ5KHA)
|
||||||
|
|
||||||
|
* [Blog](http://matov.me)
|
||||||
|
* [Site](http://matov.me/flash-animation-toolset)
|
||||||
|
* [Web demo](http://matov.me/public/blog_share/flash_tools/web_demo)
|
||||||
|
* [User guide](http://matov.me/flash-animation-toolset-user-guide)
|
||||||
|
|
||||||
|
* [Trial version](https://www.assetstore.unity3d.com/#!/content/73896)
|
||||||
|
* [Full version](https://www.assetstore.unity3d.com/#!/content/73323)
|
||||||
|
|
||||||
|
###### Features
|
||||||
|
* Support all transformations like 'rotation', 'skew' and 'scale' (except 3D)
|
||||||
|
* Support all tweens(classic, motion and etc), keyframes and layers
|
||||||
|
* Support mask layers
|
||||||
|
* Support bitmap and vector graphics
|
||||||
|
* Support all clip color effects like 'brightness', 'tint', 'alpha' and etc
|
||||||
|
* Support most blending modes (all except Alpha and Erase)
|
||||||
|
* Simple runtime API for controlling your animations in Unity
|
||||||
|
* Automatic packing texture atlases of animations with different settings
|
||||||
|
* Great performance with zero allocations in update loop
|
||||||
|
* Frame labels to separate sequences in one timeline
|
||||||
|
* Export marked "for export" clips and main timeline
|
||||||
|
* Live preview of animations in the Unity editor
|
||||||
|
|
||||||
|
Supports Unity 5.3 and newer, both Personal and Pro. Full C# source code included.
|
||||||
|
|
||||||
|
Leave your rating for this Asset. It is very important for me and the development of the project :) Thank you!
|
||||||
|
|
||||||
|
Samples use "Creative Commons CC0 1.0 Universal License" animations from [Glitch game](http://www.glitchthegame.com/public-domain-game-art)
|
||||||
8
Assets/FlashTools/Docs/README.md.meta
Normal file
8
Assets/FlashTools/Docs/README.md.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 67cb565c063ff409697ad8b538d2a46a
|
||||||
|
timeCreated: 1487174181
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
-----------------------------
|
|
||||||
-- Flash Animation Toolset --
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
Convert your flash animation for Unity easy!
|
|
||||||
|
|
||||||
- Usage video "http://www.youtube.com/watch?v=uE_XRWZ5KHA"
|
|
||||||
|
|
||||||
- Blog "http://matov.me"
|
|
||||||
- Site "http://matov.me/flash-animation-toolset"
|
|
||||||
- Web demo "http://matov.me/public/blog_share/flash_tools/web_demo"
|
|
||||||
- User guide "http://matov.me/flash-animation-toolset-user-guide"
|
|
||||||
|
|
||||||
- Trial version https://www.assetstore.unity3d.com/#!/content/73896
|
|
||||||
- Full version https://www.assetstore.unity3d.com/#!/content/73323
|
|
||||||
|
|
||||||
Features
|
|
||||||
- Support all transformations like 'rotation', 'skew' and 'scale' (except 3D)
|
|
||||||
- Support all tweens(classic, motion and etc), keyframes and layers
|
|
||||||
- Support mask layers
|
|
||||||
- Support bitmap and vector graphics
|
|
||||||
- Support all clip color effects like 'brightness', 'tint', 'alpha' and etc
|
|
||||||
- Support most blending modes (all except Alpha and Erase)
|
|
||||||
- Simple runtime API for controlling your animations in Unity
|
|
||||||
- Automatic packing texture atlases of animations with different settings
|
|
||||||
- Great performance with zero allocations in update loop
|
|
||||||
- Frame labels to separate sequences in one timeline
|
|
||||||
- Export marked "for export" clips and main timeline
|
|
||||||
- Live preview of animations in the Unity editor
|
|
||||||
|
|
||||||
Supports Unity 5.3 and newer, both Personal and Pro. Full C# source code included.
|
|
||||||
|
|
||||||
Leave your rating for this Asset. It is very important for me and the development of the project :) Thank you!
|
|
||||||
|
|
||||||
Samples use "Creative Commons CC0 1.0 Universal License" animations from Glitch game "http://www.glitchthegame.com/public-domain-game-art"
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -18,22 +18,25 @@ namespace FlashTools.Examples {
|
|||||||
|
|
||||||
IEnumerator StartCoro(SwfClipController ctrl) {
|
IEnumerator StartCoro(SwfClipController ctrl) {
|
||||||
while ( true ) {
|
while ( true ) {
|
||||||
ctrl.Play(_fadeInSequence);
|
yield return ctrl.PlayAndWaitStopOrRewind(_fadeInSequence);
|
||||||
yield return new SwfWaitStopPlaying(ctrl);
|
|
||||||
|
|
||||||
for ( var i = 0; i < 3; ++i ) {
|
for ( var i = 0; i < 3; ++i ) {
|
||||||
var last_seq = ctrl.clip.sequence;
|
var idle_seq = GetRandomIdleSequence(ctrl);
|
||||||
do {
|
yield return ctrl.PlayAndWaitStopOrRewind(idle_seq);
|
||||||
var seq_index = Random.Range(0, _idleSequences.Length);
|
|
||||||
ctrl.Play(_idleSequences[seq_index]);
|
|
||||||
} while ( last_seq == ctrl.clip.sequence );
|
|
||||||
yield return new SwfWaitStopPlaying(ctrl);
|
|
||||||
}
|
}
|
||||||
|
yield return ctrl.PlayAndWaitStopOrRewind(_fadeOutSequence);
|
||||||
ctrl.Play(_fadeOutSequence);
|
|
||||||
yield return new SwfWaitStopPlaying(ctrl);
|
|
||||||
yield return new WaitForSeconds(2.0f);
|
yield return new WaitForSeconds(2.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string GetRandomIdleSequence(SwfClipController ctrl) {
|
||||||
|
var cur_seq = ctrl.clip.sequence;
|
||||||
|
do {
|
||||||
|
var seq_index = Random.Range(0, _idleSequences.Length);
|
||||||
|
var new_sequence = _idleSequences[seq_index];
|
||||||
|
if ( new_sequence != cur_seq ) {
|
||||||
|
return new_sequence;
|
||||||
|
}
|
||||||
|
} while ( true );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,10 +17,16 @@
|
|||||||
var ft = {
|
var ft = {
|
||||||
profile_mode : false,
|
profile_mode : false,
|
||||||
verbose_mode : false,
|
verbose_mode : false,
|
||||||
|
|
||||||
graphics_scale : 1.0,
|
graphics_scale : 1.0,
|
||||||
|
scale_precision : 0.01,
|
||||||
|
|
||||||
|
optimize_big_items : true,
|
||||||
optimize_small_items : true,
|
optimize_small_items : true,
|
||||||
optimize_static_items : true,
|
optimize_static_items : true,
|
||||||
optimize_single_graphics : true
|
optimize_single_graphics : true,
|
||||||
|
|
||||||
|
export_path_postfix : "_export"
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -220,6 +226,7 @@
|
|||||||
ft.profile_function(function() { ftdoc.remove_unused_items(doc); }, "Remove unused items");
|
ft.profile_function(function() { ftdoc.remove_unused_items(doc); }, "Remove unused items");
|
||||||
ft.profile_function(function() { ftdoc.prepare_all_bitmaps(doc); }, "Prepare all bitmaps");
|
ft.profile_function(function() { ftdoc.prepare_all_bitmaps(doc); }, "Prepare all bitmaps");
|
||||||
ft.profile_function(function() { ftdoc.unlock_all_timelines(doc); }, "Unlock all timelines");
|
ft.profile_function(function() { ftdoc.unlock_all_timelines(doc); }, "Unlock all timelines");
|
||||||
|
ft.profile_function(function() { ftdoc.calculate_item_scales(doc); }, "Calculate item scales");
|
||||||
ft.profile_function(function() { ftdoc.optimize_all_timelines(doc); }, "Optimize all timelines");
|
ft.profile_function(function() { ftdoc.optimize_all_timelines(doc); }, "Optimize all timelines");
|
||||||
ft.profile_function(function() { ftdoc.rasterize_all_shapes(doc); }, "Rasterize all shapes");
|
ft.profile_function(function() { ftdoc.rasterize_all_shapes(doc); }, "Rasterize all shapes");
|
||||||
ft.profile_function(function() { ftdoc.export_swf(doc); }, "Export swf");
|
ft.profile_function(function() { ftdoc.export_swf(doc); }, "Export swf");
|
||||||
@@ -228,8 +235,7 @@
|
|||||||
ftdoc.get_temp = function (doc) {
|
ftdoc.get_temp = function (doc) {
|
||||||
if (!ftdoc.hasOwnProperty("temp")) {
|
if (!ftdoc.hasOwnProperty("temp")) {
|
||||||
ftdoc["temp"] = {
|
ftdoc["temp"] = {
|
||||||
x_max_scales : {},
|
max_scales : {}
|
||||||
y_max_scales : {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ftdoc["temp"];
|
return ftdoc["temp"];
|
||||||
@@ -239,16 +245,15 @@
|
|||||||
ft.type_assert(doc, Document);
|
ft.type_assert(doc, Document);
|
||||||
ft.type_assert_if_defined(optional_item, LibraryItem);
|
ft.type_assert_if_defined(optional_item, LibraryItem);
|
||||||
var final_scale = ft.graphics_scale;
|
var final_scale = ft.graphics_scale;
|
||||||
if (optional_item && ft.optimize_small_items) {
|
if (optional_item && (ft.optimize_big_items || ft.optimize_small_items)) {
|
||||||
var item_name = optional_item.name;
|
var item_name = optional_item.name;
|
||||||
var x_max_scales = ftdoc.get_temp(doc).x_max_scales;
|
var max_scales = ftdoc.get_temp(doc).max_scales;
|
||||||
var y_max_scales = ftdoc.get_temp(doc).y_max_scales;
|
if (max_scales.hasOwnProperty(item_name)) {
|
||||||
if (x_max_scales.hasOwnProperty(item_name) && y_max_scales.hasOwnProperty(item_name)) {
|
var max_scale = max_scales[item_name];
|
||||||
var max_x_scale = x_max_scales[item_name];
|
var big_item = ft.optimize_big_items && (max_scale - ft.scale_precision > 1.0);
|
||||||
var max_y_scale = y_max_scales[item_name];
|
var small_item = ft.optimize_small_items && (max_scale + ft.scale_precision < 1.0);
|
||||||
var max_c_scale = Math.max(max_x_scale, max_y_scale);
|
if (big_item || small_item) {
|
||||||
if (max_c_scale < 1.0) {
|
final_scale *= max_scale;
|
||||||
final_scale *= max_c_scale;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -259,15 +264,25 @@
|
|||||||
ft.type_assert(doc, Document);
|
ft.type_assert(doc, Document);
|
||||||
ft.type_assert_if_defined(optional_item, LibraryItem);
|
ft.type_assert_if_defined(optional_item, LibraryItem);
|
||||||
var final_scale = ftdoc.calculate_item_final_scale(doc, optional_item);
|
var final_scale = ftdoc.calculate_item_final_scale(doc, optional_item);
|
||||||
if (ft.approximately(final_scale, 1.0, 0.01)) {
|
if (ft.approximately(final_scale, 1.0, ft.scale_precision)) {
|
||||||
doc.convertSelectionToBitmap();
|
doc.convertSelectionToBitmap();
|
||||||
} else {
|
} else {
|
||||||
var wrapper_item_name = ft.gen_unique_name();
|
var wrapper_item_name = ft.gen_unique_name();
|
||||||
var wrapper_item = doc.convertToSymbol("graphic", wrapper_item_name , "center");
|
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.timeline, final_scale);
|
||||||
|
var elem = doc.selection[0];
|
||||||
|
var elem_x = elem.x;
|
||||||
|
var elem_y = elem.y;
|
||||||
|
var elem_w = elem.width;
|
||||||
|
var elem_h = elem.height;
|
||||||
doc.scaleSelection(final_scale, final_scale);
|
doc.scaleSelection(final_scale, final_scale);
|
||||||
doc.convertSelectionToBitmap();
|
doc.convertSelectionToBitmap();
|
||||||
doc.scaleSelection(1.0 / final_scale, 1.0 / final_scale);
|
doc.scaleSelection(1.0 / final_scale, 1.0 / final_scale);
|
||||||
|
var new_elem = doc.selection[0];
|
||||||
|
new_elem.x = elem_x;
|
||||||
|
new_elem.y = elem_y;
|
||||||
|
new_elem.width = elem_w;
|
||||||
|
new_elem.height = elem_h;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -284,7 +299,7 @@
|
|||||||
ft.type_assert(doc, Document);
|
ft.type_assert(doc, Document);
|
||||||
return ft.combine_path(
|
return ft.combine_path(
|
||||||
ft.escape_path(doc.pathURI),
|
ft.escape_path(doc.pathURI),
|
||||||
"_export/");
|
ft.export_path_postfix + "/");
|
||||||
};
|
};
|
||||||
|
|
||||||
ftdoc.full_exit_edit_mode = function (doc) {
|
ftdoc.full_exit_edit_mode = function (doc) {
|
||||||
@@ -297,12 +312,14 @@
|
|||||||
ftdoc.remove_unused_items = function (doc) {
|
ftdoc.remove_unused_items = function (doc) {
|
||||||
ft.type_assert(doc, Document);
|
ft.type_assert(doc, Document);
|
||||||
var unused_items = doc.library.unusedItems;
|
var unused_items = doc.library.unusedItems;
|
||||||
ft.array_reverse_foreach(unused_items, function(item) {
|
if (unused_items && unused_items !== undefined) {
|
||||||
if (ft.verbose_mode) {
|
ft.array_reverse_foreach(unused_items, function(item) {
|
||||||
ft.trace_fmt("Remove unused item: {0}", item.name);
|
if (ft.verbose_mode) {
|
||||||
}
|
ft.trace_fmt("Remove unused item: {0}", item.name);
|
||||||
doc.library.deleteItem(item.name);
|
}
|
||||||
});
|
doc.library.deleteItem(item.name);
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ftdoc.unlock_all_timelines = function (doc) {
|
ftdoc.unlock_all_timelines = function (doc) {
|
||||||
@@ -310,14 +327,73 @@
|
|||||||
ftlib.unlock_all_timelines(doc, doc.library);
|
ftlib.unlock_all_timelines(doc, doc.library);
|
||||||
fttim.unlock(doc.getTimeline());
|
fttim.unlock(doc.getTimeline());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ftdoc.calculate_item_scales = function (doc) {
|
||||||
|
ft.type_assert(doc, Document);
|
||||||
|
|
||||||
|
var max_scales = ftdoc.get_temp(doc).max_scales;
|
||||||
|
|
||||||
|
var walk_by_timeline = function(timeline, func, acc) {
|
||||||
|
ft.type_assert(timeline, Timeline);
|
||||||
|
ft.type_assert(func, Function);
|
||||||
|
ft.array_foreach(timeline.layers, function (layer) {
|
||||||
|
ft.array_foreach(layer.frames, function (frame) {
|
||||||
|
ft.array_foreach(frame.elements, function (elem) {
|
||||||
|
walk_by_timeline(
|
||||||
|
elem.libraryItem.timeline,
|
||||||
|
func,
|
||||||
|
func(elem, acc));
|
||||||
|
}, fttim.is_symbol_instance);
|
||||||
|
}, fttim.is_keyframe);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var walk_by_library = function(lib, func, acc) {
|
||||||
|
ft.type_assert(lib, Library);
|
||||||
|
ft.type_assert(func, Function);
|
||||||
|
ft.array_foreach(lib.items, function (item) {
|
||||||
|
walk_by_timeline(item.timeline, func, acc)
|
||||||
|
}, ftlib.is_symbol_item);
|
||||||
|
};
|
||||||
|
|
||||||
|
var x_func = function(elem, acc) {
|
||||||
|
var elem_sx = elem.scaleX * acc;
|
||||||
|
var item_name = elem.libraryItem.name;
|
||||||
|
max_scales[item_name] = Math.max(
|
||||||
|
max_scales.hasOwnProperty(item_name) ? max_scales[item_name] : elem_sx,
|
||||||
|
elem_sx);
|
||||||
|
return elem_sx;
|
||||||
|
};
|
||||||
|
|
||||||
|
var y_func = function(elem, acc) {
|
||||||
|
var elem_sy = elem.scaleY * acc;
|
||||||
|
var item_name = elem.libraryItem.name;
|
||||||
|
max_scales[item_name] = Math.max(
|
||||||
|
max_scales.hasOwnProperty(item_name) ? max_scales[item_name] : elem_sy,
|
||||||
|
elem_sy);
|
||||||
|
return elem_sy;
|
||||||
|
};
|
||||||
|
|
||||||
|
walk_by_library(doc.library, x_func, 1.0);
|
||||||
|
walk_by_timeline(doc.getTimeline(), x_func, 1.0);
|
||||||
|
|
||||||
|
walk_by_library(doc.library, y_func, 1.0);
|
||||||
|
walk_by_timeline(doc.getTimeline(), y_func, 1.0);
|
||||||
|
|
||||||
|
if (ft.verbose_mode) {
|
||||||
|
for (var item_name in max_scales) {
|
||||||
|
var max_scale = max_scales.hasOwnProperty(item_name) ? max_scales[item_name] : 1.0;
|
||||||
|
if (max_scale - ft.scale_precision > 1.0) {
|
||||||
|
ft.trace_fmt("Big item for optimize: {0} - {1}", item_name, max_scale);
|
||||||
|
} else if (max_scale + ft.scale_precision < 1.0) {
|
||||||
|
ft.trace_fmt("Small item for optimize: {0} - {1}", item_name, max_scale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
ftdoc.optimize_all_timelines = function (doc) {
|
ftdoc.optimize_all_timelines = function (doc) {
|
||||||
ft.type_assert(doc, Document);
|
ft.type_assert(doc, Document);
|
||||||
if (ft.optimize_small_items) {
|
|
||||||
ft.profile_function(function () {
|
|
||||||
ftlib.optimize_small_items(doc, doc.library);
|
|
||||||
}, "Optimize small items");
|
|
||||||
}
|
|
||||||
if (ft.optimize_static_items) {
|
if (ft.optimize_static_items) {
|
||||||
ft.profile_function(function () {
|
ft.profile_function(function () {
|
||||||
ftlib.optimize_static_items(doc, doc.library);
|
ftlib.optimize_static_items(doc, doc.library);
|
||||||
@@ -414,72 +490,6 @@
|
|||||||
fttim.unlock(item.timeline);
|
fttim.unlock(item.timeline);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
ftlib.optimize_small_items = function (doc, library) {
|
|
||||||
ft.type_assert(doc, Document);
|
|
||||||
ft.type_assert(library, Library);
|
|
||||||
|
|
||||||
var x_max_scales = ftdoc.get_temp(doc).x_max_scales;
|
|
||||||
var y_max_scales = ftdoc.get_temp(doc).y_max_scales;
|
|
||||||
|
|
||||||
var walk_by_timeline = function(timeline, func, acc) {
|
|
||||||
ft.type_assert(timeline, Timeline);
|
|
||||||
ft.type_assert(func, Function);
|
|
||||||
ft.array_foreach(timeline.layers, function (layer) {
|
|
||||||
ft.array_foreach(layer.frames, function (frame) {
|
|
||||||
ft.array_foreach(frame.elements, function (elem) {
|
|
||||||
walk_by_timeline(
|
|
||||||
elem.libraryItem.timeline,
|
|
||||||
func,
|
|
||||||
func(elem, acc));
|
|
||||||
}, fttim.is_symbol_instance);
|
|
||||||
}, fttim.is_keyframe);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var walk_by_library = function(lib, func, acc) {
|
|
||||||
ft.type_assert(lib, Library);
|
|
||||||
ft.type_assert(func, Function);
|
|
||||||
ft.array_foreach(lib.items, function (item) {
|
|
||||||
walk_by_timeline(item.timeline, func, acc)
|
|
||||||
}, ftlib.is_symbol_item);
|
|
||||||
};
|
|
||||||
|
|
||||||
var x_func = function(elem, acc) {
|
|
||||||
var elem_sx = elem.scaleX * acc;
|
|
||||||
var item_name = elem.libraryItem.name;
|
|
||||||
x_max_scales[item_name] = Math.max(
|
|
||||||
x_max_scales.hasOwnProperty(item_name) ? x_max_scales[item_name] : elem_sx,
|
|
||||||
elem_sx);
|
|
||||||
return elem_sx;
|
|
||||||
};
|
|
||||||
|
|
||||||
var y_func = function(elem, acc) {
|
|
||||||
var elem_sy = elem.scaleY * acc;
|
|
||||||
var item_name = elem.libraryItem.name;
|
|
||||||
y_max_scales[item_name] = Math.max(
|
|
||||||
y_max_scales.hasOwnProperty(item_name) ? y_max_scales[item_name] : elem_sy,
|
|
||||||
elem_sy);
|
|
||||||
return elem_sy;
|
|
||||||
};
|
|
||||||
|
|
||||||
walk_by_library(library, x_func, 1.0);
|
|
||||||
walk_by_timeline(doc.getTimeline(), x_func, 1.0);
|
|
||||||
|
|
||||||
walk_by_library(library, y_func, 1.0);
|
|
||||||
walk_by_timeline(doc.getTimeline(), y_func, 1.0);
|
|
||||||
|
|
||||||
if (ft.verbose_mode) {
|
|
||||||
for (var item_name in x_max_scales) {
|
|
||||||
var max_x_scale = x_max_scales.hasOwnProperty(item_name) ? x_max_scales[item_name] : 1.0;
|
|
||||||
var max_y_scale = y_max_scales.hasOwnProperty(item_name) ? y_max_scales[item_name] : 1.0;
|
|
||||||
var max_c_scale = Math.max(max_x_scale, max_y_scale);
|
|
||||||
if (max_c_scale < 1.0) {
|
|
||||||
ft.trace_fmt("Small item for optimize: {0} - {1}", item_name, max_c_scale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ftlib.optimize_static_items = function (doc, library) {
|
ftlib.optimize_static_items = function (doc, library) {
|
||||||
ft.type_assert(doc, Document);
|
ft.type_assert(doc, Document);
|
||||||
@@ -554,6 +564,7 @@
|
|||||||
new_item_elem.transformX = 0;
|
new_item_elem.transformX = 0;
|
||||||
new_item_elem.transformY = 0;
|
new_item_elem.transformY = 0;
|
||||||
ftdoc.convert_selection_to_bitmap(doc, item);
|
ftdoc.convert_selection_to_bitmap(doc, item);
|
||||||
|
doc.exitEditMode();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
doc.exitEditMode();
|
doc.exitEditMode();
|
||||||
@@ -683,7 +694,7 @@
|
|||||||
ft.array_foreach(layer.frames, function (frame, frame_index) {
|
ft.array_foreach(layer.frames, function (frame, frame_index) {
|
||||||
ft.array_foreach(frame.elements, function (elem) {
|
ft.array_foreach(frame.elements, function (elem) {
|
||||||
var elem_filters = elem.filters;
|
var elem_filters = elem.filters;
|
||||||
if (Array.isArray(elem_filters)) {
|
if (elem_filters && elem_filters !== undefined) {
|
||||||
ft.array_foreach(elem_filters, function (elem_filter, filter_index) {
|
ft.array_foreach(elem_filters, function (elem_filter, filter_index) {
|
||||||
elem_filter.blurX *= scale;
|
elem_filter.blurX *= scale;
|
||||||
elem_filter.blurY *= scale;
|
elem_filter.blurY *= scale;
|
||||||
|
|||||||
@@ -42,8 +42,9 @@ namespace FTEditor.Editors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ReconvertAsset(SwfAsset asset) {
|
static void ReconvertAsset(SwfAsset asset) {
|
||||||
AssetDatabase.ImportAsset(
|
asset.Atlas = null;
|
||||||
AssetDatabase.GetAssetPath(asset));
|
EditorUtility.SetDirty(asset);
|
||||||
|
AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(asset));
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ using FTRuntime;
|
|||||||
|
|
||||||
namespace FTEditor.Postprocessors {
|
namespace FTEditor.Postprocessors {
|
||||||
class SwfAssetPostprocessor : AssetPostprocessor {
|
class SwfAssetPostprocessor : AssetPostprocessor {
|
||||||
static SwfEditorUtils.ProgressBar _progressBar = new SwfEditorUtils.ProgressBar();
|
static SwfEditorUtils.ProgressBar _progressBar = new SwfEditorUtils.ProgressBar();
|
||||||
static Queue<SwfAsset> _assetsForProcess = new Queue<SwfAsset>();
|
|
||||||
|
|
||||||
static void OnPostprocessAllAssets(
|
static void OnPostprocessAllAssets(
|
||||||
string[] imported_assets,
|
string[] imported_assets,
|
||||||
@@ -25,38 +24,28 @@ namespace FTEditor.Postprocessors {
|
|||||||
.Select(p => AssetDatabase.LoadAssetAtPath<SwfAsset>(p))
|
.Select(p => AssetDatabase.LoadAssetAtPath<SwfAsset>(p))
|
||||||
.Where(p => !!p);
|
.Where(p => !!p);
|
||||||
foreach ( var asset in assets ) {
|
foreach ( var asset in assets ) {
|
||||||
if ( !_assetsForProcess.Contains(asset) ) {
|
var asset_copy = asset;
|
||||||
_assetsForProcess.Enqueue(asset);
|
EditorApplication.delayCall += () => {
|
||||||
}
|
SwfAssetProcess(asset_copy);
|
||||||
}
|
AssetDatabase.SaveAssets();
|
||||||
if ( _assetsForProcess.Count > 0 ) {
|
};
|
||||||
EditorApplication.update += ProcessAfterImport;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ProcessAfterImport() {
|
|
||||||
EditorApplication.update -= ProcessAfterImport;
|
|
||||||
if ( _assetsForProcess.Count > 0 ) {
|
|
||||||
while ( _assetsForProcess.Count > 0 ) {
|
|
||||||
SwfAssetProcess(_assetsForProcess.Dequeue());
|
|
||||||
}
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SwfAssetProcess(SwfAsset asset) {
|
static void SwfAssetProcess(SwfAsset asset) {
|
||||||
try {
|
try {
|
||||||
_progressBar.UpdateTitle(asset.name);
|
if ( !asset.Atlas ) {
|
||||||
var new_data = ConfigureBitmaps(
|
_progressBar.UpdateTitle(asset.name);
|
||||||
asset,
|
var new_data = ConfigureBitmaps(
|
||||||
SwfEditorUtils.DecompressAsset<SwfAssetData>(asset.Data));
|
|
||||||
asset.Data = SwfEditorUtils.CompressAsset(new_data);
|
|
||||||
asset.Atlas = LoadAssetAtlas(asset);
|
|
||||||
if ( asset.Atlas ) {
|
|
||||||
ConfigureAtlas(asset);
|
|
||||||
ConfigureClips(
|
|
||||||
asset,
|
asset,
|
||||||
SwfEditorUtils.DecompressAsset<SwfAssetData>(asset.Data));
|
SwfEditorUtils.DecompressAsset<SwfAssetData>(asset.Data));
|
||||||
|
asset.Data = SwfEditorUtils.CompressAsset(new_data);
|
||||||
|
asset.Atlas = LoadAssetAtlas(asset);
|
||||||
|
if ( asset.Atlas ) {
|
||||||
|
ConfigureAtlas(asset);
|
||||||
|
ConfigureClips(asset, new_data);
|
||||||
|
}
|
||||||
|
EditorUtility.SetDirty(asset);
|
||||||
}
|
}
|
||||||
} catch ( Exception e ) {
|
} catch ( Exception e ) {
|
||||||
Debug.LogErrorFormat(
|
Debug.LogErrorFormat(
|
||||||
@@ -140,7 +129,6 @@ namespace FTEditor.Postprocessors {
|
|||||||
File.WriteAllBytes(atlas_path, atlas_info.Atlas.EncodeToPNG());
|
File.WriteAllBytes(atlas_path, atlas_info.Atlas.EncodeToPNG());
|
||||||
GameObject.DestroyImmediate(atlas_info.Atlas, true);
|
GameObject.DestroyImmediate(atlas_info.Atlas, true);
|
||||||
_progressBar.UpdateProgress("import atlas", 0.75f);
|
_progressBar.UpdateProgress("import atlas", 0.75f);
|
||||||
//AssetDatabase.Refresh();
|
|
||||||
AssetDatabase.ImportAsset(atlas_path);
|
AssetDatabase.ImportAsset(atlas_path);
|
||||||
return atlas_info.Rects;
|
return atlas_info.Rects;
|
||||||
}
|
}
|
||||||
@@ -209,7 +197,6 @@ namespace FTEditor.Postprocessors {
|
|||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
static void ConfigureAtlas(SwfAsset asset) {
|
static void ConfigureAtlas(SwfAsset asset) {
|
||||||
var atlas_path = AssetDatabase.GetAssetPath(asset.Atlas);
|
|
||||||
var atlas_importer = GetBitmapsAtlasImporter(asset);
|
var atlas_importer = GetBitmapsAtlasImporter(asset);
|
||||||
atlas_importer.textureType = TextureImporterType.Sprite;
|
atlas_importer.textureType = TextureImporterType.Sprite;
|
||||||
atlas_importer.spriteImportMode = SpriteImportMode.Single;
|
atlas_importer.spriteImportMode = SpriteImportMode.Single;
|
||||||
@@ -221,7 +208,7 @@ namespace FTEditor.Postprocessors {
|
|||||||
#else
|
#else
|
||||||
atlas_importer.textureFormat = SwfAtlasFormatToImporterFormat(asset.Settings.AtlasTextureFormat);
|
atlas_importer.textureFormat = SwfAtlasFormatToImporterFormat(asset.Settings.AtlasTextureFormat);
|
||||||
#endif
|
#endif
|
||||||
AssetDatabase.WriteImportSettingsIfDirty(atlas_path);
|
atlas_importer.SaveAndReimport();
|
||||||
}
|
}
|
||||||
|
|
||||||
static TextureImporter GetBitmapsAtlasImporter(SwfAsset asset) {
|
static TextureImporter GetBitmapsAtlasImporter(SwfAsset asset) {
|
||||||
@@ -325,8 +312,8 @@ namespace FTEditor.Postprocessors {
|
|||||||
var asset_atlas = AssetDatabase.LoadAssetAtPath<Sprite>(AssetDatabase.GetAssetPath(asset.Atlas));
|
var asset_atlas = AssetDatabase.LoadAssetAtPath<Sprite>(AssetDatabase.GetAssetPath(asset.Atlas));
|
||||||
clip_asset.Name = symbol.Name;
|
clip_asset.Name = symbol.Name;
|
||||||
clip_asset.Sprite = asset_atlas;
|
clip_asset.Sprite = asset_atlas;
|
||||||
clip_asset.AssetGUID = asset_guid;
|
|
||||||
clip_asset.FrameRate = data.FrameRate;
|
clip_asset.FrameRate = data.FrameRate;
|
||||||
|
clip_asset.AssetGUID = asset_guid;
|
||||||
clip_asset.Sequences = LoadClipSequences(asset, data, symbol);
|
clip_asset.Sequences = LoadClipSequences(asset, data, symbol);
|
||||||
EditorUtility.SetDirty(clip_asset);
|
EditorUtility.SetDirty(clip_asset);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ using FTSwfTools.SwfTypes;
|
|||||||
|
|
||||||
namespace FTEditor.Postprocessors {
|
namespace FTEditor.Postprocessors {
|
||||||
class SwfPostprocessor : AssetPostprocessor {
|
class SwfPostprocessor : AssetPostprocessor {
|
||||||
static SwfEditorUtils.ProgressBar _progressBar = new SwfEditorUtils.ProgressBar();
|
static SwfEditorUtils.ProgressBar _progressBar = new SwfEditorUtils.ProgressBar();
|
||||||
static Queue<string> _assetsForProcess = new Queue<string>();
|
|
||||||
|
|
||||||
static void OnPostprocessAllAssets(
|
static void OnPostprocessAllAssets(
|
||||||
string[] imported_assets,
|
string[] imported_assets,
|
||||||
@@ -33,23 +32,12 @@ namespace FTEditor.Postprocessors {
|
|||||||
EditorUtility.DisplayDialog(title, message, "Ok");
|
EditorUtility.DisplayDialog(title, message, "Ok");
|
||||||
} else {
|
} else {
|
||||||
foreach ( var swf_path in swf_paths ) {
|
foreach ( var swf_path in swf_paths ) {
|
||||||
if ( !_assetsForProcess.Contains(swf_path) ) {
|
var swf_path_copy = swf_path;
|
||||||
_assetsForProcess.Enqueue(swf_path);
|
EditorApplication.delayCall += () => {
|
||||||
}
|
SwfFileProcess(swf_path_copy);
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
if ( _assetsForProcess.Count > 0 ) {
|
|
||||||
EditorApplication.update += ProcessAfterImport;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ProcessAfterImport() {
|
|
||||||
EditorApplication.update -= ProcessAfterImport;
|
|
||||||
if ( _assetsForProcess.Count > 0 ) {
|
|
||||||
while ( _assetsForProcess.Count > 0 ) {
|
|
||||||
SwfFileProcess(_assetsForProcess.Dequeue());
|
|
||||||
}
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,8 +56,10 @@ namespace FTEditor.Postprocessors {
|
|||||||
static bool SafeLoadSwfAsset(string swf_path, SwfAsset swf_asset) {
|
static bool SafeLoadSwfAsset(string swf_path, SwfAsset swf_asset) {
|
||||||
try {
|
try {
|
||||||
_progressBar.UpdateTitle(Path.GetFileName(swf_path));
|
_progressBar.UpdateTitle(Path.GetFileName(swf_path));
|
||||||
var new_data = LoadSwfAssetData(swf_path);
|
var new_data = LoadSwfAssetData(swf_path);
|
||||||
swf_asset.Data = SwfEditorUtils.CompressAsset(new_data);
|
swf_asset.Data = SwfEditorUtils.CompressAsset(new_data);
|
||||||
|
swf_asset.Atlas = null;
|
||||||
|
EditorUtility.SetDirty(swf_asset);
|
||||||
return true;
|
return true;
|
||||||
} catch ( Exception e ) {
|
} catch ( Exception e ) {
|
||||||
Debug.LogErrorFormat(
|
Debug.LogErrorFormat(
|
||||||
|
|||||||
@@ -157,7 +157,6 @@ namespace FTEditor {
|
|||||||
asset = ScriptableObject.CreateInstance<T>();
|
asset = ScriptableObject.CreateInstance<T>();
|
||||||
if ( act(asset, true) ) {
|
if ( act(asset, true) ) {
|
||||||
AssetDatabase.CreateAsset(asset, asset_path);
|
AssetDatabase.CreateAsset(asset, asset_path);
|
||||||
AssetDatabase.ImportAsset(asset_path);
|
|
||||||
} else {
|
} else {
|
||||||
ScriptableObject.DestroyImmediate(asset);
|
ScriptableObject.DestroyImmediate(asset);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,6 @@ using FTRuntime.Internal;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace FTRuntime {
|
namespace FTRuntime {
|
||||||
#if UNITY_5_5_OR_NEWER
|
|
||||||
[PreferBinarySerialization]
|
|
||||||
#endif
|
|
||||||
public class SwfAsset : ScriptableObject {
|
public class SwfAsset : ScriptableObject {
|
||||||
[HideInInspector]
|
[HideInInspector]
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
|
|||||||
@@ -3,9 +3,6 @@ using FTRuntime.Internal;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace FTRuntime {
|
namespace FTRuntime {
|
||||||
#if UNITY_5_5_OR_NEWER
|
|
||||||
[PreferBinarySerialization]
|
|
||||||
#endif
|
|
||||||
public class SwfClipAsset : ScriptableObject {
|
public class SwfClipAsset : ScriptableObject {
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class SubMeshData {
|
public class SubMeshData {
|
||||||
|
|||||||
250
Assets/FlashTools/Scripts/FTRuntime/Yields/SwfWaitExtensions.cs
Normal file
250
Assets/FlashTools/Scripts/FTRuntime/Yields/SwfWaitExtensions.cs
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
namespace FTRuntime.Yields {
|
||||||
|
public static class SwfWaitExtensions {
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// WaitFor[Event]
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// <summary>Yield instruction for wait animation stop event</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop event</returns>
|
||||||
|
/// <param name="ctrl">The controller</param>
|
||||||
|
public static SwfWaitStopPlaying WaitForStopPlaying(
|
||||||
|
this SwfClipController ctrl)
|
||||||
|
{
|
||||||
|
return new SwfWaitStopPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Yield instruction for wait animation rewind event</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation rewind event</returns>
|
||||||
|
/// <param name="ctrl">The controller</param>
|
||||||
|
public static SwfWaitRewindPlaying WaitForRewindPlaying(
|
||||||
|
this SwfClipController ctrl)
|
||||||
|
{
|
||||||
|
return new SwfWaitRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Yield instruction for wait animation stop or rewind event</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop or rewind event</returns>
|
||||||
|
/// <param name="ctrl">The controller</param>
|
||||||
|
public static SwfWaitStopOrRewindPlaying WaitForStopOrRewindPlaying(
|
||||||
|
this SwfClipController ctrl)
|
||||||
|
{
|
||||||
|
return new SwfWaitStopOrRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Yield instruction for wait animation play event</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation play event</returns>
|
||||||
|
/// <param name="ctrl">The controller</param>
|
||||||
|
public static SwfWaitPlayStopped WaitForPlayStopped(
|
||||||
|
this SwfClipController ctrl)
|
||||||
|
{
|
||||||
|
return new SwfWaitPlayStopped(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// PlayAndWait[Event]
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// <summary>Play with specified rewind action</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="rewind">If set to <c>true</c> rewind animation to begin frame</param>
|
||||||
|
public static SwfWaitStopPlaying PlayAndWaitStop(
|
||||||
|
this SwfClipController ctrl, bool rewind)
|
||||||
|
{
|
||||||
|
ctrl.Play(rewind);
|
||||||
|
return WaitForStopPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and play controller with rewind</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
public static SwfWaitStopPlaying PlayAndWaitStop(
|
||||||
|
this SwfClipController ctrl, string sequence)
|
||||||
|
{
|
||||||
|
ctrl.Play(sequence);
|
||||||
|
return WaitForStopPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Play with specified rewind action</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="rewind">If set to <c>true</c> rewind animation to begin frame</param>
|
||||||
|
public static SwfWaitRewindPlaying PlayAndWaitRewind(
|
||||||
|
this SwfClipController ctrl, bool rewind)
|
||||||
|
{
|
||||||
|
ctrl.Play(rewind);
|
||||||
|
return WaitForRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and play controller with rewind</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
public static SwfWaitRewindPlaying PlayAndWaitRewind(
|
||||||
|
this SwfClipController ctrl, string sequence)
|
||||||
|
{
|
||||||
|
ctrl.Play(sequence);
|
||||||
|
return WaitForRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Play with specified rewind action</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop or rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="rewind">If set to <c>true</c> rewind animation to begin frame</param>
|
||||||
|
public static SwfWaitStopOrRewindPlaying PlayAndWaitStopOrRewind(
|
||||||
|
this SwfClipController ctrl, bool rewind)
|
||||||
|
{
|
||||||
|
ctrl.Play(rewind);
|
||||||
|
return WaitForStopOrRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and play controller with rewind</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop or rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
public static SwfWaitStopOrRewindPlaying PlayAndWaitStopOrRewind(
|
||||||
|
this SwfClipController ctrl, string sequence)
|
||||||
|
{
|
||||||
|
ctrl.Play(sequence);
|
||||||
|
return WaitForStopOrRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// GotoAndPlayAndWait[Event]
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// <summary>Changes the animation frame with plays it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitStopPlaying GotoAndPlayAndWaitStop(
|
||||||
|
this SwfClipController ctrl, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndPlay(frame);
|
||||||
|
return WaitForStopPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and frame with plays it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitStopPlaying GotoAndPlayAndWaitStop(
|
||||||
|
this SwfClipController ctrl, string sequence, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndPlay(sequence, frame);
|
||||||
|
return WaitForStopPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation frame with plays it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitRewindPlaying GotoAndPlayAndWaitRewind(
|
||||||
|
this SwfClipController ctrl, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndPlay(frame);
|
||||||
|
return WaitForRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and frame with plays it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitRewindPlaying GotoAndPlayAndWaitRewind(
|
||||||
|
this SwfClipController ctrl, string sequence, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndPlay(sequence, frame);
|
||||||
|
return WaitForRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation frame with plays it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop and rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitStopOrRewindPlaying GotoAndPlayAndWaitStopOrRewind(
|
||||||
|
this SwfClipController ctrl, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndPlay(frame);
|
||||||
|
return WaitForStopOrRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and frame with plays it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation stop and rewind event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitStopOrRewindPlaying GotoAndPlayAndWaitStopOrRewind(
|
||||||
|
this SwfClipController ctrl, string sequence, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndPlay(sequence, frame);
|
||||||
|
return WaitForStopOrRewindPlaying(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// StopAndWait[Event]
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// <summary>Stop with specified rewind action</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation play event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="rewind">If set to <c>true</c> rewind animation to begin frame</param>
|
||||||
|
public static SwfWaitPlayStopped StopAndWaitPlay(
|
||||||
|
this SwfClipController ctrl, bool rewind)
|
||||||
|
{
|
||||||
|
ctrl.Stop(rewind);
|
||||||
|
return WaitForPlayStopped(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and stop controller with rewind</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation play event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
public static SwfWaitPlayStopped StopAndWaitPlay(
|
||||||
|
this SwfClipController ctrl, string sequence)
|
||||||
|
{
|
||||||
|
ctrl.Stop(sequence);
|
||||||
|
return WaitForPlayStopped(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// GotoAndStopAndWait[Event]
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// <summary>Changes the animation frame with stops it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation play event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitPlayStopped GotoAndStopAndWaitPlay(
|
||||||
|
this SwfClipController ctrl, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndStop(frame);
|
||||||
|
return WaitForPlayStopped(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Changes the animation sequence and frame with stops it</summary>
|
||||||
|
/// <returns>Yield instruction for wait animation play event</returns>
|
||||||
|
/// <param name="ctrl">The clip controller</param>
|
||||||
|
/// <param name="sequence">The new sequence</param>
|
||||||
|
/// <param name="frame">The new current frame</param>
|
||||||
|
public static SwfWaitPlayStopped GotoAndStopAndWaitPlay(
|
||||||
|
this SwfClipController ctrl, string sequence, int frame)
|
||||||
|
{
|
||||||
|
ctrl.GotoAndStop(sequence, frame);
|
||||||
|
return WaitForPlayStopped(ctrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: da7412b1ce89b4952869f7a85515b954
|
||||||
|
timeCreated: 1487268103
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using System.Collections;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace FTRuntime.Yields {
|
namespace FTRuntime.Yields {
|
||||||
public class SwfWaitPlayStopped : IEnumerator {
|
public class SwfWaitPlayStopped : CustomYieldInstruction {
|
||||||
SwfClipController _waitCtrl;
|
SwfClipController _waitCtrl;
|
||||||
|
|
||||||
public SwfWaitPlayStopped(SwfClipController ctrl) {
|
public SwfWaitPlayStopped(SwfClipController ctrl) {
|
||||||
@@ -12,12 +12,20 @@ namespace FTRuntime.Yields {
|
|||||||
return Subscribe(ctrl);
|
return Subscribe(ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool keepWaiting {
|
||||||
|
get {
|
||||||
|
return _waitCtrl != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// Private
|
// Internal
|
||||||
//
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
SwfWaitPlayStopped Subscribe(SwfClipController ctrl) {
|
SwfWaitPlayStopped Subscribe(SwfClipController ctrl) {
|
||||||
(this as IEnumerator).Reset();
|
Unsubscribe();
|
||||||
if ( ctrl ) {
|
if ( ctrl ) {
|
||||||
_waitCtrl = ctrl;
|
_waitCtrl = ctrl;
|
||||||
ctrl.OnPlayStoppedEvent += OnPlayStopped;
|
ctrl.OnPlayStoppedEvent += OnPlayStopped;
|
||||||
@@ -25,27 +33,15 @@ namespace FTRuntime.Yields {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPlayStopped(SwfClipController ctrl) {
|
void Unsubscribe() {
|
||||||
(this as IEnumerator).Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// IEnumerator
|
|
||||||
//
|
|
||||||
|
|
||||||
bool IEnumerator.MoveNext() {
|
|
||||||
return _waitCtrl != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void IEnumerator.Reset() {
|
|
||||||
if ( _waitCtrl != null ) {
|
if ( _waitCtrl != null ) {
|
||||||
_waitCtrl.OnPlayStoppedEvent -= OnPlayStopped;
|
_waitCtrl.OnPlayStoppedEvent -= OnPlayStopped;
|
||||||
_waitCtrl = null;
|
_waitCtrl = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object IEnumerator.Current {
|
void OnPlayStopped(SwfClipController ctrl) {
|
||||||
get { return null; }
|
Unsubscribe();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using System.Collections;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace FTRuntime.Yields {
|
namespace FTRuntime.Yields {
|
||||||
public class SwfWaitRewindPlaying : IEnumerator {
|
public class SwfWaitRewindPlaying : CustomYieldInstruction {
|
||||||
SwfClipController _waitCtrl;
|
SwfClipController _waitCtrl;
|
||||||
|
|
||||||
public SwfWaitRewindPlaying(SwfClipController ctrl) {
|
public SwfWaitRewindPlaying(SwfClipController ctrl) {
|
||||||
@@ -12,12 +12,20 @@ namespace FTRuntime.Yields {
|
|||||||
return Subscribe(ctrl);
|
return Subscribe(ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool keepWaiting {
|
||||||
|
get {
|
||||||
|
return _waitCtrl != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// Private
|
// Internal
|
||||||
//
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
SwfWaitRewindPlaying Subscribe(SwfClipController ctrl) {
|
SwfWaitRewindPlaying Subscribe(SwfClipController ctrl) {
|
||||||
(this as IEnumerator).Reset();
|
Unsubscribe();
|
||||||
if ( ctrl ) {
|
if ( ctrl ) {
|
||||||
_waitCtrl = ctrl;
|
_waitCtrl = ctrl;
|
||||||
ctrl.OnRewindPlayingEvent += OnRewindPlaying;
|
ctrl.OnRewindPlayingEvent += OnRewindPlaying;
|
||||||
@@ -25,27 +33,15 @@ namespace FTRuntime.Yields {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnRewindPlaying(SwfClipController ctrl) {
|
void Unsubscribe() {
|
||||||
(this as IEnumerator).Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// IEnumerator
|
|
||||||
//
|
|
||||||
|
|
||||||
bool IEnumerator.MoveNext() {
|
|
||||||
return _waitCtrl != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void IEnumerator.Reset() {
|
|
||||||
if ( _waitCtrl != null ) {
|
if ( _waitCtrl != null ) {
|
||||||
_waitCtrl.OnRewindPlayingEvent -= OnRewindPlaying;
|
_waitCtrl.OnRewindPlayingEvent -= OnRewindPlaying;
|
||||||
_waitCtrl = null;
|
_waitCtrl = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object IEnumerator.Current {
|
void OnRewindPlaying(SwfClipController ctrl) {
|
||||||
get { return null; }
|
Unsubscribe();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace FTRuntime.Yields {
|
||||||
|
public class SwfWaitStopOrRewindPlaying : CustomYieldInstruction {
|
||||||
|
SwfClipController _waitCtrl;
|
||||||
|
|
||||||
|
public SwfWaitStopOrRewindPlaying(SwfClipController ctrl) {
|
||||||
|
Subscribe(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SwfWaitStopOrRewindPlaying Reuse(SwfClipController ctrl) {
|
||||||
|
return Subscribe(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool keepWaiting {
|
||||||
|
get {
|
||||||
|
return _waitCtrl != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Internal
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
SwfWaitStopOrRewindPlaying Subscribe(SwfClipController ctrl) {
|
||||||
|
Unsubscribe();
|
||||||
|
if ( ctrl ) {
|
||||||
|
_waitCtrl = ctrl;
|
||||||
|
ctrl.OnStopPlayingEvent += OnStopOrRewindPlaying;
|
||||||
|
ctrl.OnRewindPlayingEvent += OnStopOrRewindPlaying;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Unsubscribe() {
|
||||||
|
if ( _waitCtrl != null ) {
|
||||||
|
_waitCtrl.OnStopPlayingEvent -= OnStopOrRewindPlaying;
|
||||||
|
_waitCtrl.OnRewindPlayingEvent -= OnStopOrRewindPlaying;
|
||||||
|
_waitCtrl = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnStopOrRewindPlaying(SwfClipController ctrl) {
|
||||||
|
Unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e7fb55d9b749a4fae9c1598651878ea9
|
||||||
|
timeCreated: 1487272051
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using System.Collections;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace FTRuntime.Yields {
|
namespace FTRuntime.Yields {
|
||||||
public class SwfWaitStopPlaying : IEnumerator {
|
public class SwfWaitStopPlaying : CustomYieldInstruction {
|
||||||
SwfClipController _waitCtrl;
|
SwfClipController _waitCtrl;
|
||||||
|
|
||||||
public SwfWaitStopPlaying(SwfClipController ctrl) {
|
public SwfWaitStopPlaying(SwfClipController ctrl) {
|
||||||
@@ -12,12 +12,20 @@ namespace FTRuntime.Yields {
|
|||||||
return Subscribe(ctrl);
|
return Subscribe(ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool keepWaiting {
|
||||||
|
get {
|
||||||
|
return _waitCtrl != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// Private
|
// Internal
|
||||||
//
|
//
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
SwfWaitStopPlaying Subscribe(SwfClipController ctrl) {
|
SwfWaitStopPlaying Subscribe(SwfClipController ctrl) {
|
||||||
(this as IEnumerator).Reset();
|
Unsubscribe();
|
||||||
if ( ctrl ) {
|
if ( ctrl ) {
|
||||||
_waitCtrl = ctrl;
|
_waitCtrl = ctrl;
|
||||||
ctrl.OnStopPlayingEvent += OnStopPlaying;
|
ctrl.OnStopPlayingEvent += OnStopPlaying;
|
||||||
@@ -25,27 +33,15 @@ namespace FTRuntime.Yields {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnStopPlaying(SwfClipController ctrl) {
|
void Unsubscribe() {
|
||||||
(this as IEnumerator).Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// IEnumerator
|
|
||||||
//
|
|
||||||
|
|
||||||
bool IEnumerator.MoveNext() {
|
|
||||||
return _waitCtrl != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void IEnumerator.Reset() {
|
|
||||||
if ( _waitCtrl != null ) {
|
if ( _waitCtrl != null ) {
|
||||||
_waitCtrl.OnStopPlayingEvent -= OnStopPlaying;
|
_waitCtrl.OnStopPlayingEvent -= OnStopPlaying;
|
||||||
_waitCtrl = null;
|
_waitCtrl = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object IEnumerator.Current {
|
void OnStopPlaying(SwfClipController ctrl) {
|
||||||
get { return null; }
|
Unsubscribe();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
<DefineConstants>FT_VERSION_DEMO</DefineConstants>
|
<DefineConstants>FT_VERSION_DEMO</DefineConstants>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DocumentationFile>..\..\Assets\FlashTools\Docs\FTRuntime.xml</DocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_FULL|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_FULL|AnyCPU' ">
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
@@ -26,6 +27,7 @@
|
|||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
<DefineConstants>FT_VERSION_FULL</DefineConstants>
|
<DefineConstants>FT_VERSION_FULL</DefineConstants>
|
||||||
|
<DocumentationFile>..\..\Assets\FlashTools\Docs\FTRuntime.xml</DocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -78,12 +80,18 @@
|
|||||||
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Internal\SwfUtils.cs.meta">
|
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Internal\SwfUtils.cs.meta">
|
||||||
<Link>FTRuntime\Internal\SwfUtils.cs.meta</Link>
|
<Link>FTRuntime\Internal\SwfUtils.cs.meta</Link>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitExtensions.cs.meta">
|
||||||
|
<Link>FTRuntime\Yields\SwfWaitExtensions.cs.meta</Link>
|
||||||
|
</None>
|
||||||
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitPlayStopped.cs.meta">
|
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitPlayStopped.cs.meta">
|
||||||
<Link>FTRuntime\Yields\SwfWaitPlayStopped.cs.meta</Link>
|
<Link>FTRuntime\Yields\SwfWaitPlayStopped.cs.meta</Link>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitRewindPlaying.cs.meta">
|
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitRewindPlaying.cs.meta">
|
||||||
<Link>FTRuntime\Yields\SwfWaitRewindPlaying.cs.meta</Link>
|
<Link>FTRuntime\Yields\SwfWaitRewindPlaying.cs.meta</Link>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitStopOrRewindPlaying.cs.meta">
|
||||||
|
<Link>FTRuntime\Yields\SwfWaitStopOrRewindPlaying.cs.meta</Link>
|
||||||
|
</None>
|
||||||
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitStopPlaying.cs.meta">
|
<None Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitStopPlaying.cs.meta">
|
||||||
<Link>FTRuntime\Yields\SwfWaitStopPlaying.cs.meta</Link>
|
<Link>FTRuntime\Yields\SwfWaitStopPlaying.cs.meta</Link>
|
||||||
</None>
|
</None>
|
||||||
@@ -119,12 +127,18 @@
|
|||||||
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Internal\SwfUtils.cs">
|
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Internal\SwfUtils.cs">
|
||||||
<Link>FTRuntime\Internal\SwfUtils.cs</Link>
|
<Link>FTRuntime\Internal\SwfUtils.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitExtensions.cs">
|
||||||
|
<Link>FTRuntime\Yields\SwfWaitExtensions.cs</Link>
|
||||||
|
</Compile>
|
||||||
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitPlayStopped.cs">
|
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitPlayStopped.cs">
|
||||||
<Link>FTRuntime\Yields\SwfWaitPlayStopped.cs</Link>
|
<Link>FTRuntime\Yields\SwfWaitPlayStopped.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitRewindPlaying.cs">
|
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitRewindPlaying.cs">
|
||||||
<Link>FTRuntime\Yields\SwfWaitRewindPlaying.cs</Link>
|
<Link>FTRuntime\Yields\SwfWaitRewindPlaying.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitStopOrRewindPlaying.cs">
|
||||||
|
<Link>FTRuntime\Yields\SwfWaitStopOrRewindPlaying.cs</Link>
|
||||||
|
</Compile>
|
||||||
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitStopPlaying.cs">
|
<Compile Include="..\..\Assets\FlashTools\Scripts\FTRuntime\Yields\SwfWaitStopPlaying.cs">
|
||||||
<Link>FTRuntime\Yields\SwfWaitStopPlaying.cs</Link>
|
<Link>FTRuntime\Yields\SwfWaitStopPlaying.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<Properties StartupItem="FTEditor/FTEditor.csproj">
|
<Properties StartupItem="FTEditor/FTEditor.csproj">
|
||||||
<MonoDevelop.Ide.Workbench />
|
<MonoDevelop.Ide.Workbench />
|
||||||
<MonoDevelop.Ide.Workspace ActiveConfiguration="Release_FULL" PreferredExecutionTarget="Unity.Instance.Unity Editor" />
|
<MonoDevelop.Ide.Workspace ActiveConfiguration="Release_DEMO" PreferredExecutionTarget="Unity.Instance.Unity Editor" />
|
||||||
<MonoDevelop.Ide.DebuggingService.Breakpoints>
|
<MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||||
<BreakpointStore />
|
<BreakpointStore />
|
||||||
</MonoDevelop.Ide.DebuggingService.Breakpoints>
|
</MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ EditorBuildSettings:
|
|||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Scenes:
|
m_Scenes:
|
||||||
- enabled: 1
|
- enabled: 1
|
||||||
path: Assets/DevTests/Scenes/Scene.unity
|
path: Assets/DevTests/Scene.unity
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ GraphicsSettings:
|
|||||||
- {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0}
|
- {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_PreloadedShaders: []
|
m_PreloadedShaders: []
|
||||||
m_ShaderSettings:
|
m_ShaderSettings:
|
||||||
useScreenSpaceShadows: 0
|
useScreenSpaceShadows: 1
|
||||||
m_BuildTargetShaderSettings: []
|
m_BuildTargetShaderSettings: []
|
||||||
m_LightmapStripping: 0
|
m_LightmapStripping: 0
|
||||||
m_FogStripping: 0
|
m_FogStripping: 0
|
||||||
|
|||||||
Reference in New Issue
Block a user