showCastingLoopState() {
    const showDuration = 0.0;
    // console.log(this.sdkCard.getLogName(), "showCastingLoopState", this._numCastingStatesToShow);
    if (this.canChangeState()) {
      this.whenResourcesReady(this.getCardResourceRequestId()).then((cardResourceRequestId) => {
        if (!this.getAreResourcesValid(cardResourceRequestId)) return; // card has changed
        if (this.canChangeState() && (!this.getHasActiveState() || this._showingCastingStartState) && this._numCastingStatesToShow > 0 && !this._showingCastingState && !this._showingCastState) {
          // console.log(this.sdkCard.getLogName(), " > > showCastingLoopState");
          this._showingCastingState = true;

          const animResource = this.getAnimResource();

          this.removeReadinessVisualTag();

          const animLoopAction = animResource.castLoop && UtilsEngine.getAnimationAction(animResource.castLoop, true);
          if (animLoopAction != null) {
            const needsStartAnim = !this._showingCastingStartState && this._showingCastingEndStateTimeoutId == null && animResource.castStart;
            let animStartAction;
            if (needsStartAnim) {
              animStartAction = UtilsEngine.getAnimationAction(animResource.castStart);
            }
            if (needsStartAnim && animStartAction != null) {
              // show casting start if not already
              this._stateActions.push(this.entitySprite.runAction(cc.sequence(
                animStartAction,
                cc.callFunc(() => {
                  this._stateActions.push(this.entitySprite.runAction(animLoopAction));
                }),
              )));
            } else {
              this._stateActions.push(this.entitySprite.runAction(animLoopAction));
            }
          }
        }
      });
    }

    return showDuration;
  }
Shows entity casting loop state.
@returns {Number} duration of show