<?xml version="1.0" encoding="utf-8"?> 
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="JPH::Color">
    <DisplayString>r={(int)r}, g={(int)g}, b={(int)b}, a={(int)a}</DisplayString>
  </Type>
  <Type Name="JPH::Float2">
    <DisplayString>{x}, {y}</DisplayString>
  </Type>
  <Type Name="JPH::Float3">
    <DisplayString>{x}, {y}, {z}</DisplayString>
  </Type>
  <Type Name="JPH::Float4">
    <DisplayString>{x}, {y}, {z}, {w}</DisplayString>
  </Type>
  <Type Name="JPH::Vec3">
    <DisplayString>{mF32[0]}, {mF32[1]}, {mF32[2]}, L^2={mF32[0]*mF32[0]+mF32[1]*mF32[1]+mF32[2]*mF32[2]}</DisplayString>
  </Type>
  <Type Name="JPH::DVec3">
    <DisplayString>{mF64[0]}, {mF64[1]}, {mF64[2]}, L^2={mF64[0]*mF64[0]+mF64[1]*mF64[1]+mF64[2]*mF64[2]}</DisplayString>
  </Type>
  <Type Name="JPH::Vec4">
    <DisplayString>{mF32[0]}, {mF32[1]}, {mF32[2]}, {mF32[3]}, L^2={mF32[0]*mF32[0]+mF32[1]*mF32[1]+mF32[2]*mF32[2]+mF32[3]*mF32[3]}</DisplayString>
  </Type>
  <Type Name="JPH::UVec4">
    <DisplayString>{mU32[0]}, {mU32[1]}, {mU32[2]}, {mU32[3]}</DisplayString>
  </Type>
  <Type Name="JPH::Quat">
    <DisplayString>{mValue}</DisplayString>
  </Type>
  <Type Name="JPH::Mat44">
    <DisplayString>{mCol[0].mF32[0]}, {mCol[1].mF32[0]}, {mCol[2].mF32[0]}, {mCol[3].mF32[0]} | {mCol[0].mF32[1]}, {mCol[1].mF32[1]}, {mCol[2].mF32[1]}, {mCol[3].mF32[1]} | {mCol[0].mF32[2]}, {mCol[1].mF32[2]}, {mCol[2].mF32[2]}, {mCol[3].mF32[2]}</DisplayString>
    <Expand>
      <Synthetic Name="[Row 0]">
        <DisplayString>{mCol[0].mF32[0]}, {mCol[1].mF32[0]}, {mCol[2].mF32[0]}, {mCol[3].mF32[0]}</DisplayString>
      </Synthetic>
      <Synthetic Name="[Row 1]">
        <DisplayString>{mCol[0].mF32[1]}, {mCol[1].mF32[1]}, {mCol[2].mF32[1]}, {mCol[3].mF32[1]}</DisplayString>
      </Synthetic>
      <Synthetic Name="[Row 2]">
        <DisplayString>{mCol[0].mF32[2]}, {mCol[1].mF32[2]}, {mCol[2].mF32[2]}, {mCol[3].mF32[2]}</DisplayString>
      </Synthetic>
      <Synthetic Name="[Row 3]">
        <DisplayString>{mCol[0].mF32[3]}, {mCol[1].mF32[3]}, {mCol[2].mF32[3]}, {mCol[3].mF32[3]}</DisplayString>
      </Synthetic>
    </Expand>
  </Type>
  <Type Name="JPH::DMat44">
    <DisplayString>{mCol[0].mF32[0]}, {mCol[1].mF32[0]}, {mCol[2].mF32[0]}, {mCol3.mF64[0]} | {mCol[0].mF32[1]}, {mCol[1].mF32[1]}, {mCol[2].mF32[1]}, {mCol3.mF64[1]} | {mCol[0].mF32[2]}, {mCol[1].mF32[2]}, {mCol[2].mF32[2]}, {mCol3.mF64[2]}</DisplayString>
    <Expand>
      <Synthetic Name="[Row 0]">
        <DisplayString>{mCol[0].mF32[0]}, {mCol[1].mF32[0]}, {mCol[2].mF32[0]}, {mCol3.mF64[0]}</DisplayString>
      </Synthetic>
      <Synthetic Name="[Row 1]">
        <DisplayString>{mCol[0].mF32[1]}, {mCol[1].mF32[1]}, {mCol[2].mF32[1]}, {mCol3.mF64[1]}</DisplayString>
      </Synthetic>
      <Synthetic Name="[Row 2]">
        <DisplayString>{mCol[0].mF32[2]}, {mCol[1].mF32[2]}, {mCol[2].mF32[2]}, {mCol3.mF64[2]}</DisplayString>
      </Synthetic>
      <Synthetic Name="[Row 3]">
        <DisplayString>{mCol[0].mF32[3]}, {mCol[1].mF32[3]}, {mCol[2].mF32[3]}, 1}</DisplayString>
      </Synthetic>
    </Expand>
  </Type>
  <Type Name="JPH::AABox">
    <DisplayString>min=({mMin}), max=({mMax})</DisplayString>
  </Type>
  <Type Name="JPH::BodyID">
    <DisplayString>{mID}</DisplayString>
  </Type>
  <Type Name="JPH::Body">
    <DisplayString>{mDebugName}: p=({mPosition.mF32[0],g}, {mPosition.mF32[1],g}, {mPosition.mF32[2],g}), r=({mRotation.mValue.mF32[0],g}, {mRotation.mValue.mF32[1],g}, {mRotation.mValue.mF32[2],g}, {mRotation.mValue.mF32[3],g}), v=({mLinearVelocity.mF32[0],g}, {mLinearVelocity.mF32[1],g}, {mLinearVelocity.mF32[2],g}), w=({mAngularVelocity.mF32[0],g}, {mAngularVelocity.mF32[1],g}, {mAngularVelocity.mF32[2],g})</DisplayString>
  </Type>
  <Type Name="JPH::BodyManager">
    <DisplayString>bodies={mBodies._Mypair._Myval2._Mylast - mBodies._Mypair._Myval2._Myfirst}, active={mActiveBodies._Mypair._Myval2._Mylast - mActiveBodies._Mypair._Myval2._Myfirst}</DisplayString>
  </Type>
  <Type Name="JPH::StaticArray&lt;*&gt;">
    <DisplayString>size={mSize}</DisplayString>
    <Expand>
      <Item Name="[size]" ExcludeView="simple">mSize</Item>
      <ArrayItems>
        <Size>mSize</Size>
        <ValuePointer>(value_type *)mElements</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>
</AutoVisualizer>