private void UpdateOwner() { if (this.entity.IsOwner()) { base.state.MecanimSpeed = this.TargetAnimator.speed; for (int i = 0; i < this.LayersToSync.Length; i++) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[i]; AnimatorStateInfo currentAnimatorStateInfo = this.TargetAnimator.GetCurrentAnimatorStateInfo(mecanimLayerConfig.LayerIndex); if (currentAnimatorStateInfo.fullPathHash != mecanimLayerConfig.Hash) { base.state.MecanimLayerHashes[i] = (mecanimLayerConfig.Hash = currentAnimatorStateInfo.fullPathHash); base.state.MecanimLayerTimes[i] = (mecanimLayerConfig.NormalizedTime = currentAnimatorStateInfo.normalizedTime); } if (mecanimLayerConfig.SyncWeight) { float layerWeight = this.TargetAnimator.GetLayerWeight(mecanimLayerConfig.LayerIndex); if (layerWeight != mecanimLayerConfig.Weight) { base.state.MecanimLayerWeights[i] = (mecanimLayerConfig.Weight = layerWeight); } } } } }
private void UpdateRemote(float?transitionDuration, float?stateNormalizedTime) { if (base.entity.IsAttached()) { this.TargetAnimator.speed = base.state.MecanimSpeed; for (int i = 0; i < this.LayersToSync.Length; i++) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[i]; if (mecanimLayerConfig.Hash != 0) { AnimatorStateInfo currentAnimatorStateInfo = this.TargetAnimator.GetCurrentAnimatorStateInfo(mecanimLayerConfig.LayerIndex); if (!this.TargetAnimator.IsInTransition(mecanimLayerConfig.LayerIndex)) { if (currentAnimatorStateInfo.fullPathHash != mecanimLayerConfig.Hash) { MecanimTransitionOverride mecanimTransitionOverride; Dictionary <bool, float> dictionary; float value; if (this.overrideLookup.TryGetValue(mecanimLayerConfig.Hash, out mecanimTransitionOverride)) { if (transitionDuration == null) { transitionDuration = new float?(mecanimLayerConfig.TransitionTime); } if (stateNormalizedTime == 0f) { stateNormalizedTime = new float?(mecanimTransitionOverride.TransitionOffset); } } else if (this.TransitionData && transitionDuration == null && this.TransitionData.Lookup != null && this.TransitionData.Lookup.TryGetValue(currentAnimatorStateInfo.fullPathHash, out dictionary) && dictionary.TryGetValue(true, out value)) { transitionDuration = new float?(value); } } if (transitionDuration != null) { transitionDuration = new float?(transitionDuration.Value * this.CrossFadeMultiplier); } else { transitionDuration = new float?(mecanimLayerConfig.TransitionTime); } if (stateNormalizedTime == null) { stateNormalizedTime = new float?(mecanimLayerConfig.NormalizedTime); } this.TargetAnimator.CrossFade(mecanimLayerConfig.Hash, Mathf.Max(0f, transitionDuration.Value), mecanimLayerConfig.LayerIndex, stateNormalizedTime.Value); mecanimLayerConfig.Hash = 0; } } if (mecanimLayerConfig.SyncWeight && mecanimLayerConfig.Weight != base.state.MecanimLayerWeights[i]) { float num = mecanimLayerConfig.Weight; num = Mathf.Lerp(num, base.state.MecanimLayerWeights[i], Time.deltaTime * 10f); this.TargetAnimator.SetLayerWeight(mecanimLayerConfig.LayerIndex, mecanimLayerConfig.Weight = num); } } } }
public void ApplyHashToRemote(int layer, int hash, float transitionTime, float normalizedTime) { MecanimLayerConfig arg_19_0 = this.LayersToSync[layer]; this.LayersToSync[layer].Hash = hash; arg_19_0.Hash_Recv = hash; this.UpdateRemote(new float?(transitionTime), new float?(normalizedTime)); }
public void ApplyHashToRemote(int layer, int hash, bool anyState, float normalizedTime, bool instantTransition) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[layer]; this.LayersToSync[layer].Hash = hash; mecanimLayerConfig.Hash_Recv = hash; this.UpdateRemoteEvent(null, new float?(normalizedTime), hash, layer, anyState, instantTransition); }
private void UpdateOwnerWithEvents() { if (base.entity.IsOwner()) { base.state.MecanimSpeed = this.TargetAnimator.speed; for (int i = 0; i < this.LayersToSync.Length; i++) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[i]; if (mecanimLayerConfig.LayerIndex == -1) { this.forceLayerIndexSync(); } AnimatorStateInfo animatorStateInfo = this.TargetAnimator.GetCurrentAnimatorStateInfo(mecanimLayerConfig.LayerIndex); int fullPathHash = animatorStateInfo.fullPathHash; if (this.TargetAnimator.IsInTransition(mecanimLayerConfig.LayerIndex)) { animatorStateInfo = this.TargetAnimator.GetNextAnimatorStateInfo(mecanimLayerConfig.LayerIndex); AnimatorTransitionInfo animatorTransitionInfo = this.TargetAnimator.GetAnimatorTransitionInfo(mecanimLayerConfig.LayerIndex); float normalizedTime = animatorTransitionInfo.normalizedTime; if (animatorStateInfo.fullPathHash != mecanimLayerConfig.Hash && this.TransitionData.Lookup != null) { int key = fullPathHash - animatorStateInfo.fullPathHash; if (animatorTransitionInfo.anyState) { key = 1111 - animatorStateInfo.fullPathHash; } Dictionary <bool, float> dictionary; if (this.TransitionData.Lookup.TryGetValue(key, out dictionary)) { if ((animatorStateInfo.tagHash == this.runHash || animatorStateInfo.tagHash == this.walkHash) && !this.isPlayer) { base.StartCoroutine(this.sendTransitionEventDelayed(animatorStateInfo.fullPathHash, mecanimLayerConfig.LayerIndex, animatorStateInfo.normalizedTime, base.entity, animatorTransitionInfo.anyState, 7)); } else { base.StartCoroutine(this.sendTransitionEventDelayed(animatorStateInfo.fullPathHash, mecanimLayerConfig.LayerIndex, animatorStateInfo.normalizedTime, base.entity, animatorTransitionInfo.anyState, 0)); } } base.state.MecanimLayerHashes[i] = (mecanimLayerConfig.Hash = animatorStateInfo.fullPathHash); base.state.MecanimLayerTimes[i] = (mecanimLayerConfig.NormalizedTime = animatorStateInfo.normalizedTime); } } if (this.setup && this.setup.animControl && animatorStateInfo.tagHash == this.setup.animControl.deathHash) { base.state.MecanimLayerHashes[i] = (mecanimLayerConfig.Hash = animatorStateInfo.fullPathHash); base.state.MecanimLayerTimes[i] = (mecanimLayerConfig.NormalizedTime = animatorStateInfo.normalizedTime); } if (mecanimLayerConfig.SyncWeight) { float layerWeight = this.TargetAnimator.GetLayerWeight(mecanimLayerConfig.LayerIndex); if (layerWeight != mecanimLayerConfig.Weight) { base.state.MecanimLayerWeights[i] = (mecanimLayerConfig.Weight = layerWeight); } } } } }
public void ForceStatelayerSync() { for (int i = 0; i < this.LayersToSync.Length; i++) { if (this.LayersToSync[i].Hash_Recv != base.state.MecanimLayerHashes[i]) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[i]; this.ApplyHashToRemote(mecanimLayerConfig.LayerIndex, base.state.MecanimLayerHashes[i], false, base.state.MecanimLayerTimes[i], false); } } }
public void forceStateUpdate() { if (base.entity.IsOwner()) { for (int i = 0; i < this.LayersToSync.Length; i++) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[i]; AnimatorStateInfo currentAnimatorStateInfo = this.TargetAnimator.GetCurrentAnimatorStateInfo(mecanimLayerConfig.LayerIndex); int fullPathHash = currentAnimatorStateInfo.fullPathHash; base.StartCoroutine(this.sendTransitionEventDelayed(currentAnimatorStateInfo.fullPathHash, mecanimLayerConfig.LayerIndex, currentAnimatorStateInfo.normalizedTime, base.entity, false, 0)); } } }
private void UpdateRemoteLayers(float?transitionDuration, float?stateNormalizedTime) { if (base.entity.IsAttached()) { this.TargetAnimator.speed = base.state.MecanimSpeed; for (int i = 0; i < this.LayersToSync.Length; i++) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[i]; if (mecanimLayerConfig.SyncWeight && mecanimLayerConfig.Weight != base.state.MecanimLayerWeights[i]) { float num = mecanimLayerConfig.Weight; num = Mathf.Lerp(num, base.state.MecanimLayerWeights[i], Time.deltaTime * 10f); this.TargetAnimator.SetLayerWeight(mecanimLayerConfig.LayerIndex, mecanimLayerConfig.Weight = num); } } } }
public void forceMecanimSync() { for (int i = 0; i < this.LayersToSync.Length; i++) { MecanimLayerConfig mecanimLayerConfig = this.LayersToSync[i]; if (mecanimLayerConfig.Hash != 0) { this.ApplyHashToRemote(mecanimLayerConfig.LayerIndex, mecanimLayerConfig.Hash, false, 0.2f, false); } } for (int j = 0; j < this.LayersToSync.Length; j++) { if (this.LayersToSync[j].Hash_Recv != base.state.MecanimLayerHashes[j]) { MecanimLayerConfig mecanimLayerConfig2 = this.LayersToSync[j]; this.ApplyHashToRemote(mecanimLayerConfig2.LayerIndex, base.state.MecanimLayerHashes[j], false, 0.2f, false); Debug.Log("forced a SYNC on " + base.gameObject.name); } } }