You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

425 lines
22 KiB

11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
  1. <!DOCTYPE html>
  2. <!--[if IE]><![endif]-->
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <title>Class Feature
  8. </title>
  9. <meta name="viewport" content="width=device-width">
  10. <meta name="title" content="Class Feature
  11. ">
  12. <meta name="generator" content="docfx 2.59.4.0">
  13. <link rel="shortcut icon" href="../favicon.ico">
  14. <link rel="stylesheet" href="../styles/docfx.vendor.css">
  15. <link rel="stylesheet" href="../styles/docfx.css">
  16. <link rel="stylesheet" href="../styles/main.css">
  17. <link rel="stylesheet" href="../styles/fix.css">
  18. <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
  19. <meta property="docfx:navrel" content="../toc.html">
  20. <meta property="docfx:tocrel" content="toc.html">
  21. <meta property="docfx:rel" content="../">
  22. <meta property="docfx:newtab" content="true">
  23. </head> <body data-spy="scroll" data-target="#affix" data-offset="120">
  24. <div id="wrapper">
  25. <header>
  26. <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
  27. <div class="container">
  28. <div class="navbar-header">
  29. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
  30. <span class="sr-only">Toggle navigation</span>
  31. <span class="icon-bar"></span>
  32. <span class="icon-bar"></span>
  33. <span class="icon-bar"></span>
  34. </button>
  35. <a class="navbar-brand" href="../index.html">
  36. <img id="logo" class="svg" src="../logo.svg" alt="">
  37. </a>
  38. </div>
  39. <div class="collapse navbar-collapse" id="navbar">
  40. <form class="navbar-form navbar-right" role="search" id="search">
  41. <div class="form-group">
  42. <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
  43. </div>
  44. </form>
  45. </div>
  46. </div>
  47. </nav>
  48. <div class="subnav navbar navbar-default">
  49. <div class="container hide-when-search" id="breadcrumb">
  50. <ul class="breadcrumb">
  51. <li></li>
  52. </ul>
  53. </div>
  54. </div>
  55. </header>
  56. <div class="container body-content">
  57. <div id="search-results">
  58. <div class="search-list">Search Results for <span></span></div>
  59. <div class="sr-items">
  60. <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
  61. </div>
  62. <ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
  63. </div>
  64. </div>
  65. <div role="main" class="container body-content hide-when-search">
  66. <div class="sidenav hide-when-search">
  67. <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
  68. <div class="sidetoggle collapse" id="sidetoggle">
  69. <div id="sidetoc"></div>
  70. </div>
  71. </div>
  72. <div class="article row grid-right">
  73. <div class="col-md-10">
  74. <article class="content wrap" id="_content" data-uid="IPA.Loader.Features.Feature">
  75. <h1 id="IPA_Loader_Features_Feature" data-uid="IPA.Loader.Features.Feature" class="text-break">Class Feature
  76. </h1>
  77. <div class="markdown level0 summary"><p>The root interface for a mod Feature.</p>
  78. </div>
  79. <div class="markdown level0 conceptual"></div>
  80. <div class="inheritance">
  81. <h5>Inheritance</h5>
  82. <div class="level0"><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">Object</a></div>
  83. <div class="level1"><span class="xref">Feature</span></div>
  84. </div>
  85. <div class="inheritedMembers">
  86. <h5>Inherited Members</h5>
  87. <div>
  88. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring#system-object-tostring">Object.ToString()</a>
  89. </div>
  90. <div>
  91. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">Object.Equals(Object)</a>
  92. </div>
  93. <div>
  94. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">Object.Equals(Object, Object)</a>
  95. </div>
  96. <div>
  97. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals#system-object-referenceequals(system-object-system-object)">Object.ReferenceEquals(Object, Object)</a>
  98. </div>
  99. <div>
  100. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode#system-object-gethashcode">Object.GetHashCode()</a>
  101. </div>
  102. <div>
  103. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype#system-object-gettype">Object.GetType()</a>
  104. </div>
  105. <div>
  106. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone#system-object-memberwiseclone">Object.MemberwiseClone()</a>
  107. </div>
  108. </div>
  109. <h6><strong>Namespace</strong>: <a class="xref" href="IPA.Loader.Features.html">IPA.Loader.Features</a></h6>
  110. <h6><strong>Assembly</strong>: IPA.Loader.dll</h6>
  111. <h5 id="IPA_Loader_Features_Feature_syntax">Syntax</h5>
  112. <div class="codewrapper">
  113. <pre><code class="lang-csharp hljs">public abstract class Feature</code></pre>
  114. </div>
  115. <h5 id="IPA_Loader_Features_Feature_remarks"><strong>Remarks</strong></h5>
  116. <div class="markdown level0 remarks"><p>Avoid storing any data in any subclasses. If you do, it may result in a failure to load the feature.</p>
  117. </div>
  118. <h3 id="properties">Properties
  119. </h3>
  120. <span class="small pull-right mobile-hide">
  121. <span class="divider">|</span>
  122. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/new/master/docs/override/new?filename=IPA_Loader_Features_Feature_InvalidMessage.md&amp;value=---%0Auid%3A%20IPA.Loader.Features.Feature.InvalidMessage%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  123. </span>
  124. <span class="small pull-right mobile-hide">
  125. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/055778cc9d21c84349ea929f513db5e728767192/IPA.Loader/Loader/Features/Feature.cs/#L37">View Source</a>
  126. </span>
  127. <a id="IPA_Loader_Features_Feature_InvalidMessage_" data-uid="IPA.Loader.Features.Feature.InvalidMessage*"></a>
  128. <h4 id="IPA_Loader_Features_Feature_InvalidMessage" data-uid="IPA.Loader.Features.Feature.InvalidMessage">InvalidMessage</h4>
  129. <div class="markdown level1 summary"><p>The message to be logged when the feature is not valid for a plugin.
  130. This should also be set whenever either <a class="xref" href="IPA.Loader.Features.Feature.html#IPA_Loader_Features_Feature_BeforeInit_IPA_Loader_PluginMetadata_">BeforeInit(PluginMetadata)</a> returns false.</p>
  131. </div>
  132. <div class="markdown level1 conceptual"></div>
  133. <h5 class="decalaration">Declaration</h5>
  134. <div class="codewrapper">
  135. <pre><code class="lang-csharp hljs">public virtual string InvalidMessage { get; protected set; }</code></pre>
  136. </div>
  137. <h5 class="propertyValue">Property Value</h5>
  138. <table class="table table-bordered table-striped table-condensed">
  139. <thead>
  140. <tr>
  141. <th>Type</th>
  142. <th>Description</th>
  143. </tr>
  144. </thead>
  145. <tbody>
  146. <tr>
  147. <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">String</a></td>
  148. <td><p>the message to show when the feature is marked invalid</p>
  149. </td>
  150. </tr>
  151. </tbody>
  152. </table>
  153. <h3 id="methods">Methods
  154. </h3>
  155. <span class="small pull-right mobile-hide">
  156. <span class="divider">|</span>
  157. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/new/master/docs/override/new?filename=IPA_Loader_Features_Feature_AfterDisable_IPA_Loader_PluginMetadata_.md&amp;value=---%0Auid%3A%20IPA.Loader.Features.Feature.AfterDisable(IPA.Loader.PluginMetadata)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  158. </span>
  159. <span class="small pull-right mobile-hide">
  160. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/055778cc9d21c84349ea929f513db5e728767192/IPA.Loader/Loader/Features/Feature.cs/#L63">View Source</a>
  161. </span>
  162. <a id="IPA_Loader_Features_Feature_AfterDisable_" data-uid="IPA.Loader.Features.Feature.AfterDisable*"></a>
  163. <h4 id="IPA_Loader_Features_Feature_AfterDisable_IPA_Loader_PluginMetadata_" data-uid="IPA.Loader.Features.Feature.AfterDisable(IPA.Loader.PluginMetadata)">AfterDisable(PluginMetadata)</h4>
  164. <div class="markdown level1 summary"><p>Called after a plugin with this feature appplied is disabled.</p>
  165. </div>
  166. <div class="markdown level1 conceptual"></div>
  167. <h5 class="decalaration">Declaration</h5>
  168. <div class="codewrapper">
  169. <pre><code class="lang-csharp hljs">public virtual void AfterDisable(PluginMetadata plugin)</code></pre>
  170. </div>
  171. <h5 class="parameters">Parameters</h5>
  172. <table class="table table-bordered table-striped table-condensed">
  173. <thead>
  174. <tr>
  175. <th>Type</th>
  176. <th>Name</th>
  177. <th>Description</th>
  178. </tr>
  179. </thead>
  180. <tbody>
  181. <tr>
  182. <td><a class="xref" href="IPA.Loader.PluginMetadata.html">PluginMetadata</a></td>
  183. <td><span class="parametername">plugin</span></td>
  184. <td><p>the plugin that was disabled</p>
  185. </td>
  186. </tr>
  187. </tbody>
  188. </table>
  189. <span class="small pull-right mobile-hide">
  190. <span class="divider">|</span>
  191. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/new/master/docs/override/new?filename=IPA_Loader_Features_Feature_AfterInit_IPA_Loader_PluginMetadata_.md&amp;value=---%0Auid%3A%20IPA.Loader.Features.Feature.AfterInit(IPA.Loader.PluginMetadata)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  192. </span>
  193. <span class="small pull-right mobile-hide">
  194. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/055778cc9d21c84349ea929f513db5e728767192/IPA.Loader/Loader/Features/Feature.cs/#L57">View Source</a>
  195. </span>
  196. <a id="IPA_Loader_Features_Feature_AfterInit_" data-uid="IPA.Loader.Features.Feature.AfterInit*"></a>
  197. <h4 id="IPA_Loader_Features_Feature_AfterInit_IPA_Loader_PluginMetadata_" data-uid="IPA.Loader.Features.Feature.AfterInit(IPA.Loader.PluginMetadata)">AfterInit(PluginMetadata)</h4>
  198. <div class="markdown level1 summary"><p>Called after a plugin has been fully initialized, whether or not there is an <code>Init</code> method. This should never throw an exception.</p>
  199. </div>
  200. <div class="markdown level1 conceptual"></div>
  201. <h5 class="decalaration">Declaration</h5>
  202. <div class="codewrapper">
  203. <pre><code class="lang-csharp hljs">public virtual void AfterInit(PluginMetadata plugin)</code></pre>
  204. </div>
  205. <h5 class="parameters">Parameters</h5>
  206. <table class="table table-bordered table-striped table-condensed">
  207. <thead>
  208. <tr>
  209. <th>Type</th>
  210. <th>Name</th>
  211. <th>Description</th>
  212. </tr>
  213. </thead>
  214. <tbody>
  215. <tr>
  216. <td><a class="xref" href="IPA.Loader.PluginMetadata.html">PluginMetadata</a></td>
  217. <td><span class="parametername">plugin</span></td>
  218. <td><p>the plugin that was just initialized</p>
  219. </td>
  220. </tr>
  221. </tbody>
  222. </table>
  223. <span class="small pull-right mobile-hide">
  224. <span class="divider">|</span>
  225. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/new/master/docs/override/new?filename=IPA_Loader_Features_Feature_AfterInit_IPA_Loader_PluginMetadata_System_Object_.md&amp;value=---%0Auid%3A%20IPA.Loader.Features.Feature.AfterInit(IPA.Loader.PluginMetadata%2CSystem.Object)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  226. </span>
  227. <span class="small pull-right mobile-hide">
  228. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/055778cc9d21c84349ea929f513db5e728767192/IPA.Loader/Loader/Features/Feature.cs/#L51">View Source</a>
  229. </span>
  230. <a id="IPA_Loader_Features_Feature_AfterInit_" data-uid="IPA.Loader.Features.Feature.AfterInit*"></a>
  231. <h4 id="IPA_Loader_Features_Feature_AfterInit_IPA_Loader_PluginMetadata_System_Object_" data-uid="IPA.Loader.Features.Feature.AfterInit(IPA.Loader.PluginMetadata,System.Object)">AfterInit(PluginMetadata, Object)</h4>
  232. <div class="markdown level1 summary"><p>Called after a plugin has been fully initialized, whether or not there is an <code>Init</code> method. This should never throw an exception.</p>
  233. </div>
  234. <div class="markdown level1 conceptual"></div>
  235. <h5 class="decalaration">Declaration</h5>
  236. <div class="codewrapper">
  237. <pre><code class="lang-csharp hljs">public virtual void AfterInit(PluginMetadata plugin, object pluginInstance)</code></pre>
  238. </div>
  239. <h5 class="parameters">Parameters</h5>
  240. <table class="table table-bordered table-striped table-condensed">
  241. <thead>
  242. <tr>
  243. <th>Type</th>
  244. <th>Name</th>
  245. <th>Description</th>
  246. </tr>
  247. </thead>
  248. <tbody>
  249. <tr>
  250. <td><a class="xref" href="IPA.Loader.PluginMetadata.html">PluginMetadata</a></td>
  251. <td><span class="parametername">plugin</span></td>
  252. <td><p>the plugin that was just initialized</p>
  253. </td>
  254. </tr>
  255. <tr>
  256. <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">Object</a></td>
  257. <td><span class="parametername">pluginInstance</span></td>
  258. <td><p>the instance of the plugin being initialized</p>
  259. </td>
  260. </tr>
  261. </tbody>
  262. </table>
  263. <span class="small pull-right mobile-hide">
  264. <span class="divider">|</span>
  265. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/new/master/docs/override/new?filename=IPA_Loader_Features_Feature_BeforeInit_IPA_Loader_PluginMetadata_.md&amp;value=---%0Auid%3A%20IPA.Loader.Features.Feature.BeforeInit(IPA.Loader.PluginMetadata)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  266. </span>
  267. <span class="small pull-right mobile-hide">
  268. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/055778cc9d21c84349ea929f513db5e728767192/IPA.Loader/Loader/Features/Feature.cs/#L44">View Source</a>
  269. </span>
  270. <a id="IPA_Loader_Features_Feature_BeforeInit_" data-uid="IPA.Loader.Features.Feature.BeforeInit*"></a>
  271. <h4 id="IPA_Loader_Features_Feature_BeforeInit_IPA_Loader_PluginMetadata_" data-uid="IPA.Loader.Features.Feature.BeforeInit(IPA.Loader.PluginMetadata)">BeforeInit(PluginMetadata)</h4>
  272. <div class="markdown level1 summary"><p>Called before a plugin&apos;s <code>Init</code> method is called. This will not be called if there is no <code>Init</code> method. This should never throw an exception. An exception will abort the loading of the plugin with an error.</p>
  273. </div>
  274. <div class="markdown level1 conceptual"></div>
  275. <h5 class="decalaration">Declaration</h5>
  276. <div class="codewrapper">
  277. <pre><code class="lang-csharp hljs">public virtual void BeforeInit(PluginMetadata plugin)</code></pre>
  278. </div>
  279. <h5 class="parameters">Parameters</h5>
  280. <table class="table table-bordered table-striped table-condensed">
  281. <thead>
  282. <tr>
  283. <th>Type</th>
  284. <th>Name</th>
  285. <th>Description</th>
  286. </tr>
  287. </thead>
  288. <tbody>
  289. <tr>
  290. <td><a class="xref" href="IPA.Loader.PluginMetadata.html">PluginMetadata</a></td>
  291. <td><span class="parametername">plugin</span></td>
  292. <td><p>the plugin to be initialized</p>
  293. </td>
  294. </tr>
  295. </tbody>
  296. </table>
  297. <span class="small pull-right mobile-hide">
  298. <span class="divider">|</span>
  299. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/new/master/docs/override/new?filename=IPA_Loader_Features_Feature_Initialize_IPA_Loader_PluginMetadata_Newtonsoft_Json_Linq_JObject_.md&amp;value=---%0Auid%3A%20IPA.Loader.Features.Feature.Initialize(IPA.Loader.PluginMetadata%2CNewtonsoft.Json.Linq.JObject)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  300. </span>
  301. <span class="small pull-right mobile-hide">
  302. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/055778cc9d21c84349ea929f513db5e728767192/IPA.Loader/Loader/Features/Feature.cs/#L30">View Source</a>
  303. </span>
  304. <a id="IPA_Loader_Features_Feature_Initialize_" data-uid="IPA.Loader.Features.Feature.Initialize*"></a>
  305. <h4 id="IPA_Loader_Features_Feature_Initialize_IPA_Loader_PluginMetadata_Newtonsoft_Json_Linq_JObject_" data-uid="IPA.Loader.Features.Feature.Initialize(IPA.Loader.PluginMetadata,Newtonsoft.Json.Linq.JObject)">Initialize(PluginMetadata, JObject)</h4>
  306. <div class="markdown level1 summary"><p>Initializes the feature with the data provided in the definition.</p>
  307. </div>
  308. <div class="markdown level1 conceptual"></div>
  309. <h5 class="decalaration">Declaration</h5>
  310. <div class="codewrapper">
  311. <pre><code class="lang-csharp hljs">protected abstract bool Initialize(PluginMetadata meta, JObject featureData)</code></pre>
  312. </div>
  313. <h5 class="parameters">Parameters</h5>
  314. <table class="table table-bordered table-striped table-condensed">
  315. <thead>
  316. <tr>
  317. <th>Type</th>
  318. <th>Name</th>
  319. <th>Description</th>
  320. </tr>
  321. </thead>
  322. <tbody>
  323. <tr>
  324. <td><a class="xref" href="IPA.Loader.PluginMetadata.html">PluginMetadata</a></td>
  325. <td><span class="parametername">meta</span></td>
  326. <td><p>the metadata of the plugin that is being prepared</p>
  327. </td>
  328. </tr>
  329. <tr>
  330. <td><span class="xref">Newtonsoft.Json.Linq.JObject</span></td>
  331. <td><span class="parametername">featureData</span></td>
  332. <td><p>the data provided with the feature</p>
  333. </td>
  334. </tr>
  335. </tbody>
  336. </table>
  337. <h5 class="returns">Returns</h5>
  338. <table class="table table-bordered table-striped table-condensed">
  339. <thead>
  340. <tr>
  341. <th>Type</th>
  342. <th>Description</th>
  343. </tr>
  344. </thead>
  345. <tbody>
  346. <tr>
  347. <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">Boolean</a></td>
  348. <td><p><span class="xref">true</span> if the feature is valid for the plugin, <span class="xref">false</span> otherwise</p>
  349. </td>
  350. </tr>
  351. </tbody>
  352. </table>
  353. <h5 id="IPA_Loader_Features_Feature_Initialize_IPA_Loader_PluginMetadata_Newtonsoft_Json_Linq_JObject__remarks">Remarks</h5>
  354. <div class="markdown level1 remarks"><p>This gets called AFTER your <code>Init</code> method, but BEFORE the target&apos;s <code>Init</code> method. If it is applied to the defining plugin, <code>BeforeInit</code> is not called.</p>
  355. <p>Returning <span class="xref">false</span> does <em>not</em> prevent the plugin from being loaded. It simply prevents the feature from being used.</p>
  356. </div>
  357. <h3 id="extensionmethods">Extension Methods</h3>
  358. <div>
  359. <a class="xref" href="IPA.Utilities.ReflectionUtil.html#IPA_Utilities_ReflectionUtil_SetField__2___0_System_String___1_">ReflectionUtil.SetField&lt;T, U&gt;(T, String, U)</a>
  360. </div>
  361. <div>
  362. <a class="xref" href="IPA.Utilities.ReflectionUtil.html#IPA_Utilities_ReflectionUtil_GetField__2___1_System_String_">ReflectionUtil.GetField&lt;U, T&gt;(T, String)</a>
  363. </div>
  364. <div>
  365. <a class="xref" href="IPA.Utilities.ReflectionUtil.html#IPA_Utilities_ReflectionUtil_SetProperty__2___0_System_String___1_">ReflectionUtil.SetProperty&lt;T, U&gt;(T, String, U)</a>
  366. </div>
  367. <div>
  368. <a class="xref" href="IPA.Utilities.ReflectionUtil.html#IPA_Utilities_ReflectionUtil_GetProperty__2___1_System_String_">ReflectionUtil.GetProperty&lt;U, T&gt;(T, String)</a>
  369. </div>
  370. <div>
  371. <a class="xref" href="IPA.Utilities.ReflectionUtil.html#IPA_Utilities_ReflectionUtil_InvokeMethod__2___1_System_String_System_Object___">ReflectionUtil.InvokeMethod&lt;U, T&gt;(T, String, Object[])</a>
  372. </div>
  373. </article>
  374. </div>
  375. <div class="hidden-sm col-md-2" role="complementary">
  376. <div class="sideaffix">
  377. <div class="contribution">
  378. <ul class="nav">
  379. <li>
  380. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/new/master/docs/override/new?filename=IPA_Loader_Features_Feature.md&amp;value=---%0Auid%3A%20IPA.Loader.Features.Feature%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" class="contribution-link">Improve this Doc</a>
  381. </li>
  382. <li>
  383. <a href="https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/055778cc9d21c84349ea929f513db5e728767192/IPA.Loader/Loader/Features/Feature.cs/#L18" class="contribution-link">View Source</a>
  384. </li>
  385. </ul>
  386. </div>
  387. <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
  388. <h5>In This Article</h5>
  389. <div></div>
  390. </nav>
  391. </div>
  392. </div>
  393. </div>
  394. </div>
  395. <footer>
  396. <div class="grad-bottom"></div>
  397. <div class="footer">
  398. <div class="container">
  399. <span class="pull-right">
  400. <a href="#top">Back to top</a>
  401. </span>
  402. <span>Generated by <strong>DocFX</strong></span>
  403. </div>
  404. </div>
  405. </footer>
  406. </div>
  407. <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
  408. <script type="text/javascript" src="../styles/docfx.js"></script>
  409. <script type="text/javascript" src="../styles/main.js"></script>
  410. </body>
  411. </html>