<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_spinner" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="25,28" />
    <Sprite name="s_JumpParticles" fileName="game/particles10.rttex" textureSize="32" frame="6,25"/>
    
    <Animations>
      <CurveAnimationFloat name="a_rotationSpeedJump" playOnState="Action.Jump" isLoop="true" animTime="10000">
        <Curve name="rotation_speed">
          <KeyFrame>0, 800</KeyFrame>
          <KeyFrame>1, 800</KeyFrame>
        </Curve>
      </CurveAnimationFloat>
      <CurveAnimationFloat name="a_rotationSpeedInAir" playOnState="Action.InAir" isLoop="false" animTime="1000">
        <Curve name="rotation_speed">
          <KeyFrame>0, 800</KeyFrame>
          <KeyFrame>1, 400</KeyFrame>
        </Curve>
      </CurveAnimationFloat>
    </Animations>

    <StateMachines>
      <StateMachine name="Action">
        <States>
          <State name="None"/>
          <State name="Jump" ExitTime="0.2"/>
          <State name="InAir"/>
        </States>
        <Transitions>
          <Transition to="None" from="InAir">
            <Condition type="and">
              <IsAction operatorType="NotEqual">JUMP</IsAction>
              <IsVariableBool name="onGround">true</IsVariableBool>
            </Condition>
          </Transition>
          <Transition to="InAir" from="Jump">
            <Condition >
              <IsAction operatorType="NotEqual">JUMP</IsAction>
            </Condition>
          </Transition>
          <Transition to="Jump" from="None|InAir">
            <Condition>
              <IsAction>JUMP</IsAction>
            </Condition>
          </Transition>
          <Transition to="InAir" from="None">
            <Condition type="and">
              <IsAction operatorType="NotEqual">JUMP</IsAction>
              <IsVariableBool name="onGround">false</IsVariableBool>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>
    
    <VariableMap>
      <Set name="spinner_rotation">0, 0, 0, 1</Set>
      <Set name="spinner_offset">0, -16, 0</Set>
      <Set name="DeltaTime">0.0</Set>
      <Set name="rotation_speed">10.0</Set>
    </VariableMap>

    <ParticleSystems>
      <ParticleSystem name="ps_JumpParticles">
        <Emitter>
          <Set name="offset">0, -24</Set>
          <Set name="lifeTime">0.75</Set>
          <Set name="particlesPerEmission">8</Set>
          <Set name="particlesToEmit">8</Set>
          <Set name="checkParticleNumToEmit">true</Set>
          <Set name="infParticles">true</Set>
          <Set name="delayTimer">0</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_JumpParticles</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Set name="isBackgroundParticle">true</Set>
          <Set name="initalRGB">1, 1, 1</Set>
          <Set name="relativeToEmitter">true</Set>
          <Set name="rotateWithVelocity">true</Set>
          <Set name="interpolateAlpha">true</Set>
          <Set name="lifeTime">0.75</Set>
          <Random name="initialScale" min="0.5" max="1"/>
          <RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="200,250"/>
        </Particle>
      </ParticleSystem>
    </ParticleSystems>
  </Data>
  
  <RenderRules>
    <Update>
      <StopIf>
        <IsRenderMod>RENDER_MOD_PLAYER_SHADOW</IsRenderMod>
        <IsRenderMod>RENDER_MOD_SPIRIT_GUIDE</IsRenderMod>
        <IsRenderMod>RENDER_MOD_RAINBOW_GUY</IsRenderMod>
        <IsRenderMod>RENDER_MOD_MINI_YOU</IsRenderMod>
        <IsRenderMod>RENDER_MOD_MANNEQUIN</IsRenderMod>
        <IsRenderMod>RENDER_MOD_COLORED_SHADOW</IsRenderMod>
      </StopIf>
      <Group onState="Action.None">
        <ArithmethicOperation LeftHandVariableName="spinner_rotation.x" RightHandVariableName="0" OperationType="Set"/>
      </Group>
      <Group onState="Action.InAir|Action.Jump">
        <ArithmethicOperation LeftHandVariableName="DeltaTime" RightHandVariableName="rotation_speed" OperationType="Multiply"/>
        <ArithmethicOperation LeftHandVariableName="spinner_rotation.x" RightHandVariableName="DeltaTime" OperationType="Add"/>
      </Group>
    </Update>
    <RenderBackpack>
      <Translate>spinner_offset</Translate>
      <Rotate>spinner_rotation</Rotate>
      <Translate>0,1,0</Translate>
      <SpriteRender name="s_spinner" blend="PREMULTIPLIED_ALPHA"/>
    </RenderBackpack>
    <AddClothingParticles>
      <ParticleSystemUpdate name="ps_JumpParticles" onAction="JUMPSTART|JUMPDOUBLE"/>
    </AddClothingParticles>
  </RenderRules>
</ItemRenderer>
