public void LoadHairAsset(string path_to_apx)
    {
        // release existing instance & asset
        if (m_iid)
        {
            HairWorksIntegration.hwInstanceRelease(m_iid);
            m_iid = hwInstanceID.NullID;
        }
        if (m_aid)
        {
            HairWorksIntegration.hwAssetRelease(m_aid);
            m_aid = hwAssetID.NullID;
        }

        // load & create instance
        if(m_aid = HairWorksIntegration.hwAssetLoadFromFile(Application.streamingAssetsPath + "/" + path_to_apx))
        {
            m_hair_asset = path_to_apx;
            m_iid = HairWorksIntegration.hwInstanceCreate(m_aid);
            if(m_use_default_descriptor)
            {
                HairWorksIntegration.hwAssetGetDefaultDescriptor(m_aid, ref m_params);
            }
        }
    }
 public static extern void hwRenderShadow(hwInstanceID iid);
 public static extern void hwInstanceUpdateSkinningMatrices(hwInstanceID iid, int num_matrices, IntPtr matrices);
 public static extern void hwInstanceSetTexture(hwInstanceID iid, hwTextureType type, IntPtr tex);
 public static extern void hwInstanceSetDescriptor(hwInstanceID iid, ref hwDescriptor desc);
 public static extern bool hwInstanceRelease(hwInstanceID iid);