void UpdateHitbox(internalFrameData animdata, int anim, int frame) { #if UNITY_EDITOR if (Application.isPlaying == false) { return; } #endif m_CurrentAnimation = anim; m_CurrentFrame = frame; internalHitboxData framedata = animdata.frame; // var nextframedata = animdata.nextframe; if (framedata.collider != null) { for (int i = 0; i < framedata.collider.Length; i++) { var collider = framedata.collider[i]; var rect = collider.rect; } } }
void UpdateHitbox(AnimationEvent _event) { #if UNITY_EDITOR if (Application.isPlaying == false) { return; } #endif if (!string.IsNullOrEmpty(_event.stringParameter)) { internalFrameData animData = internalFrameData.Deserialize(_event.stringParameter); if (m_LastClip != _event.animatorClipInfo.clip) { m_LastClip = _event.animatorClipInfo.clip; m_CurrentId = m_UID++; } m_LastFrame = _event.intParameter; UpdateHitbox(animData, Mathf.RoundToInt(_event.floatParameter), _event.intParameter); } }
/// <summary> /// デシリアライズ /// /// </summary> /// <param name="s"></param> static public internalFrameData Deserialize(string s) { var data = Convert.FromBase64String(s); var serializedResult = BinaryStructConverter.FromByteArray <serializableData>(data); var count = serializedResult.numColliders; internalFrameData result = serializedResult; if (count > 0) { int sizeofFrame = Marshal.SizeOf(typeof(serializableData)); int sizeofCollider = Marshal.SizeOf(typeof(HitboxColliderData)); var colliderArray = new HitboxColliderData[count]; for (int i = 0; i < count; i++) { colliderArray[i] = BinaryStructConverter.FromByteArray <HitboxColliderData>(data, sizeofFrame + sizeofCollider * i); } result.frame.collider = colliderArray; } return(result); }