Made Initialize safe to call at any time.

This commit is contained in:
NathanSweet 2013-10-23 23:18:38 +02:00
parent 2e46d250e5
commit fc4934708f
4 changed files with 31 additions and 3 deletions

View File

@ -60,7 +60,9 @@ public class SkeletonAnimation : SkeletonComponent {
}
override public void Initialize () {
base.Initialize(); // Call overridden method to initialize the skeleton.
if (Initialized) return;
base.Initialize();
state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData());
if (_animationName != null && _animationName.Length > 0) state.SetAnimation(0, _animationName, loop);

View File

@ -58,6 +58,16 @@ public class SkeletonComponent : MonoBehaviour {
private List<Material> submeshMaterials = new List<Material>();
private List<Submesh> submeshes = new List<Submesh>();
/// <summary>False if Initialize needs to be called.</summary>
public bool Initialized {
get {
if (skeletonDataAsset == null) return true;
SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false);
if (skeletonData == null) return true;
return skeleton != null && skeleton.Data == skeletonData;
}
}
public virtual void Clear () {
meshFilter.sharedMesh = null;
DestroyImmediate(mesh);
@ -69,6 +79,8 @@ public class SkeletonComponent : MonoBehaviour {
}
public virtual void Initialize () {
if (Initialized) return;
meshFilter = GetComponent<MeshFilter>();
mesh1 = newMesh();
mesh2 = newMesh();

View File

@ -60,8 +60,10 @@ public class SkeletonAnimation : SkeletonComponent {
}
override public void Initialize () {
base.Initialize(); // Call overridden method to initialize the skeleton.
if (Initialized) return;
base.Initialize();
state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData());
if (_animationName != null && _animationName.Length > 0) state.SetAnimation(0, _animationName, loop);
}

View File

@ -57,6 +57,16 @@ public class SkeletonComponent : MonoBehaviour {
private Material[] sharedMaterials = new Material[0];
private List<Material> submeshMaterials = new List<Material>();
private List<Submesh> submeshes = new List<Submesh>();
/// <summary>False if Initialize needs to be called.</summary>
public bool Initialized {
get {
if (skeletonDataAsset == null) return true;
SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false);
if (skeletonData == null) return true;
return skeleton != null && skeleton.Data == skeletonData;
}
}
public virtual void Clear () {
meshFilter.sharedMesh = null;
@ -69,6 +79,8 @@ public class SkeletonComponent : MonoBehaviour {
}
public virtual void Initialize () {
if (Initialized) return;
meshFilter = GetComponent<MeshFilter>();
mesh1 = newMesh();
mesh2 = newMesh();