예제 #1
0
 private void Start()
 {
     spineAnimationState = skeletonAnimation.AnimationState;
     startPosition       = transform.position;
     myRB         = Player.GetPlayerComponent <Rigidbody2D>();
     currentState = run;
 }
                private void Start()
                {
                    _spineAnimator = GetComponent <SpineAnimator>();

                    ISkeletonAnimation s = _spineAnimator.GetSkeletonAnimation() as ISkeletonAnimation;

                    if (s != null)
                    {
                        s.UpdateLocal += HandleUpdateLocal;
                    }

                    IAnimationStateComponent sa = _spineAnimator.GetSkeletonAnimation() as IAnimationStateComponent;

                    if (sa != null)
                    {
                        this._state = sa.AnimationState;
                    }

                    SetSourceBone(_sourceBoneName);

                    Skeleton skeleton = s.Skeleton;

                    _siblingBones.Clear();
                    foreach (string bn in _siblingBoneNames)
                    {
                        Bone b = skeleton.FindBone(bn);
                        if (b != null)
                        {
                            _siblingBones.Add(b);
                        }
                    }
                }
예제 #3
0
    private void MotionCompleteCB(Spine.AnimationState state, int trackIndex, int loopCount)
    {
        switch ((eProcessType)trackIndex)
        {
        case eProcessType.Type_Attack:
            switch (enemyStatus.table.attackType)
            {
            case eEnemyAttackType.Type_Range:
                SetShot();
                break;

            case eEnemyAttackType.Type_Suicide:
                Attack();
                if (PoolManager.Instance != null)
                {
                    PoolManager.Instance.AddEnemyPool(this);
                }
                break;

            case eEnemyAttackType.Type_Slow:
                break;

            default:
                if (SoundManager.Instance != null)
                {
                    SoundManager.Instance.PlayAudioClip(enemyStatus.table.soundPathArray[(int)eEnemySoundType.Type_Attack]);
                }
                Attack();
                break;
            }

            break;
        }
    }
예제 #4
0
 void OnAnimaEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
 {
     if (Event != null)
     {
         Event(state.GetCurrent(trackIndex).Animation.Name, e);
     }
 }
예제 #5
0
 private void OnAnimationEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
 {
     if (this.OnOpenAnimationEvent != null)
     {
         this.OnOpenAnimationEvent(e);
     }
 }
예제 #6
0
        public override void OnEnter()
        {
            GameObject go = Fsm.GetOwnerDefaultTarget(spineGameObject);

            if (go != null)
            {
                var component = go.GetComponent <IAnimationStateComponent>();
                if (component != null)
                {
                    state = component.AnimationState;

                    if (state != null)
                    {
                        var skeletonComponent = component as ISkeletonComponent;
                        var skeletonData      = skeletonComponent.Skeleton.Data;
                        eventData = skeletonData.FindEvent(eventName);
                        if (eventData != null)
                        {
                            state.Event -= HandleEvent;
                            state.Event += HandleEvent;
                        }
                    }
                    else
                    {
                        Debug.LogWarning("Not valid animation skeleton data!");
                    }
                }
            }
        }
예제 #7
0
 public WaitForSpineEvent NowWaitFor(Spine.AnimationState state, string eventName, bool unsubscribeAfterFiring = true)
 {
     ((IEnumerator)this).Reset();
     this.Clear(state);
     this.SubscribeByName(state, eventName, unsubscribeAfterFiring);
     return(this);
 }
예제 #8
0
 public void Initialize(bool overwrite)
 {
     if ((!this.IsValid || overwrite) && (this.skeletonDataAsset != null))
     {
         Spine.SkeletonData skeletonData = this.skeletonDataAsset.GetSkeletonData(false);
         if ((skeletonData != null) && ((this.skeletonDataAsset.atlasAssets.Length > 0) && (this.skeletonDataAsset.atlasAssets[0].materials.Length > 0)))
         {
             this.state = new Spine.AnimationState(this.skeletonDataAsset.GetAnimationStateData());
             if (this.state == null)
             {
                 this.Clear();
             }
             else
             {
                 Spine.Skeleton skeleton = new Spine.Skeleton(skeletonData)
                 {
                     flipX = this.initialFlipX,
                     flipY = this.initialFlipY
                 };
                 this.skeleton    = skeleton;
                 this.meshBuffers = new DoubleBuffered <MeshRendererBuffers.SmartMesh>();
                 base.get_canvasRenderer().SetTexture(this.get_mainTexture());
                 if (!string.IsNullOrEmpty(this.initialSkinName))
                 {
                     this.skeleton.SetSkin(this.initialSkinName);
                 }
                 if (!string.IsNullOrEmpty(this.startingAnimation))
                 {
                     this.state.SetAnimation(0, this.startingAnimation, this.startingLoop);
                     this.Update(0f);
                 }
             }
         }
     }
 }
예제 #9
0
    static int set_Event(IntPtr L)
    {
        try
        {
            Spine.AnimationState obj  = (Spine.AnimationState)ToLua.CheckObject(L, 1, typeof(Spine.AnimationState));
            EventObject          arg0 = null;

            if (LuaDLL.lua_isuserdata(L, 2) != 0)
            {
                arg0 = (EventObject)ToLua.ToObject(L, 2);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "The event 'Spine.AnimationState.Event' can only appear on the left hand side of += or -= when used outside of the type 'Spine.AnimationState'"));
            }

            if (arg0.op == EventOp.Add)
            {
                Spine.AnimationState.TrackEntryEventDelegate ev = (Spine.AnimationState.TrackEntryEventDelegate)arg0.func;
                obj.Event += ev;
            }
            else if (arg0.op == EventOp.Sub)
            {
                Spine.AnimationState.TrackEntryEventDelegate ev = (Spine.AnimationState.TrackEntryEventDelegate)arg0.func;
                obj.Event -= ev;
            }

            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #10
0
    private void OnScoreAnimationEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
    {
        if (e.Data.Name != "Score")
        {
            return;
        }
        this.scoreAnimation.state.Event -= this.OnScoreAnimationEvent;
        int   opponentScore = this.cakeRaceMode.OpponentScore;
        int   currentScore  = this.cakeRaceMode.CurrentScore;
        float num           = this.maxScore.position.x - this.minScore.position.x;
        float num2          = (this.maxScore.position.x + this.minScore.position.x) / 2f;
        float num3;

        if (this.cakeRaceMode.OpponentScore > this.cakeRaceMode.CurrentScore)
        {
            num3 = -1f + (float)this.cakeRaceMode.CurrentScore / (float)this.cakeRaceMode.OpponentScore;
        }
        else
        {
            num3 = 1f - (float)this.cakeRaceMode.OpponentScore / (float)this.cakeRaceMode.CurrentScore;
        }
        Vector3 position = this.scoreSliderOverride.position;

        position.x = num2 + num / 2f * num3;
        this.scoreSliderOverride.position = position;
        Singleton <AudioManager> .Instance.Spawn2dOneShotEffect(WPFMonoBehaviour.gameData.commonAudioCollection.scoreImpact);
    }
예제 #11
0
    private void OnAnimationEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
    {
        string name = e.Data.Name;

        if (name != null)
        {
            if (!(name == "ground_hit"))
            {
                if (!(name == "confetti1"))
                {
                    if (!(name == "confetti2"))
                    {
                        if (name == "jump")
                        {
                            AudioSource[] rewardBounce = WPFMonoBehaviour.gameData.commonAudioCollection.rewardBounce;
                            Singleton <AudioManager> .Instance.Spawn2dOneShotEffect(rewardBounce[UnityEngine.Random.Range(0, rewardBounce.Length)]);
                        }
                    }
                    else
                    {
                        this.confetti2ParticleSystem.Play();
                    }
                }
                else
                {
                    this.confetti1ParticleSystem.Play();
                }
            }
            else
            {
                AudioSource[] cratePillowHit = WPFMonoBehaviour.gameData.commonAudioCollection.cratePillowHit;
                Singleton <AudioManager> .Instance.Spawn2dOneShotEffect(cratePillowHit[UnityEngine.Random.Range(0, cratePillowHit.Length)]);
            }
        }
    }
    //  Spine.TrackEntry

    void Start()
    {
        //mSkeletonAnimation = gameObject.GetComponent<SkeletonAnimation> ();
        //mSkeletonAnimation.AnimationName = walkName;
        mAnimationState = mSkeletonAnimation.state;
        mAnimationState.SetAnimation(0, blinkName, true);
    }
예제 #13
0
    void Start()
    {
        //if (gameObject.tag == "Player")
        //{
        //    _animation = GetComponentInChildren<SkeletonAnimation>();
        //    spineAnimationState = _animation.AnimationState;
        //}
        _animation          = GetComponentInChildren <SkeletonAnimation>();
        spineAnimationState = _animation.AnimationState;
        SetPosition();
        updateHPInterface();
        if (MissionManager.Instance._enemyPatrolDest.Count > 0)
        {
            if (_unitType == UnitTypes.Enemy_Boss)
            {
                _patrolPt = MissionManager.Instance._enemyPatrolDest[0];
            }
            else
            {
                _patrolPt = MissionManager.Instance._enemyPatrolDest[Random.Range(0, MissionManager.Instance._enemyPatrolDest.Count)];
            }
        }
        _Attack        = _BaseAttack;
        _MovementRange = _MovementRange = _BaseMovementRange;
        _Defense       = _BaseDefense;
        _Agility       = _BaseAgility;

        InvokeRepeating("HealthChange_Smooth", 2.0f, 0.05f);
    }
예제 #14
0
        void Subscribe(Spine.AnimationState state, Spine.EventData eventDataReference, bool unsubscribe)
        {
                        #if PREUNITY_5_3
            Debug.LogWarning("Unity 5.3 or later is required for Spine Unity custom yield instructions to function correctly.");
                        #endif

            if (state == null)
            {
                Debug.LogWarning("AnimationState argument was null. Coroutine will continue immediately.");
                m_WasFired = true;
                return;
            }
            else if (eventDataReference == null)
            {
                Debug.LogWarning("eventDataReference argument was null. Coroutine will continue immediately.");
                m_WasFired = true;
                return;
            }

            m_AnimationState = state;
            m_TargetEvent    = eventDataReference;
            state.Event     += HandleAnimationStateEvent;

            m_unsubscribeAfterFiring = unsubscribe;
        }
예제 #15
0
    public virtual void Init(int hp, int damage, ACTION_STATE initState, BasePlayer target)
    {
        AnimationStateData stateData = new AnimationStateData(_skeletonAnimation.state.Data.skeletonData);

        stateData.DefaultMix = 0.1f;
        stateData.SetMix(
            AnimationHelper.Instance.GetAnimDetailName(ANIM_ATTACK_BITE_ID),
            AnimationHelper.Instance.GetAnimDetailName(ANIM_MOVE_BACK_ID),
            0.8f);
        stateData.SetMix(
            AnimationHelper.Instance.GetAnimDetailName(ANIM_ATTACK_HORN_ID),
            AnimationHelper.Instance.GetAnimDetailName(ANIM_MOVE_BACK_ID),
            0.8f);

        Spine.AnimationState state = new Spine.AnimationState(stateData);

        _skeletonAnimation.state = state;
        DoAnimIdle();

        _skeletonAnimation.AnimationState.Event += OnEvent;
        _skeletonAnimation.AnimationState.Start += OnStartTrack;

        _maxHp       = hp;
        CurrentHp    = _maxHp;
        Damage       = damage;
        CurrentState = initState;
        _target      = target;

        _checkHit = true;
        _healthBar.Init(_maxHp);

        SetColliderState();
    }
 void HandleEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
 {
     if (e.Data.Name == footstepEventName)
     {
         PlayFootstepSound();
     }
 }
예제 #17
0
 public void Start()
 {
     this.skeletonAnimation = base.GetComponent <SkeletonAnimation>();
     Spine.AnimationState animationState = this.skeletonAnimation.AnimationState;
     animationState.Event += new Spine.AnimationState.TrackEntryEventDelegate(this.HandleEvent);
     if (< > f__am$cache0 == null)
     {
예제 #18
0
    public override void Initialize()
    {
        base.Initialize(); // Call overridden method to initialize the skeleton.

        state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData());
        if (_animationName != null && _animationName.Length > 0) state.SetAnimation(0, _animationName, loop);
    }
예제 #19
0
 // Use this for initialization
 void Start()
 {
     skeletonAnimation   = GetComponent <SkeletonAnimation>();
     dialogue            = GetComponent <DemonDogDialogue>();
     spineAnimationState = skeletonAnimation.AnimationState;
     skeleton            = skeletonAnimation.Skeleton;
 }
예제 #20
0
        public Animation(string AnimationFile)
        {
            skeletonRenderer = new SkeletonRenderer();

            String name = AnimationFile;

            Atlas atlas = new Atlas("Data/" + name + ".atlas", new GLImpTextureLoader());
            SkeletonJson json = new SkeletonJson(atlas);
            skeleton = new Skeleton(json.ReadSkeletonData("Data/" + name + ".json"));
            skeleton.SetSlotsToSetupPose();

            // Define mixing between animations.
            stateData = new AnimationStateData(skeleton.Data);
            state = new AnimationState(stateData);
            //state.SetAnimation("idle", true);

            skeleton.X = 0;
            skeleton.Y = 0.1f;
            skeleton.UpdateWorldTransform();

            drawtime = new Stopwatch();
            drawtime.Start();

            Program.MiddleDrawQueue += Draw;
        }
예제 #21
0
        void SubscribeByName(Spine.AnimationState state, string eventName, bool unsubscribe)
        {
                        #if PREUNITY_5_3
            Debug.LogWarning("Unity 5.3 or later is required for Spine Unity custom yield instructions to function correctly.");
                        #endif

            if (state == null)
            {
                Debug.LogWarning("AnimationState argument was null. Coroutine will continue immediately.");
                m_WasFired = true;
                return;
            }
            else if (string.IsNullOrEmpty(eventName))
            {
                Debug.LogWarning("eventName argument was null. Coroutine will continue immediately.");
                m_WasFired = true;
                return;
            }

            m_AnimationState = state;
            m_EventName      = eventName;
            state.Event     += HandleAnimationStateEventByName;

            m_unsubscribeAfterFiring = unsubscribe;
        }
예제 #22
0
 void HandleEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
 {
     if (e.Data.Name == groundcollide)
     {
         stepsound.Stop();
         stepsound.Play();
     }
 }
예제 #23
0
	override public void Initialize () {
		if (Initialized) return;

		base.Initialize();
		
		state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData());
		if (_animationName != null && _animationName.Length > 0) state.SetAnimation(0, _animationName, loop);
	}
예제 #24
0
	void Start () {
		// Make sure you get these AnimationState and Skeleton references in Start or Later. Getting and using them in Awake is not guaranteed by default execution order.
		skeletonAnimation = GetComponent<SkeletonAnimation>();
		spineAnimationState = skeletonAnimation.state;
		skeleton = skeletonAnimation.skeleton;

		StartCoroutine(DoDemoRoutine());
	}
예제 #25
0
 // Use this for initialization
 void Start()
 {
     skeletonAnimation   = GetComponent <SkeletonAnimation>();
     spineAnimationState = skeletonAnimation.state;
     skeleton            = skeletonAnimation.skeleton;
     Animate_gerakBawah();
     spineAnimationState.TimeScale = 1;
 }
예제 #26
0
 private void OnIntroEnd(Spine.AnimationState state, int trackIndex, int loopCount)
 {
     this.skeletonAnimation.state.Complete -= this.OnIntroEnd;
     this.skeletonAnimation.state.SetAnimation(0, this.idleAnimationName, true);
     this.canBeHit = true;
     this.tutorial = this.CreateTutorial();
     base.StartCoroutine(this.TutorialCoroutine());
 }
예제 #27
0
 private void OnEffectAnimationEnd(Spine.AnimationState state, int trackIndex)
 {
     if (this.openingEffectAnimation != null && state.ToString().Equals("Outro"))
     {
         this.openingEffectAnimation.state.End -= this.OnEffectAnimationEnd;
         UnityEngine.Object.Destroy(this.openingEffectAnimation.transform.parent.gameObject);
     }
 }
예제 #28
0
 void HandleEvent(Spine.AnimationState state, int trackIndex, Spine.Event e)
 {
     if (e.Data.Name == footstepEvent)
     {
         footstepAudioSource.pitch = 0.5f + Random.Range(-0.2f, 0.2f);
         footstepAudioSource.Play();
     }
 }
예제 #29
0
 private void AnimationState_Complete(Spine.AnimationState state, int trackIndex, int loopCount)
 {
     if (_needKeepLastAni)
     {
         return;
     }
     updateAniState();
 }
예제 #30
0
 public virtual void Initialize(Animator animator)
 {
     if (state == null)
     {
         var animationStateComponent = (animator.GetComponent(typeof(IAnimationStateComponent))) as IAnimationStateComponent;
         state = animationStateComponent.AnimationState;
     }
 }
 public Entity(Skeleton skeleton, Vector2 position)
     : this(position)
 {
     Skeleton = skeleton;
     skeletonBoundingBox = ResourceManager.GetSkeletonBoundingBox(skeleton.Data.Name);
     AnimationState = new AnimationState(new AnimationStateData(skeleton.Data));
     RenderShadow = true;
 }
예제 #32
0
    public IEnumerator Idle(float duration)
    {
        yield return(new WaitForSeconds(duration));

        spineAnimationState = skeletonAnimation.AnimationState;
        spineAnimationState.SetAnimation(0, "idle", false);
        yield break;
    }
예제 #33
0
 //[SpineAttachment(dataField: "DataAsset")]
 //public string attachment;
 private void Start()
 {
     skeletonAnimation   = GetComponent <SkeletonAnimation>();
     spineAnimationState = skeletonAnimation.AnimationState;
     skeleton            = skeletonAnimation.Skeleton;
     //
     thisSlotBaseData = skeleton.FindSlot(slot).Bone.Data;
 }
예제 #34
0
        public WaitForSpineEvent NowWaitFor(Spine.AnimationState state, Spine.EventData eventDataReference, bool unsubscribeAfterFiring = true)
        {
            ((IEnumerator)this).Reset();
            Clear(state);
            Subscribe(state, eventDataReference, unsubscribeAfterFiring);

            return(this);
        }
예제 #35
0
 private void OnStarAnimationComplete(Spine.AnimationState state, int trackIndex, int loopCount)
 {
     if (this.OnStarAnimationEnd != null)
     {
         this.OnStarAnimationEnd();
         this.OnStarAnimationEnd = null;
     }
 }
예제 #36
0
		public SpineSkeleton(string atlasName, string skeletonName, Rectangle originAndScale)
		{
			skeleton = CreateSkeleton(atlasName, skeletonName);
			skeleton.SetBonesToSetupPose();
			stateData = new AnimationStateData(skeleton.Data);
			state = new AnimationState(stateData);
			LastOriginAndScale = OriginAndScale = originAndScale;
			OnDraw<SpineRenderer>();
		}
	public override void Reset () {
		base.Reset();
		if (!valid) return;

		state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData());
		if (_animationName != null && _animationName.Length > 0) {
			state.SetAnimation(0, _animationName, loop);
			Update(0);
		}
	}
예제 #38
0
    /*
     */
    private void Initialize()
    {
        mesh = new Mesh();
        GetComponent<MeshFilter>().mesh = mesh;
        mesh.name = "tk2dSkeleton Mesh";
        mesh.hideFlags = HideFlags.HideAndDontSave;

        state = new Spine.AnimationState(skeletonDataAsset.GetAnimationStateData());
        skeleton = new Skeleton(skeletonDataAsset.GetSkeletonData());
    }
예제 #39
0
		void Subscribe (Spine.AnimationState state, Spine.EventData eventDataReference, bool unsubscribe) {
			if (state == null || eventDataReference == null) {
				m_WasFired = true;
			} else {
				m_AnimationState = state;
				m_TargetEvent = eventDataReference;
				state.Event += HandleAnimationStateEvent;

				m_unsubscribeAfterFiring = unsubscribe;
			}
		}
예제 #40
0
		void SubscribeByName (Spine.AnimationState state, string eventName, bool unsubscribe) {
			if (state == null || string.IsNullOrEmpty(eventName)) {
				m_WasFired = true;
			} else {
				m_AnimationState = state;
				m_EventName = eventName;
				state.Event += HandleAnimationStateEventByName;

				m_unsubscribeAfterFiring = unsubscribe;
			}
		}
예제 #41
0
    /*
     */
    private void Clear()
    {
        GetComponent<MeshFilter>().mesh = null;
        DestroyImmediate(mesh);
        mesh = null;

        renderer.sharedMaterial = null;

        skeleton = null;
        state = null;
    }
        public void SetAnimationStateData (AnimationStateData stateData ) {
	        
	        if (stateData!=null)

	        OwnsAnimationStateData = false;
	        State = new AnimationState(stateData);
            State.Event += OnEvent;
            State.Start += OnStart;
            State.Complete += OnComplete;
            State.End += OnEnd;

        }
예제 #43
0
파일: Clock.cs 프로젝트: harayoki/m_clock
 void Start()
 {
     clock = GetComponent<SkeletonAnimation>();
     clockState = clock.state;
     clockState.TimeScale = 1.0f;
     clockState.SetAnimation(0, "loop", true);
     armLong = clock.skeleton.FindBone ("arm-long");
     armShort = clock.skeleton.FindBone ("arm-short");
     needle = clock.skeleton.FindBone ("needle");
     Debug.Log (armLong);
     Debug.Log (armShort);
     Debug.Log (needle);
 }
예제 #44
0
파일: SpinePlayer.cs 프로젝트: hgrandry/Mgx
        public SpinePlayer(string atlasPath, string jsonPath)
        {
            Name = jsonPath;

            _skeletonRenderer = new SkeletonRenderer(Render.Device);

            var atlas = new Atlas(atlasPath, new XnaTextureLoader(Render.Device));
            var json = new SkeletonJson(atlas);

            Skeleton = new Skeleton(json.ReadSkeletonData(jsonPath));
            Skeleton.SetSlotsToSetupPose(); // Without this the skin attachments won't be attached. See SetSkin.

            var stateData = new AnimationStateData(Skeleton.Data);
            State = new AnimationState(stateData);
            IsVisible = true;
        }
예제 #45
0
        protected override void LoadContent()
        {
            Effect spriteBatchEffect = Content.Load<Effect>("SpriteBatchEffect");
            spriteBatch = new SpriteBatchEx(GraphicsDevice, spriteBatchEffect);

            Bone.yDown = true;
            skeletonData = Content.Load<SkeletonData>("spineboy/spineboy");
            skeleton = new Skeleton(skeletonData);
            skeleton.SetSlotsToSetupPose();

            AnimationStateData stateData = new AnimationStateData(skeleton.Data);
            animationState = new AnimationState(stateData);
            animationState.SetAnimation(0, "walk", true);

            skeleton.UpdateWorldTransform();
        }
예제 #46
0
        public Avatar(string AnimationFile)
        {
            SkeletonRenderer = new SkeletonRenderer(Vector3.UnitY, Vector3.UnitZ);

            String name = AnimationFile;

            Atlas atlas = new Atlas(name + ".atlas", new OpenTKTextureLoader());
            SkeletonJson json = new SkeletonJson(atlas);
            Skeleton = new Skeleton(json.ReadSkeletonData(name + ".json"));
            Skeleton.SetSlotsToSetupPose();

            // Define mixing between animations.
            StateData = new AnimationStateData(Skeleton.Data);
            State = new AnimationState(StateData);

            Skeleton.X = 0;
            Skeleton.Y = 0;
            Skeleton.UpdateWorldTransform();
        }
예제 #47
0
		void Subscribe (Spine.AnimationState state, Spine.EventData eventDataReference, bool unsubscribe) {
			#if PREUNITY_5_3
			Debug.LogWarning("Unity 5.3 or later is required for Spine Unity custom yield instructions to function correctly.");
			#endif

			if (state == null) {
				Debug.LogWarning("AnimationState argument was null. Coroutine will continue immediately.");
				m_WasFired = true;
				return;
			} else if (eventDataReference == null) {
				Debug.LogWarning("eventDataReference argument was null. Coroutine will continue immediately.");
				m_WasFired = true;
				return;
			}

			m_AnimationState = state;
			m_TargetEvent = eventDataReference;
			state.Event += HandleAnimationStateEvent;

			m_unsubscribeAfterFiring = unsubscribe;

		}
예제 #48
0
 internal void OnEnd(AnimationState state, int index)
 {
     if (End != null) End(state, new StartEndArgs(index));
 }
예제 #49
0
 internal void OnComplete(AnimationState state, int index, int loopCount)
 {
     if (Complete != null) Complete(state, new CompleteArgs(index, loopCount));
 }
예제 #50
0
        protected override void LoadContent()
        {
            skeletonRenderer = new SkeletonRenderer(GraphicsDevice);

            String name = "spineboy"; // "goblins";

            Atlas atlas = new Atlas("data/" + name + ".atlas", new XnaTextureLoader(GraphicsDevice));
            SkeletonJson json = new SkeletonJson(atlas);
            skeleton = new Skeleton(json.ReadSkeletonData("data/" + name + ".json"));
            if (name == "goblins") skeleton.SetSkin("goblingirl");
            skeleton.SetSlotsToSetupPose(); // Without this the skin attachments won't be attached. See SetSkin.

            // Define mixing between animations.
            AnimationStateData stateData = new AnimationStateData(skeleton.Data);
            if (name == "spineboy") {
                stateData.SetMix("walk", "jump", 0.2f);
                stateData.SetMix("jump", "walk", 0.4f);
            }

            state = new AnimationState(stateData);

            if (true) {
                // Event handling for all animations.
                state.Start += new EventHandler(Start);
                state.End += new EventHandler(End);
                state.Complete += new EventHandler<CompleteArgs>(Complete);
                state.Event += new EventHandler<EventTriggeredArgs>(Event);

                state.SetAnimation("drawOrder", true);
            } else {
                state.SetAnimation("walk", false);
                QueueEntry entry = state.AddAnimation("jump", false);
                entry.End += new EventHandler(End); // Event handling for queued animations.
                state.AddAnimation("walk", true);
            }

            skeleton.X = 320;
            skeleton.Y = 440;
            skeleton.UpdateWorldTransform();

            headSlot = skeleton.FindSlot("head");
        }
예제 #51
0
		internal void OnEvent (AnimationState state, int index, Event e) {
			if (Event != null) Event(state, index, e);
		}
예제 #52
0
		internal void OnStart (AnimationState state, int index) {
			if (Start != null) Start(state, index);
		}
예제 #53
0
        public void setAnimationStateData(AnimationStateData stateData )
        {
            //NSAssert(stateData, @"stateData cannot be null.");
            if (stateData!=null)

            _ownsAnimationStateData = false;
            _state = new AnimationState(stateData);
            _state.Event += state_Event;
            _state.Start += state_Start;
            _state.Complete += state_Complete;
            _state.End += state_End;
        }
예제 #54
0
 void state_Start(AnimationState state, int trackIndex)
 {
     if (Start != null)
         Start(state, trackIndex);
 }
예제 #55
0
 void state_Event(AnimationState state, int trackIndex, Event e)
 {
     if (Event != null)
         Event(state, trackIndex, e);
 }
예제 #56
0
 void state_End(AnimationState state, int trackIndex)
 {
     if (End != null)
         End(state, trackIndex);
 }
예제 #57
0
        private void state_Complete(AnimationState state, int trackIndex, int loopCount)
        {
            //spAnimationState_clearTrack

            if (Complete != null)
                Complete(state, trackIndex, loopCount);
        }
예제 #58
0
 internal void OnEvent(AnimationState state, int index, Event e)
 {
     if (Event != null) Event(state, new EventTriggeredArgs(index, e));
 }
예제 #59
0
 internal void OnStart(AnimationState state, int index)
 {
     if (Start != null) Start(state, new StartEndArgs(index));
 }
예제 #60
0
		internal void OnEnd (AnimationState state, int index) {
			if (End != null) End(state, index);
		}