sequences separate by anchors now

This commit is contained in:
2016-12-03 17:40:52 +07:00
parent e4448dacdc
commit 670b2841fd
5 changed files with 20 additions and 10 deletions

View File

@@ -294,10 +294,10 @@ namespace FTEditor.Postprocessors {
if ( IsValidAssetsForFrame(asset, symbol) ) {
foreach ( var frame in symbol.Frames ) {
var baked_frame = BakeClipFrame(asset, data, frame);
if ( !string.IsNullOrEmpty(frame.Name) &&
(sequences.Count < 1 || sequences.Last().Name != frame.Name) )
if ( !string.IsNullOrEmpty(frame.Anchor) &&
(sequences.Count < 1 || sequences.Last().Name != frame.Anchor) )
{
sequences.Add(new SwfClipAsset.Sequence{Name = frame.Name});
sequences.Add(new SwfClipAsset.Sequence{Name = frame.Anchor});
} else if ( sequences.Count < 1 ) {
sequences.Add(new SwfClipAsset.Sequence{Name = "Default"});
}

View File

@@ -111,8 +111,11 @@ namespace FTEditor.Postprocessors {
static SwfFrameData LoadSymbolFrameData(
SwfLibrary library, SwfDisplayList display_list)
{
var frame = new SwfFrameData();
frame.Name = display_list.FrameName;
var frame = new SwfFrameData{
Anchor = display_list.FrameAnchors.Count > 0
? display_list.FrameAnchors[0]
: string.Empty,
Labels = new List<string>(display_list.FrameLabels)};
return AddDisplayListToFrame(
library,
display_list,

View File

@@ -205,7 +205,8 @@ namespace FTEditor {
[System.Serializable]
class SwfFrameData {
public string Name = string.Empty;
public string Anchor = string.Empty;
public List<string> Labels = new List<string>();
public List<SwfInstanceData> Instances = new List<SwfInstanceData>();
}

View File

@@ -108,7 +108,8 @@ namespace FTSwfTools {
}
public class SwfDisplayList {
public string FrameName = string.Empty;
public DisplayInstances Instances = new DisplayInstances();
public DisplayInstances Instances = new DisplayInstances();
public List<string> FrameLabels = new List<string>();
public List<string> FrameAnchors = new List<string>();
}
}

View File

@@ -17,7 +17,8 @@ namespace FTSwfTools {
}
public bool NextFrame(List<SwfTagBase> tags, SwfDisplayList dl) {
dl.FrameName = string.Empty;
dl.FrameLabels.Clear();
dl.FrameAnchors.Clear();
while ( CurrentTag < tags.Count ) {
var tag = tags[CurrentTag++];
tag.AcceptVistor(this, dl);
@@ -171,7 +172,11 @@ namespace FTSwfTools {
}
public SwfDisplayList Visit(FrameLabelTag tag, SwfDisplayList dl) {
dl.FrameName = tag.Name.Trim();
if ( tag.AnchorFlag == 0 ) {
dl.FrameLabels.Add(tag.Name.Trim());
} else {
dl.FrameAnchors.Add(tag.Name.Trim());
}
return dl;
}