Ejemplo n.º 1
0
	//-------------------------------------------------------------------------
	bool SetUnity43SpriteRendererToActiveFrameIndexSprite(ref UnityEngine.SpriteRenderer unity43SpriteRenderer, AnimatedColliderParameters animatedColliderParams, int spriteIndex) {
		if (animatedColliderParams == null || animatedColliderParams.SpriteFrames == null || animatedColliderParams.SpriteFrames.Length == 0) {
			return false;
		}
		unity43SpriteRenderer.sprite = animatedColliderParams.SpriteFrames[spriteIndex];
		return true;
	}
Ejemplo n.º 2
0
	//-------------------------------------------------------------------------
	bool ReadUnity43SpriteAnimatorParams(UnityEngine.Animator unity43Animator, ref AnimatedColliderParameters animatedColliderParams, ref RegionIndependentParameters regionIndependentParams) {
		
#if UNITY_5_AND_LATER
		UnityEditor.Animations.AnimatorController controller = (UnityEditor.Animations.AnimatorController) unity43Animator.runtimeAnimatorController;
#else
		UnityEditorInternal.AnimatorController controller = (UnityEditorInternal.AnimatorController) unity43Animator.runtimeAnimatorController;
#endif
		if (!controller) {
			regionIndependentParams.NumCollidersNeeded = 1;
			return false;
		}
		// Note: we have to maintain the order to keep the spriteRef and spriteID indices linked.
		// Thus we don't use a HashSet for duplicate prevention but a list.Contains() call.
		List<string> spriteIDs = new List<string>();
		List<UnityEngine.Sprite> spriteFrames = new List<Sprite>();

		AnimationClip[] clips = AnimationUtility.GetAnimationClips(this.gameObject);
		for (int index = 0; index < clips.Length; ++index) {
			AnimationClip clip = clips[index];

			EditorCurveBinding[] bindings = AnimationUtility.GetObjectReferenceCurveBindings(clip);
			if (bindings != null) {
				for (int bindingIndex = 0; bindingIndex < bindings.Length; ++bindingIndex) {
					EditorCurveBinding binding = bindings[bindingIndex];
					if (binding.isPPtrCurve) {
						ObjectReferenceKeyframe[] references = AnimationUtility.GetObjectReferenceCurve(clip, binding);
						for (int refIndex = 0; refIndex < references.Length; ++refIndex) {
							ObjectReferenceKeyframe reference = references[refIndex];
							UnityEngine.Sprite spriteRef = (UnityEngine.Sprite) reference.value;
							if (spriteRef != null) {
								string spriteID = spriteRef.name;
								if (!spriteIDs.Contains(spriteID)) {
									spriteFrames.Add(spriteRef);
									spriteIDs.Add(spriteID);
								}
							}
						}
					}
				}
			}
		}
		animatedColliderParams.SpriteFrames =  spriteFrames.ToArray();
		animatedColliderParams.ColliderIDStrings =  spriteIDs.ToArray();
		regionIndependentParams.NumCollidersNeeded = animatedColliderParams.ColliderIDStrings.Length;
		return true;
	}