mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2025-12-16 14:11:19 +07:00
safe update controllers
This commit is contained in:
@@ -62,5 +62,9 @@ namespace FlashTools.Internal {
|
||||
_list.Clear();
|
||||
_dict.Clear();
|
||||
}
|
||||
|
||||
public void AssignTo(SwfList<T> list) {
|
||||
_list.AssignTo(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,5 +106,22 @@ namespace FlashTools.Internal {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void AssignTo(SwfList<T> list) {
|
||||
if ( list._data.Length < _size ) {
|
||||
var new_data = new T[_size * 2];
|
||||
Array.Copy(_data, new_data, _size);
|
||||
list._data = new_data;
|
||||
list._size = _size;
|
||||
} else {
|
||||
if ( _size < list._size ) {
|
||||
Array.Clear(list._data, _size, list._size - _size);
|
||||
}
|
||||
if ( _size > 0 ) {
|
||||
Array.Copy(_data, list._data, _size);
|
||||
}
|
||||
list._size = _size;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ namespace FlashTools {
|
||||
|
||||
SwfAssocList<SwfClip> _clips = new SwfAssocList<SwfClip>();
|
||||
SwfAssocList<SwfClipController> _controllers = new SwfAssocList<SwfClipController>();
|
||||
SwfList<SwfClipController> _safeUpdates = new SwfList<SwfClipController>();
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
@@ -92,8 +93,12 @@ namespace FlashTools {
|
||||
|
||||
void UpdateControllers() {
|
||||
var dt = Time.deltaTime;
|
||||
for ( int i = 0, e = _controllers.Count; i < e; ++i ) {
|
||||
_controllers[i].InternalUpdate(dt);
|
||||
_controllers.AssignTo(_safeUpdates);
|
||||
for ( int i = 0, e = _safeUpdates.Count; i < e; ++i ) {
|
||||
var ctrl = _safeUpdates[i];
|
||||
if ( ctrl ) {
|
||||
ctrl.InternalUpdate(dt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user