public void UpdateMap(int frame) { if (controlsScript == null) { return; } if (animationMaps == null && controlsScript.myInfo.useAnimationMaps) { Debug.LogError("Animation '" + moveSetScript.GetCurrentClipName() + "' has no animation maps"); return; } if (controlsScript.myInfo.useAnimationMaps) { HitBoxMap[] hitBoxMaps = new HitBoxMap[0]; int highestFrame = 0; foreach (AnimationMap map in animationMaps) { if (map.frame > highestFrame) { highestFrame = map.frame; } if (map.frame == frame) { hitBoxMaps = map.hitBoxMaps; deltaPosition = map.deltaDisplacement; break; } } // If frame can't be found, cast the highest possible frame if (hitBoxMaps.Length == 0) { hitBoxMaps = animationMaps[highestFrame].hitBoxMaps; deltaPosition = animationMaps[highestFrame].deltaDisplacement; } foreach (HitBoxMap map in hitBoxMaps) { foreach (HitBox hitBox in hitBoxes) { if (hitBox.bodyPart == map.bodyPart) { hitBox.mappedPosition = map.mappedPosition; if (currentMirror) { hitBox.mappedPosition.x += (hitBox.mappedPosition.x * -2); } } } } } else { foreach (HitBox hitBox in hitBoxes) { hitBox.mappedPosition = FPVector.ToFPVector(hitBox.position.position) - worldTransform.position; } } }
public HitBoxMap[] GetAnimationMaps() { List <HitBoxMap> animMaps = new List <HitBoxMap>(); foreach (HitBox hitBox in hitBoxes) { HitBoxMap animMap = new HitBoxMap(); animMap.bodyPart = hitBox.bodyPart; animMap.mappedPosition = FPVector.ToFPVector(hitBox.position.position); animMaps.Add(animMap); } return(animMaps.ToArray()); }